Merge in the org.eclipse.xsd Git repository
Reuse JustJ's update site generator for promotion of builds.
Provide a Jenkinsfile to prepare for a multi-branch pipeline job.
Stop building pack200 artifacts.
Use https for download.itemis.com.
Include the root of the repository as a project.
https://gitlab.eclipse.org/eclipsefdn/emo-team/emo/-/issues/430
Change-Id: Ibe27c53175bcbaa66c693f6b4db8299a39185e0f
Signed-off-by: Ed Merks <ed.merks@gmail.com>
diff --git a/.gitignore b/.gitignore
index 280b2d6..eed365a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.swp
*/*/target/
+*/*/*/target/
**/.oracle_jre_usage
.DS_Store
diff --git a/.project b/.project
new file mode 100644
index 0000000..17a1913
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.git</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1671959598310</id>
+ <name></name>
+ <type>30</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-projectRelativePath-matches-false-true-.*/.*</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a913ac2..2fe4656 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -12,7 +12,10 @@
Models can be specified using annotated Java, XML documents, or modeling tools
like Rational Rose, then imported into EMF. Most important of all, EMF provides
the foundation for interoperability with other EMF-based tools and applications.
-For more detailed information see the EMF Overviews and Project Plan.
+
+Eclipse XSD is a library that provides an API for manipulating the components of
+an XML Schema as described by the W3C XML Schema specifications, as well as an
+API for manipulating the DOM-accessible representation of XML.
* https://www.eclipse.org/modeling/emf/
* https://projects.eclipse.org/projects/modeling.emf.emf
@@ -36,7 +39,7 @@
Be sure to search for existing bugs before you create another one. Remember that
contributions are always welcome!
-This project is built, along with XSD, using Maven/Tycho.
+This project is built using Maven/Tycho.
Instructions for setting up a development environment and for replicating the build locally are provided here:
* https://ci.eclipse.org/emf/
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..b0cb477
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,212 @@
+pipeline {
+ agent {
+ label 'centos-latest'
+ }
+
+ options {
+ buildDiscarder(logRotator(numToKeepStr: '10'))
+ disableConcurrentBuilds()
+ // skipDefaultCheckout true
+ }
+
+ tools {
+ maven 'apache-maven-latest'
+ jdk 'temurin-jdk11-latest'
+ }
+
+ environment {
+ PUBLISH_LOCATION = 'builds'
+ BUILD_TIMESTAMP = sh(returnStdout: true, script: 'date +%Y%m%d%H%M').trim()
+ CHECKOUT = 'false'
+ }
+
+ parameters {
+ choice(
+ name: 'BUILD_TYPE',
+ choices: ['nightly', 'milestone', 'release'],
+ description: '''
+ Choose the type of build.
+ Note that a release build will not promote the build, but rather will promote the most recent milestone build.
+ '''
+ )
+
+ choice(
+ name: 'TARGET_PLATFORM',
+ choices: [
+ '2023-03',
+ '2022-12',
+ '2022-09',
+ '2022-06',
+ '2022-03',
+ '2021-12',
+ '2021-09',
+ '2021-06',
+ '2021-03',
+ '2020-12',
+ '2020-09',
+ '2020-06',
+ '2020-03',
+ '2019-12',
+ '2019-09',
+ '2019-06',
+ '2019-03',
+ '2018-12',
+ '2018-09',
+ 'photon',
+ 'oxygen',
+ 'neon',
+ 'mars',
+ 'luna',
+ 'kepler',
+ 'juno',
+ 'indigo',
+ 'helios'
+ ],
+ description: '''
+ Choose the named target platform against which to compile and test.
+ This is relevant only for nightly and milestone builds.
+ '''
+ )
+
+ choice(
+ name: 'JAVA_VERSION',
+ choices: ['11', '1.8'],
+ description: '''
+ Choose the Java version for the execution environment of the Tycho build.
+ '''
+ )
+
+ booleanParam(
+ name: 'ECLIPSE_SIGN',
+ defaultValue: false,
+ description: '''
+ Choose whether or not the bundles will be signed.
+ This is relevant only for nightly and milestone builds.
+ '''
+ )
+
+ booleanParam(
+ name: 'PROMOTE',
+ defaultValue: false,
+ description: 'Whether to promote the build to the download server.'
+ )
+
+ booleanParam(
+ name: 'ARCHIVE',
+ defaultValue: false,
+ description: 'Whether to archive the workspace.'
+ )
+ }
+
+ stages {
+ stage('Display Parameters') {
+ steps {
+ echo "BUILD_TIMESTAMP=${env.BUILD_TIMESTAMP}"
+ echo "BUILD_TYPE=${params.BUILD_TYPE}"
+ echo "JAVA_VERSION=${params.JAVA_VERSION}"
+ echo "TARGET_PLATFORM=${params.TARGET_PLATFORM}"
+ echo "ECLIPSE_SIGN=${params.ECLIPSE_SIGN}"
+ echo "PROMOTE=${params.PROMOTE}"
+ echo "ARCHIVE=${params.ARCHIVE}"
+ script {
+ env.BUILD_TYPE = params.BUILD_TYPE
+ env.JAVA_VERSION = params.JAVA_VERSION
+ env.TARGET_PLATFORM = params.TARGET_PLATFORM
+ env.ECLIPSE_SIGN = params.ECLIPSE_SIGN
+ env.PROMOTE = params.PROMOTE && env.ECLIPSE_SIGN
+ }
+ }
+ }
+
+ stage('Git Checkout') {
+ when {
+ environment name: 'CHECKOUT', value: 'true'
+ }
+ steps {
+ script {
+ def gitVariables = checkout(
+ poll: false,
+ scm: [
+ $class: 'GitSCM',
+ branches: [[name: '*' + '/master']],
+ doGenerateSubmoduleConfigurations: false,
+ // extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'emf']],
+ submoduleCfg: [],
+ userRemoteConfigs: [[url: 'https://git.eclipse.org/r/emf/org.eclipse.emf.git']]
+ // userRemoteConfigs: [[url: 'https://github.com/eclipse-emf/emf.git']]
+ // userRemoteConfigs: [[url: 'https://github.com/merks/emf-xsd.git']]
+ ]
+ )
+
+ echo "$gitVariables"
+ env.GIT_COMMIT = gitVariables.GIT_COMMIT
+ }
+ }
+ }
+
+ stage('Build') {
+ steps {
+ sshagent(['projects-storage.eclipse.org-bot-ssh']) {
+ dir('.') {
+ sh '''
+ if [[ $PROMOTE == false ]]; then
+ promotion_argument='-Dpromote=false -Dorg.eclipse.justj.p2.manager.args='
+ fi
+ mvn \
+ --fail-at-end \
+ --no-transfer-progress \
+ $promotion_argument \
+ -Dmaven.artifact.threads=16 \
+ -Dbuild.id=${BUILD_TIMESTAMP} \
+ -Dcommit.id=$GIT_COMMIT \
+ -DECLIPSE_SIGN=${ECLIPSE_SIGN} \
+ -Dtarget-platform=${TARGET_PLATFORM} \
+ -DjavaVersion=${JAVA_VERSION} \
+ -Dbuild.type=$BUILD_TYPE \
+ -Dorg.eclipse.justj.p2.manager.build.url=$JOB_URL \
+ -Dorg.eclipse.justj.p2.manager.relative=$PUBLISH_LOCATION \
+ clean \
+ verify
+ '''
+ }
+ }
+ }
+ }
+
+ stage('Archive Results') {
+ when {
+ expression {
+ params.ARCHIVE
+ }
+ }
+ steps {
+ archiveArtifacts '**'
+ }
+ }
+ }
+
+ post {
+ failure {
+ mail to: 'ed.merks@gmail.com',
+ subject: "[EMF CI] Build Failure ${currentBuild.fullDisplayName}",
+ mimeType: 'text/html',
+ body: "Project: ${env.JOB_NAME}<br/>Build Number: ${env.BUILD_NUMBER}<br/>Build URL: ${env.BUILD_URL}<br/>Console: ${env.BUILD_URL}/console"
+ archiveArtifacts allowEmptyArchive: true, artifacts: '**'
+ }
+
+ fixed {
+ mail to: 'ed.merks@gmail.com',
+ subject: "[EMF CI] Back to normal ${currentBuild.fullDisplayName}",
+ mimeType: 'text/html',
+ body: "Project: ${env.JOB_NAME}<br/>Build Number: ${env.BUILD_NUMBER}<br/>Build URL: ${env.BUILD_URL}<br/>Console: ${env.BUILD_URL}/console"
+ }
+
+ always {
+ junit '**/target/surefire-reports/TEST-*.xml'
+ }
+
+ cleanup {
+ deleteDir()
+ }
+ }
+}
\ No newline at end of file
diff --git a/NOTICE.md b/NOTICE.md
index 3db2cf4..07773be 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -7,7 +7,7 @@
## Trademarks
-Eclipse EMF, EMF, and Ecore are trademarks of the Eclipse Foundation.
+Eclipse EMF, EMF, and Ecore as well as Eclipse XSD and XSD, are trademarks of the Eclipse Foundation.
## Copyright
@@ -29,22 +29,6 @@
* http://git.eclipse.org/c/emf/org.eclipse.emf.git
-## Third-party Content
-
-This project leverages the following third party content.
-
-Google Web Toolkit GWT User Library (2.0.3)
-
-* License: Apache License, 2.0
-
-Tomcat (3.2.4)
-
-* License: Apache Software License 1.1
-
-Xerces (2.11.0)
-
-* License: Apache License, 2.0, W3C
-
## Cryptography
Content may contain encryption software. The country in which you are currently
diff --git a/doc/org.eclipse.emf.doc/about.mappings b/doc/org.eclipse.emf.doc/about.mappings
index f9d94ab..cf26020 100644
--- a/doc/org.eclipse.emf.doc/about.mappings
+++ b/doc/org.eclipse.emf.doc/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/doc/org.eclipse.xsd.cheatsheets/.gitignore b/doc/org.eclipse.xsd.cheatsheets/.gitignore
new file mode 100644
index 0000000..f1d43c6
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/.gitignore
@@ -0,0 +1 @@
+archive
diff --git a/doc/org.eclipse.xsd.cheatsheets/.project b/doc/org.eclipse.xsd.cheatsheets/.project
new file mode 100644
index 0000000..72aed5d
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.cheatsheets</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/doc/org.eclipse.xsd.cheatsheets/META-INF/MANIFEST.MF b/doc/org.eclipse.xsd.cheatsheets/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f983285
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.cheatsheets;singleton:=true
+Bundle-Version: 2.8.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui.cheatsheets;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.cheatsheets;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.xsd.ecore.importer;bundle-version="[2.9.0,3.0.0)"
diff --git a/doc/org.eclipse.xsd.cheatsheets/about.html b/doc/org.eclipse.xsd.cheatsheets/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.cheatsheets/build.properties b/doc/org.eclipse.xsd.cheatsheets/build.properties
new file mode 100644
index 0000000..951d253
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/build.properties
@@ -0,0 +1,7 @@
+bin.includes = META-INF/,\
+ plugin.xml,\
+ cheatsheets/,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
+
diff --git a/doc/org.eclipse.xsd.cheatsheets/cheatsheets/GenerateEMFFromXSD.xml b/doc/org.eclipse.xsd.cheatsheets/cheatsheets/GenerateEMFFromXSD.xml
new file mode 100644
index 0000000..a952076
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/cheatsheets/GenerateEMFFromXSD.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<cheatsheet title="Generating an EMF Model from XML Schema">
+
+ <intro href="/org.eclipse.emf.doc/tutorials/xlibmod/xlibmod.html">
+ <description>
+ This cheat sheet is a step-by-step description of how to generate an EMF
+ model and editor from an XML Schema.
+ </description>
+ </intro>
+
+ <item title="Set up the environment">
+ <description>
+ Your environment must be set up before you can perform the steps in this cheat sheet.
+ </description>
+
+ <subitem
+ label="Create an "EMF Cheatsheet Data" project in your workspace with the example "library.xsd" file."
+ skip="true">
+ <action
+ pluginId="org.eclipse.emf.cheatsheets"
+ class="org.eclipse.emf.cheatsheets.actions.CopyFileFromPluginAction"
+ param1="EMF Cheatsheet Data"
+ param2=""
+ param3="org.eclipse.xsd.cheatsheets/archive/xsd/library.xsd"
+ translate="" />
+ </subitem>
+
+ <subitem
+ when="true"
+ label="Delete or rename the following projects if they exist in your workspace: "library.xsd", "library.xsd.edit", "library.xsd.editor"."
+ skip="true" />
+ </item>
+
+ <item
+ title="Import the model from XML Schema"
+ href="/org.eclipse.emf.doc/tutorials/xlibmod/xlibmod.html#step1"
+ dialog="true"
+ skip="true">
+ <description>
+ First, you must create a new "library.xsd" EMF project in your workspace, importing
+ the schema to create the EMF model.
+ </description>
+
+ <subitem label="Select "File > New > Project...". Expand "Eclipse Modeling Framework" and select "EMF Project". Then, click "Next"." skip="true">
+ <action
+ pluginId="org.eclipse.emf.cheatsheets"
+ class="org.eclipse.emf.cheatsheets.actions.OpenEMFProjectWizardAction"
+ param1="library.xsd"
+ param2="org.eclipse.xsd.ecore.importer"
+ translate="" />
+ </subitem>
+ <subitem label="Enter "library.xsd" as the project name, then click "Next"." skip="false" />
+ <subitem label="Select "XML Schema", then click "Next"." skip="false" />
+ <subitem label="Click "Browse Workspace...", and expand "EMF Cheatsheet Data" to select "library.xsd". Then click "Next"." skip="false" />
+ <subitem label="Select the package "org.eclipse.example.library", then click "Finish"." skip="false" />
+ </item>
+
+ <item
+ title="Generate the code"
+ href="/org.eclipse.emf.doc/tutorials/xlibmod/xlibmod.html#step2"
+ dialog="true"
+ skip="true">
+ <description>
+ Generate the code to implement the model and an editor for it. The generator is automatically opened on completion of the wizard in the previous step.
+ </description>
+
+ <repeated-subitem values="Model,Edit,Editor">
+ <subitem label="In the generator, right click on "Library" and select "Generate ${this} Code"." />
+ </repeated-subitem>
+ <subitem label="If automatic building has been disabled, select "Project > Build All" to compile the generated code." skip="true">
+ <action
+ pluginId="org.eclipse.emf.cheatsheets"
+ class="org.eclipse.emf.cheatsheets.actions.BuildAllProjectsAction" />
+ </subitem>
+ </item>
+
+ <item
+ title="Run the generated editor"
+ href="/org.eclipse.emf.doc/tutorials/xlibmod/xlibmod.html#step4"
+ dialog="true"
+ skip="true">
+ <description>
+ Now, you are set to run the generated editor and create a new library instance.
+ </description>
+ <onCompletion>
+ Congratulations! You have succesfully created an EMF model from an XML Schema, generated the code, and created an instance of the model.
+ </onCompletion>
+
+ <subitem label="Select the "library.xsd" project in the package explorer and invoke the "Run > Run As > Eclipse Application" menu item. This starts a runtime instance of Eclipse with the newly generated plug-ins available." />
+ <subitem label="In the runtime instance, create a new general project called "librarytest"." />
+ <subitem label="Right click "librarytest" and select "New > Other..."." />
+ <subitem label="Expand "Example EMF Model Creation Wizards" and select "Library Model". Then, click "Next"." />
+ <subitem label="Enter "My.library" as the file name, then click "Next"." />
+ <subitem label="Select "Library"; as the model object, then click "Finish"." />
+ <subitem label="The generated library editor is opened. Expand "platform:/resource/librarytest/My.library". Right click "Library" and select "New Child > Writer" to create a writer object in the library." />
+ <subitem label="Create additional writers and books in the library, and edit the objects' properties in the properties view." />
+ <subitem label="Select "File > Save" to save the instance." />
+ </item>
+</cheatsheet>
diff --git a/doc/org.eclipse.xsd.cheatsheets/plugin.properties b/doc/org.eclipse.xsd.cheatsheets/plugin.properties
new file mode 100644
index 0000000..940c101
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/plugin.properties
@@ -0,0 +1,18 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Cheat Sheets
+providerName = Eclipse Modeling Project
+
+_UI_CheatsheetGenXSD_title = Generating an EMF Model from XML Schema
+_UI_CheatsheetGenXSD_description = Learn how to generate an EMF model and editor from an XML Schema.
diff --git a/doc/org.eclipse.xsd.cheatsheets/plugin.xml b/doc/org.eclipse.xsd.cheatsheets/plugin.xml
new file mode 100644
index 0000000..e6f1bc4
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension point="org.eclipse.ui.cheatsheets.cheatSheetContent">
+ <cheatsheet
+ category="org.eclipse.emf"
+ composite="false"
+ contentFile="cheatsheets/GenerateEMFFromXSD.xml"
+ id="org.eclipse.emf.genEMFModXSD"
+ name="%_UI_CheatsheetGenXSD_title">
+ <description>
+ %_UI_CheatsheetGenXSD_description
+ </description>
+ </cheatsheet>
+ </extension>
+</plugin>
diff --git a/doc/org.eclipse.xsd.cheatsheets/pom.xml b/doc/org.eclipse.xsd.cheatsheets/pom.xml
new file mode 100644
index 0000000..bfa77ef
--- /dev/null
+++ b/doc/org.eclipse.xsd.cheatsheets/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.cheatsheets</artifactId>
+ <version>2.8.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/doc/org.eclipse.xsd.doc-feature/.gitignore b/doc/org.eclipse.xsd.doc-feature/.gitignore
new file mode 100644
index 0000000..c14487c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc-feature/.gitignore
@@ -0,0 +1 @@
+build.xml
diff --git a/doc/org.eclipse.xsd.doc-feature/.project b/doc/org.eclipse.xsd.doc-feature/.project
new file mode 100644
index 0000000..931283b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.doc-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/doc/org.eclipse.xsd.doc-feature/build.properties b/doc/org.eclipse.xsd.doc-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/doc/org.eclipse.xsd.doc-feature/feature.properties b/doc/org.eclipse.xsd.doc-feature/feature.properties
new file mode 100644
index 0000000..9e90905
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2002-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Documentation
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Documentation and tutorials for XSD.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/doc/org.eclipse.xsd.doc-feature/feature.xml b/doc/org.eclipse.xsd.doc-feature/feature.xml
new file mode 100644
index 0000000..f0e4ea4
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc-feature/feature.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.doc"
+ label="%featureName"
+ version="2.28.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <plugin
+ id="org.eclipse.xsd.doc"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.xsd.cheatsheets"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/doc/org.eclipse.xsd.doc-feature/pom.xml b/doc/org.eclipse.xsd.doc-feature/pom.xml
new file mode 100644
index 0000000..5cad3d8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.doc</artifactId>
+ <version>2.28.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/doc/org.eclipse.xsd.doc/.project b/doc/org.eclipse.xsd.doc/.project
new file mode 100644
index 0000000..7045a95
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.doc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/doc/org.eclipse.xsd.doc/META-INF/MANIFEST.MF b/doc/org.eclipse.xsd.doc/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8e3cfa5
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.doc; singleton:=true
+Bundle-Version: 2.26.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.help;bundle-version="[3.5.0,4.0.0)"
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
diff --git a/doc/org.eclipse.xsd.doc/about.html b/doc/org.eclipse.xsd.doc/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/about.ini b/doc/org.eclipse.xsd.doc/about.ini
new file mode 100644
index 0000000..b7e87ca
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/about.ini
@@ -0,0 +1,15 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
diff --git a/doc/org.eclipse.xsd.doc/about.mappings b/doc/org.eclipse.xsd.doc/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/doc/org.eclipse.xsd.doc/about.properties b/doc/org.eclipse.xsd.doc/about.properties
new file mode 100644
index 0000000..9dfd50b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Documentation
+
+featureText=XSD Documentation\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/doc/org.eclipse.xsd.doc/build.properties b/doc/org.eclipse.xsd.doc/build.properties
index a899593..0c203f4 100644
--- a/doc/org.eclipse.xsd.doc/build.properties
+++ b/doc/org.eclipse.xsd.doc/build.properties
@@ -1,25 +1,25 @@
###############################################################################
# Copyright (c) 2010 JBoss by Red Hat and others.
# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors:
# JBoss by Red Hat - initial API and implementation
###############################################################################
-customBuildCallbacks=customBuildCallbacks.xml
-
-bin.includes = about.*,\
+bin.includes = about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
css/,\
images/,\
META-INF/,\
- news/,\
references/,\
tutorials/,\
modeling32.png,\
- plugin.*,\
+ plugin.xml,\
+ plugin.properties,\
toc.xml,\
- topics_Reference.xml
-
+ index/
diff --git a/doc/org.eclipse.xsd.doc/buildDoc.xml b/doc/org.eclipse.xsd.doc/buildDoc.xml
index aaa5336..b5e82b6 100644
--- a/doc/org.eclipse.xsd.doc/buildDoc.xml
+++ b/doc/org.eclipse.xsd.doc/buildDoc.xml
@@ -1,28 +1,24 @@
-<project name="CDE Doc Build" default="all" basedir="." >
+<project name="Doc Build" default="all" basedir=".">
- <target name="init">
- <available file="${basedir}/index" property="index.present"/>
- </target>
-
- <target name="all" depends="init" unless="index.present">
-<!-- Not needed for now. Uncomment as they become needed.
+ <target name="all">
+ <!-- Not needed for now. Uncomment as they become needed.
<antcall target="convertSchemaToHtml" />
<antcall target="examplesDocCopy" />
<antcall target="generateJavadoc" />
--->
+-->
<antcall target="build.index" />
<!--antcall target="createDocZip" /-->
</target>
-
- <target name="build.index" description="Builds search index for the plug-in: org.eclipse.jdt.doc.isv" if="eclipse.running">
- <help.buildHelpIndex manifest="${basedir}/plugin.xml" destination="${basedir}"/>
+ <target name="build.index" description="Builds search index for the containing documentation plugin" if="eclipse.running">
+ <help.buildHelpIndex manifest="${basedir}/plugin.xml" destination="${basedir}" />
+ <echo message="*${line.separator}!.gitignore${line.separator}" file="${basedir}/index/.gitignore" append="false" />
</target>
<target name="convertSchemaToHtml" if="eclipse.running">
<property name="dest" value="reference/extension-points" />
- <record name="${basedir}/platformconvert.txt" action="start"/>
+ <record name="${basedir}/platformconvert.txt" action="start" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ant.core/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ant.ui/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.compare/plugin.xml" destination="${dest}" />
@@ -44,48 +40,48 @@
<pde.convertSchemaToHTML manifest="../org.eclipse.ui/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.cheatsheets/plugin.xml" destination="${dest}" />
<!--copy extra files linked to by generated extension point doc-->
- <copy file="../org.eclipse.ui.cheatsheets/schema/cheatSheetContentFileSpec.html" todir="${dest}"/>
- <copy file="../org.eclipse.ui.cheatsheets/schema/contentFile.xsd" todir="${dest}"/>
+ <copy file="../org.eclipse.ui.cheatsheets/schema/cheatSheetContentFileSpec.html" todir="${dest}" />
+ <copy file="../org.eclipse.ui.cheatsheets/schema/contentFile.xsd" todir="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.console/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.editors/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.externaltools/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.ide/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.intro/plugin.xml" destination="${dest}" />
<!--copy extra HTML file linked to by generated extension point doc-->
- <copy file="../org.eclipse.ui.intro/schema/introContentFileSpec.html" todir="${dest}"/>
+ <copy file="../org.eclipse.ui.intro/schema/introContentFileSpec.html" todir="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.navigator/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.views.properties.tabbed/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.ui.workbench.texteditor/plugin.xml" destination="${dest}" />
<pde.convertSchemaToHTML manifest="../org.eclipse.update.core/plugin.xml" destination="${dest}" />
- <record name="${basedir}/platformconvert.txt" action="stop"/>
+ <record name="${basedir}/platformconvert.txt" action="stop" />
</target>
- <target name="examplesDocCopy" >
+ <target name="examplesDocCopy">
<copy todir="samples">
<fileset dir="..">
- <include name="org.eclipse.compare.examples/doc-html/"/>
- <include name="org.eclipse.compare.examples.xml/doc-html/"/>
- <include name="org.eclipse.help.examples.ex1/doc-html/"/>
- <include name="org.eclipse.swt.examples/doc-html/"/>
- <include name="org.eclipse.swt.examples.browser/doc-html/"/>
- <include name="org.eclipse.swt.examples.controls/doc-html/"/>
- <include name="org.eclipse.swt.examples.launcher/doc-html/"/>
- <include name="org.eclipse.swt.examples.layouts/doc-html/"/>
- <include name="org.eclipse.swt.examples.ole.win32/doc-html/"/>
- <include name="org.eclipse.swt.examples.paint/doc-html/"/>
- <include name="org.eclipse.ui.examples.fieldassist/doc-html/"/>
- <include name="org.eclipse.ui.examples.javaeditor/doc-html/"/>
- <include name="org.eclipse.ui.examples.multipageeditor/doc-html/"/>
- <include name="org.eclipse.ui.examples.propertysheet/doc-html/"/>
- <include name="org.eclipse.ui.examples.readmetool/doc-html/"/>
- <include name="org.eclipse.ui.examples.undo/doc-html/"/>
- <include name="org.eclipse.team.examples.filesystem/doc-html/"/>
+ <include name="org.eclipse.compare.examples/doc-html/" />
+ <include name="org.eclipse.compare.examples.xml/doc-html/" />
+ <include name="org.eclipse.help.examples.ex1/doc-html/" />
+ <include name="org.eclipse.swt.examples/doc-html/" />
+ <include name="org.eclipse.swt.examples.browser/doc-html/" />
+ <include name="org.eclipse.swt.examples.controls/doc-html/" />
+ <include name="org.eclipse.swt.examples.launcher/doc-html/" />
+ <include name="org.eclipse.swt.examples.layouts/doc-html/" />
+ <include name="org.eclipse.swt.examples.ole.win32/doc-html/" />
+ <include name="org.eclipse.swt.examples.paint/doc-html/" />
+ <include name="org.eclipse.ui.examples.fieldassist/doc-html/" />
+ <include name="org.eclipse.ui.examples.javaeditor/doc-html/" />
+ <include name="org.eclipse.ui.examples.multipageeditor/doc-html/" />
+ <include name="org.eclipse.ui.examples.propertysheet/doc-html/" />
+ <include name="org.eclipse.ui.examples.readmetool/doc-html/" />
+ <include name="org.eclipse.ui.examples.undo/doc-html/" />
+ <include name="org.eclipse.team.examples.filesystem/doc-html/" />
</fileset>
</copy>
</target>
<target name="getJavadocPath">
- <available file="${java.home}/../bin/javadoc.exe" property="javadoc" value="${java.home}/../bin/javadoc.exe"/>
+ <available file="${java.home}/../bin/javadoc.exe" property="javadoc" value="${java.home}/../bin/javadoc.exe" />
<available file="${java.home}/../bin/javadoc" property="javadoc" value="${java.home}/../bin/javadoc" />
</target>
@@ -101,13 +97,13 @@
<replace file="${basedir}/${optionsFile}" token="@rt@" value="${bootclasspath}" />
<!--scrub isv plugin directories of any preexisting api doc content-->
- <delete dir="reference/api"/>
- <mkdir dir="reference/api"/>
+ <delete dir="reference/api" />
+ <mkdir dir="reference/api" />
<exec dir="." executable="${javadoc}" output="doc.bin.log">
<arg line="@${basedir}/${optionsFile} -J-Xmx1000M" />
</exec>
-
+
<!--workaround for bug 101048-->
<replace dir="reference/api" token="="/../misc/api-usage-rules.html" value="="./../misc/api-usage-rules.html">
<include name="*htm*" />
@@ -116,4 +112,3 @@
</target>
</project>
-
diff --git a/doc/org.eclipse.xsd.doc/css/.gitignore b/doc/org.eclipse.xsd.doc/css/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/css/.gitignore
diff --git a/doc/org.eclipse.xsd.doc/images/XMLSchemaInfosetModel.jpg b/doc/org.eclipse.xsd.doc/images/XMLSchemaInfosetModel.jpg
new file mode 100644
index 0000000..beec6c4
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/XMLSchemaInfosetModel.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/bugzilla.gif b/doc/org.eclipse.xsd.doc/images/bugzilla.gif
new file mode 100644
index 0000000..444e05e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/bugzilla.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/cvs.gif b/doc/org.eclipse.xsd.doc/images/cvs.gif
new file mode 100644
index 0000000..7252b8b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/cvs.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/download.gif b/doc/org.eclipse.xsd.doc/images/download.gif
new file mode 100644
index 0000000..69eede7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/download.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/faq.gif b/doc/org.eclipse.xsd.doc/images/faq.gif
new file mode 100644
index 0000000..4346543
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/faq.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/mail.gif b/doc/org.eclipse.xsd.doc/images/mail.gif
new file mode 100644
index 0000000..1cd97c5
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/mail.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/news.gif b/doc/org.eclipse.xsd.doc/images/news.gif
new file mode 100644
index 0000000..dfb69d6
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/news.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/images/reference.gif b/doc/org.eclipse.xsd.doc/images/reference.gif
new file mode 100644
index 0000000..2f56273
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/images/reference.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/index/.gitignore b/doc/org.eclipse.xsd.doc/index/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/index/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/doc/org.eclipse.xsd.doc/modeling32.png b/doc/org.eclipse.xsd.doc/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/modeling32.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/plugin.properties b/doc/org.eclipse.xsd.doc/plugin.properties
new file mode 100644
index 0000000..f1d12b6
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/plugin.properties
@@ -0,0 +1,15 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Documentation
+providerName=Eclipse Modeling Project
diff --git a/doc/org.eclipse.xsd.doc/plugin.xml b/doc/org.eclipse.xsd.doc/plugin.xml
new file mode 100644
index 0000000..f91d055
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <!-- ====================================================================== -->
+ <!-- Define primary TOC -->
+ <!-- ====================================================================== -->
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true"/>
+ <index path="index"/>
+ </extension>
+</plugin>
diff --git a/doc/org.eclipse.xsd.doc/pom.xml b/doc/org.eclipse.xsd.doc/pom.xml
new file mode 100644
index 0000000..e7f6e36
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/pom.xml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.doc</artifactId>
+ <version>2.26.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/diagrams.html b/doc/org.eclipse.xsd.doc/references/diagrams/diagrams.html
new file mode 100644
index 0000000..1ee8409
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/diagrams.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xml:lang="en-us" lang="en-us"
+xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="content-type"
+content="text/html; charset=iso-8859-1" />
+<meta name="copyright"
+content="copyright (c) 2002-2008 by IBM corporation" />
+<meta name="dc.language" scheme="rfc1766" content="en-US" />
+<meta name="keywords" content="XML Schema" />
+<meta name="robots" content="index,follow" />
+<meta name="source" content="v6 Template Generator" />
+<meta name="generator" content="HTML Tidy, see www.w3.org" />
+<title>XML Schema Definition Library | Diagrams</title>
+</head>
+<body bgcolor="#ffffff" marginheight="0" marginwidth="0"
+leftmargin="0" topmargin="0">
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr>
+<td>
+<p class="page-title">Diagrams and Animations</p>
+
+<hr />
+<br />
+<br />
+
+
+<dl>
+<dt><a id="1" name="1"><b>1. Diagram of annotations inside a
+complex type:</b></a></dt>
+
+<dd><br />
+<br />
+</dd>
+
+<dd>
+<p><img src="images/xsd-diagram-ct03.gif" alt="Diagram of annotations inside a complex type"/></p>
+</dd>
+
+<dd><br />
+<br />
+</dd>
+
+<dt><a id="2" name="2"><b>2. Animation of parse which constructs a
+complexType with a wildcard</b></a></dt>
+
+<dd><br />
+<br />
+</dd>
+
+<dd>
+<a href="images/xsd-diagram-ct01/index.html">HTML (no animation)</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-ct01.ppt">Powerpoint</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-ct01.sxi">OpenOffice</a>
+</dd>
+
+<dd><br />
+<br />
+</dd>
+
+<dt><a id="3" name="3"><b>3. Animation of parse which constructs a
+complexTypes with a nested group particle and a reference to a
+global element declaration</b></a></dt>
+
+<dd><br />
+<br />
+</dd>
+
+<dd><a href="images/xsd-diagram-ct02/index.html">HTML (no animation)</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-ct02.ppt">Powerpoint</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-ct02.sxi">OpenOffice</a>
+</dd>
+
+<dd><br />
+<br />
+</dd>
+
+<dt><a id="4" name="4"><b>4. Animation of a parse of a schema which
+<include>s and <import>s other schema
+documents</b></a></dt>
+
+<dd><br />
+<br />
+</dd>
+
+<dd>
+<a href="images/xsd-diagram-import-include/index.html">HTML (no animation)</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-import-include.ppt">Powerpoint</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-import-include.sxi">OpenOffice</a>
+</dd>
+
+<dd><br />
+<br />
+</dd>
+
+<dt><a id="5" name="5"><b>5. Animation of getting the global
+element declarations of a schema using
+s.getElementDeclarations()</b></a></dt>
+
+<dd><br />
+<br />
+</dd>
+
+<dd>
+<a href="images/xsd-diagram-import-include-getElementDeclarations/index.html">HTML (no animation)</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-import-include-getElementDeclarations.ppt">Powerpoint</a>
+ <img src="images/c.gif" width="1" height="8" />
+<a href="images/xsd-diagram-import-include-getElementDeclarations.sxi">OpenOffice</a>
+</dd>
+
+<dd><br />
+<br />
+</dd>
+</dl>
+
+<br />
+<br />
+
+
+<hr />
+Last date the diagrams and animations were updated: July 26, 2002
+17:00 EDT
+
+<hr />
+<!-- <table border="1">
+ <tbody>
+ <tr>
+ <th>date</th>
+ <th>diagrams added</th>
+ <th>diagrams modified</th>
+ </tr>
+ <tr>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+ </table>
+
+</p>
+ </td>
+ </tr>
+ </table>
+
+ -->
+<!--END MAIN BODY CONTENT-->
+</td>
+</tr>
+</table>
+</body>
+</html>
+
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/c.gif b/doc/org.eclipse.xsd.doc/references/diagrams/images/c.gif
new file mode 100755
index 0000000..1d11fa9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/c.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01.ppt b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01.ppt
new file mode 100644
index 0000000..70b04dc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01.ppt
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01.sxi b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01.sxi
new file mode 100644
index 0000000..7ac294d
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01.sxi
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/first0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/first0.png
new file mode 100644
index 0000000..3bc9535
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/first0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/first1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/first1.png
new file mode 100644
index 0000000..d030f20
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/first1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.html
new file mode 100644
index 0000000..073dce4
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<center><img src="img0.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.jpg
new file mode 100644
index 0000000..2f882f3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.png
new file mode 100644
index 0000000..cc3f912
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.html
new file mode 100644
index 0000000..3f85487
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of a complexType definition and construction of the abstract schema components. </title>
+</head>
+<body>
+<center><img src="img1.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.jpg
new file mode 100644
index 0000000..65f9d3b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.png
new file mode 100644
index 0000000..ac1780c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.html
new file mode 100644
index 0000000..f5d3b7b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:complexType name=“ct01”></title>
+</head>
+<body>
+<center><img src="img2.png" USEMAP="#map0"></center>
+<map name="map0">
+<area shape=rect coords="111,103,251,175" href="http://xml.watson.ibm.com/schema/components/javadoc/com_ibm_etools_xsd_Javadoc_files/com/ibm/etools/xsd/XSDComplexTypeDefinition.html">
+</map>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.jpg
new file mode 100644
index 0000000..95694b2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.png
new file mode 100644
index 0000000..16d5d6f
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img2.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.html
new file mode 100644
index 0000000..48c409c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:choice></title>
+</head>
+<body>
+<center><img src="img3.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.jpg
new file mode 100644
index 0000000..76477b3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.png
new file mode 100644
index 0000000..c239af5
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img3.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.html
new file mode 100644
index 0000000..6f7504c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element name=“inline” type="xs:string" minOccurs="2" maxOccurs="3"/></title>
+</head>
+<body>
+<center><img src="img4.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.jpg
new file mode 100644
index 0000000..2816745
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.png
new file mode 100644
index 0000000..032e45e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img4.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.html
new file mode 100644
index 0000000..1576b01
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:any namespace=“##other”/></title>
+</head>
+<body>
+<center><img src="img5.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.jpg
new file mode 100644
index 0000000..370dbc7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.png
new file mode 100644
index 0000000..bd154f2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img5.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.html
new file mode 100644
index 0000000..057785c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of </xs:complexType></title>
+</head>
+<body>
+<center><img src="img6.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.jpg b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.jpg
new file mode 100644
index 0000000..e811403
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.jpg
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.png
new file mode 100644
index 0000000..2504ff3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/img6.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/index.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/index.html
new file mode 100644
index 0000000..a66e1d4
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/index.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<center>
+<h2><a href="siframes.html">Click here to start</a></h2>
+</center>
+<center><table width=90%><TR>
+<td valign=top align=left width=50%>
+<h3><u>Table of contents</u></h3><p align=left>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</p>
+<p align=left>Parse of a complexType definition and construction of the abstract schema components. </p>
+<p align=left>Parse of <xs:complexType name=“ct01”></p>
+<p align=left>Parse of <xs:choice></p>
+<p align=left>Parse of <xs:element name=“inline” type="xs:string" minOccurs="2" maxOccurs="3"/></p>
+<p align=left>Parse of <xs:any namespace=“##other”/></p>
+<p align=left>Parse of </xs:complexType></p>
+</td>
+<td valign=top width=50%>
+<p><strong>Homepage:</strong> <a href="http://eclipse.org/emf">http://eclipse.org/emf</a> </p>
+</td></tr></table></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/index.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/index.png
new file mode 100644
index 0000000..70ce304
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/index.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/last0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/last0.png
new file mode 100644
index 0000000..658b6e9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/last0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/last1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/last1.png
new file mode 100644
index 0000000..2251824
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/last1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/less.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/less.png
new file mode 100644
index 0000000..12f8b67
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/less.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/more.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/more.png
new file mode 100644
index 0000000..28d29fc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/more.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar0.html
new file mode 100644
index 0000000..6e9441f
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar0.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<center>
+<img src="first0.png" border=0 alt="First page">
+<img src="prev0.png" border=0 alt="Back">
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(6)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="xsd-diagram-ct01.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar1.html
new file mode 100644
index 0000000..53bdaf7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar1.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(6)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="xsd-diagram-ct01.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar2.html
new file mode 100644
index 0000000..2624211
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<img src="next0.png" border=0 alt="Continue">
+<img src="last0.png" border=0 alt="Last page">
+<a href="xsd-diagram-ct01.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar3.html
new file mode 100644
index 0000000..765b5b8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<a href="JavaScript:parent.ExpandOutline()"><img src="less.png" border=0 alt="With contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar4.html
new file mode 100644
index 0000000..a890fca
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/navbar4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<a href="JavaScript:parent.CollapseOutline()"><img src="more.png" border=0 alt="Without contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/next0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/next0.png
new file mode 100644
index 0000000..27254d8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/next0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/next1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/next1.png
new file mode 100644
index 0000000..ae7c545
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/next1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/outline0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/outline0.html
new file mode 100644
index 0000000..95e435b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/outline0.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are created when reading a schema – an animation in 6 slides
+ -- complexType with wildcard</a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">Parse of a complexType definition and construction of the abstract schema components. </a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Parse of <xs:complexType name=“ct01”></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">Parse of <xs:choice></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(4)">Parse of <xs:element name=“inline” type="xs:string" minOccurs="2" maxOccurs="3"/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(5)">Parse of <xs:any namespace=“##other”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(6)">Parse of </xs:complexType></a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/outline1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/outline1.html
new file mode 100644
index 0000000..8245cb0
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/outline1.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are created when reading a schema – an animation in 6 slides
+ -- complexType with wildcard</a><br><ul></ul><li><b>July 26, 2002 5:00pm</b>
+</p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">Parse of a complexType definition and construction of the abstract schema components. </a><br><ul><li><b><xs:complexType name="ct01"></b>
+<li><b> <xs:choice></b>
+<li><b> <xs:element name="inline" type="xs:string" minOccurs="2" maxOccurs="3"/></b>
+<li><b> <xs:any namespace="##other"/></b>
+<li><b> </xs:choice></b>
+<li><b></xs:complexType></b>
+</ul></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Parse of <xs:complexType name=“ct01”></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">Parse of <xs:choice></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(4)">Parse of <xs:element name=“inline” type="xs:string" minOccurs="2" maxOccurs="3"/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(5)">Parse of <xs:any namespace=“##other”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(6)">Parse of </xs:complexType></a><br></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/prev0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/prev0.png
new file mode 100644
index 0000000..b1cf4ea
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/prev0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/prev1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/prev1.png
new file mode 100644
index 0000000..9adef1e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/prev1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/siframes.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/siframes.html
new file mode 100644
index 0000000..1fd5b52
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/siframes.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+<script language="JavaScript">
+<!--
+var nCurrentPage = 0;
+var nPageCount = 7;
+
+function NavigateAbs( nPage )
+{
+ frames["show"].location.href = "img" + nPage + ".html";
+ //frames["notes"].location.href = "note" + nPage + ".html";
+ nCurrentPage = nPage;
+ if(nCurrentPage==0)
+ {
+ frames["navbar1"].location.href = "navbar0.html";
+ }
+ else if(nCurrentPage==nPageCount-1)
+ {
+ frames["navbar1"].location.href = "navbar2.html";
+ }
+ else
+ {
+ frames["navbar1"].location.href = "navbar1.html";
+ }
+}
+
+function NavigateRel( nDelta )
+{
+ var nPage = parseInt(nCurrentPage) + parseInt(nDelta);
+ if( (nPage >= 0) && (nPage < nPageCount) )
+ {
+ NavigateAbs( nPage );
+ }
+}
+
+function ExpandOutline()
+{
+ frames["navbar2"].location.href = "navbar4.html";
+ frames["outline"].location.href = "outline1.html";
+}
+
+function CollapseOutline()
+{
+ frames["navbar2"].location.href = "navbar3.html";
+ frames["outline"].location.href = "outline0.html";
+}
+
+// -->
+</SCRIPT>
+</head>
+<frameset cols="*,656">
+ <frameset rows="42,*">
+ <frame src="navbar3.html" name="navbar2" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="outline0.html" name="outline">
+ </frameset>
+ <frameset rows="42,*">
+ <frame src="navbar0.html" name="navbar1" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="img0.html" name="show" marginwidth=4 marginheight=4>
+ </frameset>
+</frameset>
+<noframes><body>
+Unfortunately your browser does not support floating frames.
+</noframes></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text.png
new file mode 100644
index 0000000..a5bcb47
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text0.html
new file mode 100644
index 0000000..ba67f81
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text0.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 6 slides -- complexType with wildcard</title>
+</head>
+<body>
+<center>
+First page Back <a href="text1.html">Continue</a> <a href="text6.html">Last page</a> <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>How abstract components are created when reading a schema – an animation in 6 slides
+ -- complexType with wildcard</h1><p>
+<ul></ul><li><b>July 26, 2002 5:00pm</b>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text1.html
new file mode 100644
index 0000000..981e707
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text1.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of a complexType definition and construction of the abstract schema components. </title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text0.html">Back</a> <a href="text2.html">Continue</a> <a href="text6.html">Last page</a> <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of a complexType definition and construction of the abstract schema components. </h1><p>
+<ul><li><h2><b><xs:complexType name="ct01"></b></h2>
+<li><h2><b> <xs:choice></b></h2>
+<li><h2><b> <xs:element name="inline" type="xs:string" minOccurs="2" maxOccurs="3"/></b></h2>
+<li><h2><b> <xs:any namespace="##other"/></b></h2>
+<li><h2><b> </xs:choice></b></h2>
+<li><h2><b></xs:complexType></b></h2>
+</ul></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text2.html
new file mode 100644
index 0000000..27c6b8f
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text2.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:complexType name=“ct01”></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text1.html">Back</a> <a href="text3.html">Continue</a> <a href="text6.html">Last page</a> <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:complexType name=“ct01”></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text3.html
new file mode 100644
index 0000000..2599f76
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text3.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:choice></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text2.html">Back</a> <a href="text4.html">Continue</a> <a href="text6.html">Last page</a> <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:choice></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text4.html
new file mode 100644
index 0000000..5dc7f8f
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text4.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element name=“inline” type="xs:string" minOccurs="2" maxOccurs="3"/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text3.html">Back</a> <a href="text5.html">Continue</a> <a href="text6.html">Last page</a> <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:element name=“inline” type="xs:string" minOccurs="2" maxOccurs="3"/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text5.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text5.html
new file mode 100644
index 0000000..2355208
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text5.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:any namespace=“##other”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text4.html">Back</a> <a href="text6.html">Continue</a> <a href="text6.html">Last page</a> <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:any namespace=“##other”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text6.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text6.html
new file mode 100644
index 0000000..b9414db
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct01/text6.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of </xs:complexType></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text5.html">Back</a> Continue Last page <a href="xsd-diagram-ct01.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of </xs:complexType></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02.ppt b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02.ppt
new file mode 100644
index 0000000..0b79019
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02.ppt
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02.sxi b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02.sxi
new file mode 100644
index 0000000..3d165ae
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02.sxi
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/first0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/first0.png
new file mode 100644
index 0000000..3bc9535
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/first0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/first1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/first1.png
new file mode 100644
index 0000000..d030f20
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/first1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img0.html
new file mode 100644
index 0000000..f7eb627
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img0.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<center><img src="img0.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img0.png
new file mode 100644
index 0000000..0a06f82
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img1.html
new file mode 100644
index 0000000..3f85487
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img1.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of a complexType definition and construction of the abstract schema components. </title>
+</head>
+<body>
+<center><img src="img1.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img1.png
new file mode 100644
index 0000000..35608a9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img2.html
new file mode 100644
index 0000000..c3601bd
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img2.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:complexType name=“ct02”></title>
+</head>
+<body>
+<center><img src="img2.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img2.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img2.png
new file mode 100644
index 0000000..a2dfcf7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img2.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img3.html
new file mode 100644
index 0000000..a0e07f2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img3.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:sequence></title>
+</head>
+<body>
+<center><img src="img3.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img3.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img3.png
new file mode 100644
index 0000000..f4e8d67
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img3.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img4.html
new file mode 100644
index 0000000..6d6e5a7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img4.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element ref=“refed”/> 1</title>
+</head>
+<body>
+<center><img src="img4.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img4.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img4.png
new file mode 100644
index 0000000..022f331
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img4.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img5.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img5.html
new file mode 100644
index 0000000..90d7735
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img5.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element ref=“refed”/> 2</title>
+</head>
+<body>
+<center><img src="img5.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img5.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img5.png
new file mode 100644
index 0000000..3df5b3e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img5.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img6.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img6.html
new file mode 100644
index 0000000..8eda1ec
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img6.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:sequence minOccurs=“0” maxOccurs=“3”/></title>
+</head>
+<body>
+<center><img src="img6.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img6.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img6.png
new file mode 100644
index 0000000..358b3a7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img6.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img7.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img7.html
new file mode 100644
index 0000000..55caaf3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img7.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element name=“e1” type=“xs:string”/></title>
+</head>
+<body>
+<center><img src="img7.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img7.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img7.png
new file mode 100644
index 0000000..545cd97
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img7.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img8.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img8.html
new file mode 100644
index 0000000..6303045
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img8.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element name=“e2” type=“xs:string”/></title>
+</head>
+<body>
+<center><img src="img8.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img8.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img8.png
new file mode 100644
index 0000000..19d6433
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img8.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img9.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img9.html
new file mode 100644
index 0000000..2d87e17
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img9.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of </xs:complexType></title>
+</head>
+<body>
+<center><img src="img9.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img9.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img9.png
new file mode 100644
index 0000000..0ab42d8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/img9.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/index.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/index.html
new file mode 100644
index 0000000..9543a65
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/index.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<center>
+<h2><a href="siframes.html">Click here to start</a></h2>
+</center>
+<center><table width=90%><TR>
+<td valign=top align=left width=50%>
+<h3><u>Table of contents</u></h3><p align=left>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</p>
+<p align=left>Parse of a complexType definition and construction of the abstract schema components. </p>
+<p align=left>Parse of <xs:complexType name=“ct02”></p>
+<p align=left>Parse of <xs:sequence></p>
+<p align=left>Parse of <xs:element ref=“refed”/> 1</p>
+<p align=left>Parse of <xs:element ref=“refed”/> 2</p>
+<p align=left>Parse of <xs:sequence minOccurs=“0” maxOccurs=“3”/></p>
+<p align=left>Parse of <xs:element name=“e1” type=“xs:string”/></p>
+<p align=left>Parse of <xs:element name=“e2” type=“xs:string”/></p>
+<p align=left>Parse of </xs:complexType></p>
+</td>
+<td valign=top width=50%>
+<p><strong>Homepage:</strong> <a href="http://eclipse.org/emf">http://eclipse.org/emf</a> </p>
+</td></tr></table></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/index.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/index.png
new file mode 100644
index 0000000..70ce304
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/index.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/last0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/last0.png
new file mode 100644
index 0000000..658b6e9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/last0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/last1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/last1.png
new file mode 100644
index 0000000..2251824
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/last1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/less.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/less.png
new file mode 100644
index 0000000..12f8b67
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/less.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/more.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/more.png
new file mode 100644
index 0000000..28d29fc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/more.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar0.html
new file mode 100644
index 0000000..f88b6ab
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar0.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<center>
+<img src="first0.png" border=0 alt="First page">
+<img src="prev0.png" border=0 alt="Back">
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(9)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="xsd-diagram-ct02.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar1.html
new file mode 100644
index 0000000..6033fdf
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar1.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(9)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="xsd-diagram-ct02.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar2.html
new file mode 100644
index 0000000..93c32fb
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<img src="next0.png" border=0 alt="Continue">
+<img src="last0.png" border=0 alt="Last page">
+<a href="xsd-diagram-ct02.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar3.html
new file mode 100644
index 0000000..28ab16f
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<a href="JavaScript:parent.ExpandOutline()"><img src="less.png" border=0 alt="With contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar4.html
new file mode 100644
index 0000000..93d8dd0
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/navbar4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<a href="JavaScript:parent.CollapseOutline()"><img src="more.png" border=0 alt="Without contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/next0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/next0.png
new file mode 100644
index 0000000..27254d8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/next0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/next1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/next1.png
new file mode 100644
index 0000000..ae7c545
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/next1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/outline0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/outline0.html
new file mode 100644
index 0000000..e9295bc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/outline0.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are created when reading a schema – an animation in 9 slides
+ -- complexType</a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">Parse of a complexType definition and construction of the abstract schema components. </a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Parse of <xs:complexType name=“ct02”></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">Parse of <xs:sequence></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(4)">Parse of <xs:element ref=“refed”/> 1</a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(5)">Parse of <xs:element ref=“refed”/> 2</a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(6)">Parse of <xs:sequence minOccurs=“0” maxOccurs=“3”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(7)">Parse of <xs:element name=“e1” type=“xs:string”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(8)">Parse of <xs:element name=“e2” type=“xs:string”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(9)">Parse of </xs:complexType></a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/outline1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/outline1.html
new file mode 100644
index 0000000..ae0301d
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/outline1.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are created when reading a schema – an animation in 9 slides
+ -- complexType</a><br><ul></ul><li><b>July 26, 2002 5:00pm</b>
+</p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">Parse of a complexType definition and construction of the abstract schema components. </a><br><ul><li><b> <xs:complexType name="ct02"></b>
+<li><b> <xs:sequence></b>
+<li><b> <xs:element ref="refed"/> </b>
+<li><b> <xs:sequence minOccurs="0" maxOccurs="3"></b>
+<li><b> <xs:element name="e1" type="xs:string"/></b>
+<li><b> <xs:element name="e2" type="xs:string"/></b>
+<li><b> </xs:sequence></b>
+<li><b> </xs:sequence></b>
+<li><b> </xs:complexType></b>
+<li><b></b>
+<li><b>And elsewhere there is a global element declaration with the name “refed”</b>
+</ul></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Parse of <xs:complexType name=“ct02”></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">Parse of <xs:sequence></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(4)">Parse of <xs:element ref=“refed”/> 1</a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(5)">Parse of <xs:element ref=“refed”/> 2</a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(6)">Parse of <xs:sequence minOccurs=“0” maxOccurs=“3”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(7)">Parse of <xs:element name=“e1” type=“xs:string”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(8)">Parse of <xs:element name=“e2” type=“xs:string”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(9)">Parse of </xs:complexType></a><br></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/prev0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/prev0.png
new file mode 100644
index 0000000..b1cf4ea
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/prev0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/prev1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/prev1.png
new file mode 100644
index 0000000..9adef1e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/prev1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/siframes.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/siframes.html
new file mode 100644
index 0000000..e1473a6
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/siframes.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+<script language="JavaScript">
+<!--
+var nCurrentPage = 0;
+var nPageCount = 10;
+
+function NavigateAbs( nPage )
+{
+ frames["show"].location.href = "img" + nPage + ".html";
+ //frames["notes"].location.href = "note" + nPage + ".html";
+ nCurrentPage = nPage;
+ if(nCurrentPage==0)
+ {
+ frames["navbar1"].location.href = "navbar0.html";
+ }
+ else if(nCurrentPage==nPageCount-1)
+ {
+ frames["navbar1"].location.href = "navbar2.html";
+ }
+ else
+ {
+ frames["navbar1"].location.href = "navbar1.html";
+ }
+}
+
+function NavigateRel( nDelta )
+{
+ var nPage = parseInt(nCurrentPage) + parseInt(nDelta);
+ if( (nPage >= 0) && (nPage < nPageCount) )
+ {
+ NavigateAbs( nPage );
+ }
+}
+
+function ExpandOutline()
+{
+ frames["navbar2"].location.href = "navbar4.html";
+ frames["outline"].location.href = "outline1.html";
+}
+
+function CollapseOutline()
+{
+ frames["navbar2"].location.href = "navbar3.html";
+ frames["outline"].location.href = "outline0.html";
+}
+
+// -->
+</SCRIPT>
+</head>
+<frameset cols="*,656">
+ <frameset rows="42,*">
+ <frame src="navbar3.html" name="navbar2" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="outline0.html" name="outline">
+ </frameset>
+ <frameset rows="42,*">
+ <frame src="navbar0.html" name="navbar1" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="img0.html" name="show" marginwidth=4 marginheight=4>
+ </frameset>
+</frameset>
+<noframes><body>
+Unfortunately your browser does not support floating frames.
+</noframes></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text.png
new file mode 100644
index 0000000..a5bcb47
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text0.html
new file mode 100644
index 0000000..fcbc996
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text0.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 9 slides -- complexType</title>
+</head>
+<body>
+<center>
+First page Back <a href="text1.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>How abstract components are created when reading a schema – an animation in 9 slides
+ -- complexType</h1><p>
+<ul></ul><li><b>July 26, 2002 5:00pm</b>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text1.html
new file mode 100644
index 0000000..6a8c91a
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of a complexType definition and construction of the abstract schema components. </title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text0.html">Back</a> <a href="text2.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of a complexType definition and construction of the abstract schema components. </h1><p>
+<ul><li><h2><b> <xs:complexType name="ct02"></b></h2>
+<li><h2><b> <xs:sequence></b></h2>
+<li><h2><b> <xs:element ref="refed"/> </b></h2>
+<li><h2><b> <xs:sequence minOccurs="0" maxOccurs="3"></b></h2>
+<li><h2><b> <xs:element name="e1" type="xs:string"/></b></h2>
+<li><h2><b> <xs:element name="e2" type="xs:string"/></b></h2>
+<li><h2><b> </xs:sequence></b></h2>
+<li><h2><b> </xs:sequence></b></h2>
+<li><h2><b> </xs:complexType></b></h2>
+<li><h2><b></b></h2>
+<li><h2><b>And elsewhere there is a global element declaration with the name “refed”</b></h2>
+</ul></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text2.html
new file mode 100644
index 0000000..40357fc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text2.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:complexType name=“ct02”></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text1.html">Back</a> <a href="text3.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:complexType name=“ct02”></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text3.html
new file mode 100644
index 0000000..19ba9b3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text3.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:sequence></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text2.html">Back</a> <a href="text4.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:sequence></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text4.html
new file mode 100644
index 0000000..9a3e293
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text4.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element ref=“refed”/> 1</title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text3.html">Back</a> <a href="text5.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:element ref=“refed”/> 1</h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text5.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text5.html
new file mode 100644
index 0000000..2fa73b2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text5.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element ref=“refed”/> 2</title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text4.html">Back</a> <a href="text6.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:element ref=“refed”/> 2</h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text6.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text6.html
new file mode 100644
index 0000000..8398c79
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text6.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:sequence minOccurs=“0” maxOccurs=“3”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text5.html">Back</a> <a href="text7.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:sequence minOccurs=“0” maxOccurs=“3”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text7.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text7.html
new file mode 100644
index 0000000..ff38d4c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text7.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element name=“e1” type=“xs:string”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text6.html">Back</a> <a href="text8.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:element name=“e1” type=“xs:string”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text8.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text8.html
new file mode 100644
index 0000000..239ae01
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text8.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of <xs:element name=“e2” type=“xs:string”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text7.html">Back</a> <a href="text9.html">Continue</a> <a href="text9.html">Last page</a> <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of <xs:element name=“e2” type=“xs:string”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text9.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text9.html
new file mode 100644
index 0000000..82207f3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct02/text9.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of </xs:complexType></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text8.html">Back</a> Continue Last page <a href="xsd-diagram-ct02.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of </xs:complexType></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct03.gif b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct03.gif
new file mode 100644
index 0000000..3ea7c7b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-ct03.gif
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations.ppt b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations.ppt
new file mode 100644
index 0000000..00186b7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations.ppt
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations.sxi b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations.sxi
new file mode 100644
index 0000000..1d18b58
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations.sxi
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/first0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/first0.png
new file mode 100644
index 0000000..3bc9535
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/first0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/first1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/first1.png
new file mode 100644
index 0000000..d030f20
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/first1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img0.html
new file mode 100644
index 0000000..e081670
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img0.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center><img src="img0.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img0.png
new file mode 100644
index 0000000..db375ce
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img1.html
new file mode 100644
index 0000000..77afe1d
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img1.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>These schema documents are equivalent to the </title>
+</head>
+<body>
+<center><img src="img1.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img1.png
new file mode 100644
index 0000000..5991292
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img2.html
new file mode 100644
index 0000000..f1598c9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img2.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Calling method</title>
+</head>
+<body>
+<center><img src="img2.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img2.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img2.png
new file mode 100644
index 0000000..e04460b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img2.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img3.html
new file mode 100644
index 0000000..015513d
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img3.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>s1.getElementDeclarations()</title>
+</head>
+<body>
+<center><img src="img3.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img3.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img3.png
new file mode 100644
index 0000000..5c14d28
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/img3.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/index.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/index.html
new file mode 100644
index 0000000..b6077bf
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/index.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<h2><a href="siframes.html">Click here to start</a></h2>
+</center>
+<center><table width=90%><TR>
+<td valign=top align=left width=50%>
+<h3><u>Table of contents</u></h3><p align=left>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></p>
+<p align=left>These schema documents are equivalent to the </p>
+<p align=left>Calling method</p>
+<p align=left>s1.getElementDeclarations()</p>
+</td>
+<td valign=top width=50%>
+<p><strong>Homepage:</strong> <a href="http://eclipse.org/emf">http://eclipse.org/emf</a> </p>
+</td></tr></table></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/index.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/index.png
new file mode 100644
index 0000000..70ce304
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/index.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/last0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/last0.png
new file mode 100644
index 0000000..658b6e9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/last0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/last1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/last1.png
new file mode 100644
index 0000000..2251824
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/last1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/less.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/less.png
new file mode 100644
index 0000000..12f8b67
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/less.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/more.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/more.png
new file mode 100644
index 0000000..28d29fc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/more.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar0.html
new file mode 100644
index 0000000..2939911
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar0.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<img src="first0.png" border=0 alt="First page">
+<img src="prev0.png" border=0 alt="Back">
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(3)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="index.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar1.html
new file mode 100644
index 0000000..a971cc38
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar1.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(3)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="index.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar2.html
new file mode 100644
index 0000000..a64405b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<img src="next0.png" border=0 alt="Continue">
+<img src="last0.png" border=0 alt="Last page">
+<a href="index.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar3.html
new file mode 100644
index 0000000..224173a
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<a href="JavaScript:parent.ExpandOutline()"><img src="less.png" border=0 alt="With contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar4.html
new file mode 100644
index 0000000..f9ac8c4
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/navbar4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<a href="JavaScript:parent.CollapseOutline()"><img src="more.png" border=0 alt="Without contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/next0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/next0.png
new file mode 100644
index 0000000..27254d8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/next0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/next1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/next1.png
new file mode 100644
index 0000000..ae7c545
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/next1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/outline0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/outline0.html
new file mode 100644
index 0000000..1115536
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/outline0.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides
+ -- schemas that use <include> and <import></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">These schema documents are equivalent to the </a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Calling method</a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">s1.getElementDeclarations()</a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/outline1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/outline1.html
new file mode 100644
index 0000000..c0e491c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/outline1.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides
+ -- schemas that use <include> and <import></a><br><ul></ul><li><b>July 26, 2002 5:00pm EDT</b>
+</p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">These schema documents are equivalent to the </a><br><ul><li><b><xs:schema targetNamespace=“t1“ xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b>
+<li><b> <xs:include schemaLocation=“s3.xsd”/></b>
+<li><b> <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></b>
+<li><b> <xs:element name=“t1e1” type=“xs:string”/></b>
+<li><b></xs:schema></b>
+<li><b></b>
+<li><b>s2.xsd:</b>
+<li><b><xs:schema targetNamespace=“t2” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b>
+<li><b> <xs:element name=“t2e1” type=“xs:string”/></b>
+<li><b></xs:schema></b>
+<li><b></b>
+<li><b>s3.xsd:</b>
+<li><b><xs:schema targetNamespace=“t1” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b>
+<li><b> <xs:element name=“t1e2” type=“xs:string”/></b>
+<li><b></xs:schema></b>
+</ul></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Calling method</a><br><ul><li><b>The calling method has -- in a variable -- a pointer to the first XSDSchema shown on the left</b>
+<li><b>It uses this to get a collection of all the Element Declarations that are part of that schema</b>
+</ul></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">s1.getElementDeclarations()</a><br></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/prev0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/prev0.png
new file mode 100644
index 0000000..b1cf4ea
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/prev0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/prev1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/prev1.png
new file mode 100644
index 0000000..9adef1e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/prev1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/siframes.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/siframes.html
new file mode 100644
index 0000000..cfc3f5f
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/siframes.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+<script language="JavaScript">
+<!--
+var nCurrentPage = 0;
+var nPageCount = 4;
+
+function NavigateAbs( nPage )
+{
+ frames["show"].location.href = "img" + nPage + ".html";
+ //frames["notes"].location.href = "note" + nPage + ".html";
+ nCurrentPage = nPage;
+ if(nCurrentPage==0)
+ {
+ frames["navbar1"].location.href = "navbar0.html";
+ }
+ else if(nCurrentPage==nPageCount-1)
+ {
+ frames["navbar1"].location.href = "navbar2.html";
+ }
+ else
+ {
+ frames["navbar1"].location.href = "navbar1.html";
+ }
+}
+
+function NavigateRel( nDelta )
+{
+ var nPage = parseInt(nCurrentPage) + parseInt(nDelta);
+ if( (nPage >= 0) && (nPage < nPageCount) )
+ {
+ NavigateAbs( nPage );
+ }
+}
+
+function ExpandOutline()
+{
+ frames["navbar2"].location.href = "navbar4.html";
+ frames["outline"].location.href = "outline1.html";
+}
+
+function CollapseOutline()
+{
+ frames["navbar2"].location.href = "navbar3.html";
+ frames["outline"].location.href = "outline0.html";
+}
+
+// -->
+</SCRIPT>
+</head>
+<frameset cols="*,656">
+ <frameset rows="42,*">
+ <frame src="navbar3.html" name="navbar2" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="outline0.html" name="outline">
+ </frameset>
+ <frameset rows="42,*">
+ <frame src="navbar0.html" name="navbar1" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="img0.html" name="show" marginwidth=4 marginheight=4>
+ </frameset>
+</frameset>
+<noframes><body>
+Unfortunately your browser does not support floating frames.
+</noframes></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text.png
new file mode 100644
index 0000000..a5bcb47
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text0.html
new file mode 100644
index 0000000..01fbc4d
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text0.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+First page Back <a href="text1.html">Continue</a> <a href="text3.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>How abstract components are returned when schema.getElementDeclarations() is called – an animation in 3 slides
+ -- schemas that use <include> and <import></h1><p>
+<ul></ul><li><b>July 26, 2002 5:00pm EDT</b>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text1.html
new file mode 100644
index 0000000..88f3136
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text1.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>These schema documents are equivalent to the </title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text0.html">Back</a> <a href="text2.html">Continue</a> <a href="text3.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>These schema documents are equivalent to the </h1><p>
+<ul><li><h2><b><xs:schema targetNamespace=“t1“ xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b></h2>
+<li><h2><b> <xs:include schemaLocation=“s3.xsd”/></b></h2>
+<li><h2><b> <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></b></h2>
+<li><h2><b> <xs:element name=“t1e1” type=“xs:string”/></b></h2>
+<li><h2><b></xs:schema></b></h2>
+<li><h2><b></b></h2>
+<li><h2><b>s2.xsd:</b></h2>
+<li><h2><b><xs:schema targetNamespace=“t2” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b></h2>
+<li><h2><b> <xs:element name=“t2e1” type=“xs:string”/></b></h2>
+<li><h2><b></xs:schema></b></h2>
+<li><h2><b></b></h2>
+<li><h2><b>s3.xsd:</b></h2>
+<li><h2><b><xs:schema targetNamespace=“t1” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b></h2>
+<li><h2><b> <xs:element name=“t1e2” type=“xs:string”/></b></h2>
+<li><h2><b></xs:schema></b></h2>
+</ul></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text2.html
new file mode 100644
index 0000000..8d6f0a6
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text2.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Calling method</title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text1.html">Back</a> <a href="text3.html">Continue</a> <a href="text3.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1></h1><p>
+<ul><li><h2><b>The calling method has -- in a variable -- a pointer to the first XSDSchema shown on the left</b></h2>
+<li><h2><b>It uses this to get a collection of all the Element Declarations that are part of that schema</b></h2>
+</ul></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text3.html
new file mode 100644
index 0000000..e4dd5b9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include-getElementDeclarations/text3.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>s1.getElementDeclarations()</title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text2.html">Back</a> Continue Last page <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>s1.getElementDeclarations()</h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include.ppt b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include.ppt
new file mode 100644
index 0000000..8af7211
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include.ppt
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include.sxi b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include.sxi
new file mode 100644
index 0000000..622ef5c
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include.sxi
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/first0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/first0.png
new file mode 100644
index 0000000..3bc9535
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/first0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/first1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/first1.png
new file mode 100644
index 0000000..d030f20
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/first1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img0.html
new file mode 100644
index 0000000..a2626f1
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img0.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center><img src="img0.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img0.png
new file mode 100644
index 0000000..2577e20
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img1.html
new file mode 100644
index 0000000..690b0d9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img1.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of a top level schema document. </title>
+</head>
+<body>
+<center><img src="img1.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img1.png
new file mode 100644
index 0000000..e44ce5a
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img10.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img10.html
new file mode 100644
index 0000000..1399e21
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img10.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s2 </xs:schema></title>
+</head>
+<body>
+<center><img src="img10.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img10.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img10.png
new file mode 100644
index 0000000..0984597
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img10.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img11.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img11.html
new file mode 100644
index 0000000..f63eda3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img11.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:element name=“t1e1”../></title>
+</head>
+<body>
+<center><img src="img11.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img11.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img11.png
new file mode 100644
index 0000000..3815a7a
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img11.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img12.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img12.html
new file mode 100644
index 0000000..2632930
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img12.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 </xs:schema></title>
+</head>
+<body>
+<center><img src="img12.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img12.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img12.png
new file mode 100644
index 0000000..7359b5a
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img12.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img2.html
new file mode 100644
index 0000000..67d93c1
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img2.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:schema targetNamespace=“t1”></title>
+</head>
+<body>
+<center><img src="img2.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img2.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img2.png
new file mode 100644
index 0000000..1742306
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img2.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img3.html
new file mode 100644
index 0000000..e6b6ca7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img3.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:include schemaLocation=“s3.xsd”></title>
+</head>
+<body>
+<center><img src="img3.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img3.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img3.png
new file mode 100644
index 0000000..437d5e9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img3.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img4.html
new file mode 100644
index 0000000..458c1f1
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img4.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s3 <xs:schema targetNamespace=“t1”></title>
+</head>
+<body>
+<center><img src="img4.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img4.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img4.png
new file mode 100644
index 0000000..aa6be04
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img4.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img5.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img5.html
new file mode 100644
index 0000000..bbbbbc7
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img5.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s3 <xs:element name=“t1e2” type=“xs:string”/></title>
+</head>
+<body>
+<center><img src="img5.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img5.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img5.png
new file mode 100644
index 0000000..e6a1e64
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img5.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img6.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img6.html
new file mode 100644
index 0000000..515e8b3
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img6.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s3 </xs:schema></title>
+</head>
+<body>
+<center><img src="img6.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img6.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img6.png
new file mode 100644
index 0000000..df67675
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img6.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img7.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img7.html
new file mode 100644
index 0000000..aeed38b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img7.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></title>
+</head>
+<body>
+<center><img src="img7.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img7.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img7.png
new file mode 100644
index 0000000..a93adee
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img7.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img8.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img8.html
new file mode 100644
index 0000000..588b6b1
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img8.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s2 <xs:schema targetNamespace=“t2”/></title>
+</head>
+<body>
+<center><img src="img8.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img8.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img8.png
new file mode 100644
index 0000000..633d3c5
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img8.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img9.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img9.html
new file mode 100644
index 0000000..36dbfcc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img9.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s2 <xs:element name=“t2e1” type=../></title>
+</head>
+<body>
+<center><img src="img9.png"></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img9.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img9.png
new file mode 100644
index 0000000..ee10333
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/img9.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/index.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/index.html
new file mode 100644
index 0000000..f096220
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/index.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<h2><a href="siframes.html">Click here to start</a></h2>
+</center>
+<center><table width=90%><TR>
+<td valign=top align=left width=50%>
+<h3><u>Table of contents</u></h3><p align=left>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></p>
+<p align=left>Parse of a top level schema document. </p>
+<p align=left>Parse of s1 <xs:schema targetNamespace=“t1”></p>
+<p align=left>Parse of s1 <xs:include schemaLocation=“s3.xsd”></p>
+<p align=left>Parse of s3 <xs:schema targetNamespace=“t1”></p>
+<p align=left>Parse of s3 <xs:element name=“t1e2” type=“xs:string”/></p>
+<p align=left>Parse of s3 </xs:schema></p>
+<p align=left>Parse of s1 <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></p>
+<p align=left>Parse of s2 <xs:schema targetNamespace=“t2”/></p>
+<p align=left>Parse of s2 <xs:element name=“t2e1” type=../></p>
+<p align=left>Parse of s2 </xs:schema></p>
+<p align=left>Parse of s1 <xs:element name=“t1e1”../></p>
+<p align=left>Parse of s1 </xs:schema></p>
+</td>
+<td valign=top width=50%>
+<p><strong>Homepage:</strong> <a href="http://eclipse.org/emf">http://eclipse.org/emf</a> </p>
+</td></tr></table></center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/index.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/index.png
new file mode 100644
index 0000000..70ce304
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/index.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/last0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/last0.png
new file mode 100644
index 0000000..658b6e9
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/last0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/last1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/last1.png
new file mode 100644
index 0000000..2251824
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/last1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/less.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/less.png
new file mode 100644
index 0000000..12f8b67
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/less.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/more.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/more.png
new file mode 100644
index 0000000..28d29fc
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/more.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar0.html
new file mode 100644
index 0000000..45acedd
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar0.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<img src="first0.png" border=0 alt="First page">
+<img src="prev0.png" border=0 alt="Back">
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(12)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="index.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar1.html
new file mode 100644
index 0000000..f8e8036
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar1.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<a href="JavaScript:parent.NavigateRel(1)"><img src="next1.png" border=0 alt="Continue"></a>
+<a href="JavaScript:parent.NavigateAbs(12)"><img src="last1.png" border=0 alt="Last page"></a>
+<a href="index.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar2.html
new file mode 100644
index 0000000..0578ad1
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+<a href="JavaScript:parent.NavigateAbs(0)"><img src="first1.png" border=0 alt="First page"></a>
+<a href="JavaScript:parent.NavigateRel(-1)"><img src="prev1.png" border=0 alt="Back"></a>
+<img src="next0.png" border=0 alt="Continue">
+<img src="last0.png" border=0 alt="Last page">
+<a href="index.html" target="_top"><img src="index.png" border=0 alt="Overview"></a>
+<a href="text0.html" target="_top"><img src="text.png" border=0 alt="Text"></a>
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar3.html
new file mode 100644
index 0000000..a23cce2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<a href="JavaScript:parent.ExpandOutline()"><img src="less.png" border=0 alt="With contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar4.html
new file mode 100644
index 0000000..3abd0a8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/navbar4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<a href="JavaScript:parent.CollapseOutline()"><img src="more.png" border=0 alt="Without contents"></a></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/next0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/next0.png
new file mode 100644
index 0000000..27254d8
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/next0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/next1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/next1.png
new file mode 100644
index 0000000..ae7c545
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/next1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/outline0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/outline0.html
new file mode 100644
index 0000000..58713ba
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/outline0.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are created when reading a schema – an animation in 12 slides
+ -- schemas that use <include> and <import></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">Parse of a top level schema document. </a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Parse of s1 <xs:schema targetNamespace=“t1”></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">Parse of s1 <xs:include schemaLocation=“s3.xsd”></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(4)">Parse of s3 <xs:schema targetNamespace=“t1”></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(5)">Parse of s3 <xs:element name=“t1e2” type=“xs:string”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(6)">Parse of s3 </xs:schema></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(7)">Parse of s1 <xs:import namespace=“t2”
+ schemaLocation=“s2.xsd”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(8)">Parse of s2 <xs:schema targetNamespace=“t2”/></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(9)">Parse of s2 <xs:element name=“t2e1” type=../></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(10)">Parse of s2 </xs:schema></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(11)">Parse of s1 <xs:element name=“t1e1”../></a></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(12)">Parse of s1 </xs:schema></a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/outline1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/outline1.html
new file mode 100644
index 0000000..4e33842
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/outline1.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<p align=left><a href="JavaScript:parent.NavigateAbs(0)">How abstract components are created when reading a schema – an animation in 12 slides
+ -- schemas that use <include> and <import></a><br><ul></ul><li><b>July 26, 2002 5:00pm</b>
+</p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(1)">Parse of a top level schema document. </a><br><ul><li><b><xs:schema targetNamespace=“t1“ xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b>
+<li><b> <xs:include schemaLocation=“s3.xsd”/></b>
+<li><b> <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></b>
+<li><b> <xs:element name=“t1e1” type=“xs:string”/></b>
+<li><b></xs:schema></b>
+<li><b></b>
+<li><b>s2.xsd:</b>
+<li><b><xs:schema targetNamespace=“t2” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b>
+<li><b> <xs:element name=“t2e1” type=“xs:string”/></b>
+<li><b></xs:schema></b>
+<li><b></b>
+<li><b>s3.xsd:</b>
+<li><b><xs:schema targetNamespace=“t1” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b>
+<li><b> <xs:element name=“t1e2” type=“xs:string”/></b>
+<li><b></xs:schema></b>
+</ul></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(2)">Parse of s1 <xs:schema targetNamespace=“t1”></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(3)">Parse of s1 <xs:include schemaLocation=“s3.xsd”></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(4)">Parse of s3 <xs:schema targetNamespace=“t1”></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(5)">Parse of s3 <xs:element name=“t1e2” type=“xs:string”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(6)">Parse of s3 </xs:schema></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(7)">Parse of s1 <xs:import namespace=“t2”
+ schemaLocation=“s2.xsd”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(8)">Parse of s2 <xs:schema targetNamespace=“t2”/></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(9)">Parse of s2 <xs:element name=“t2e1” type=../></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(10)">Parse of s2 </xs:schema></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(11)">Parse of s1 <xs:element name=“t1e1”../></a><br></p>
+<p align=left><a href="JavaScript:parent.NavigateAbs(12)">Parse of s1 </xs:schema></a><br></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/prev0.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/prev0.png
new file mode 100644
index 0000000..b1cf4ea
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/prev0.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/prev1.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/prev1.png
new file mode 100644
index 0000000..9adef1e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/prev1.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/siframes.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/siframes.html
new file mode 100644
index 0000000..546d709
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/siframes.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+<script language="JavaScript">
+<!--
+var nCurrentPage = 0;
+var nPageCount = 13;
+
+function NavigateAbs( nPage )
+{
+ frames["show"].location.href = "img" + nPage + ".html";
+ //frames["notes"].location.href = "note" + nPage + ".html";
+ nCurrentPage = nPage;
+ if(nCurrentPage==0)
+ {
+ frames["navbar1"].location.href = "navbar0.html";
+ }
+ else if(nCurrentPage==nPageCount-1)
+ {
+ frames["navbar1"].location.href = "navbar2.html";
+ }
+ else
+ {
+ frames["navbar1"].location.href = "navbar1.html";
+ }
+}
+
+function NavigateRel( nDelta )
+{
+ var nPage = parseInt(nCurrentPage) + parseInt(nDelta);
+ if( (nPage >= 0) && (nPage < nPageCount) )
+ {
+ NavigateAbs( nPage );
+ }
+}
+
+function ExpandOutline()
+{
+ frames["navbar2"].location.href = "navbar4.html";
+ frames["outline"].location.href = "outline1.html";
+}
+
+function CollapseOutline()
+{
+ frames["navbar2"].location.href = "navbar3.html";
+ frames["outline"].location.href = "outline0.html";
+}
+
+// -->
+</SCRIPT>
+</head>
+<frameset cols="*,656">
+ <frameset rows="42,*">
+ <frame src="navbar3.html" name="navbar2" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="outline0.html" name="outline">
+ </frameset>
+ <frameset rows="42,*">
+ <frame src="navbar0.html" name="navbar1" marginwidth=4 marginheight=4 scrolling=no>
+ <frame src="img0.html" name="show" marginwidth=4 marginheight=4>
+ </frameset>
+</frameset>
+<noframes><body>
+Unfortunately your browser does not support floating frames.
+</noframes></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text.png b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text.png
new file mode 100644
index 0000000..a5bcb47
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text.png
Binary files differ
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text0.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text0.html
new file mode 100644
index 0000000..b89054e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text0.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>How abstract components are created when reading a schema – an animation in 12 slides -- schemas that use <include> and <import></title>
+</head>
+<body>
+<center>
+First page Back <a href="text1.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>How abstract components are created when reading a schema – an animation in 12 slides
+ -- schemas that use <include> and <import></h1><p>
+<ul></ul><li><b>July 26, 2002 5:00pm</b>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text1.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text1.html
new file mode 100644
index 0000000..c93ffa6
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text1.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of a top level schema document. </title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text0.html">Back</a> <a href="text2.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of a top level schema document. </h1><p>
+<ul><li><h2><b><xs:schema targetNamespace=“t1“ xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b></h2>
+<li><h2><b> <xs:include schemaLocation=“s3.xsd”/></b></h2>
+<li><h2><b> <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></b></h2>
+<li><h2><b> <xs:element name=“t1e1” type=“xs:string”/></b></h2>
+<li><h2><b></xs:schema></b></h2>
+<li><h2><b></b></h2>
+<li><h2><b>s2.xsd:</b></h2>
+<li><h2><b><xs:schema targetNamespace=“t2” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b></h2>
+<li><h2><b> <xs:element name=“t2e1” type=“xs:string”/></b></h2>
+<li><h2><b></xs:schema></b></h2>
+<li><h2><b></b></h2>
+<li><h2><b>s3.xsd:</b></h2>
+<li><h2><b><xs:schema targetNamespace=“t1” xmlns:xs=“http://www.w3.org/2001/XMLSchema”></b></h2>
+<li><h2><b> <xs:element name=“t1e2” type=“xs:string”/></b></h2>
+<li><h2><b></xs:schema></b></h2>
+</ul></body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text10.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text10.html
new file mode 100644
index 0000000..cfc098e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text10.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s2 </xs:schema></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text9.html">Back</a> <a href="text11.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s2 </xs:schema></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text11.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text11.html
new file mode 100644
index 0000000..7215509
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text11.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:element name=“t1e1”../></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text10.html">Back</a> <a href="text12.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s1 <xs:element name=“t1e1”../></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text12.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text12.html
new file mode 100644
index 0000000..f7b217e
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text12.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 </xs:schema></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text11.html">Back</a> Continue Last page <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s1 </xs:schema></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text2.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text2.html
new file mode 100644
index 0000000..5594cb2
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text2.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:schema targetNamespace=“t1”></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text1.html">Back</a> <a href="text3.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s1 <xs:schema targetNamespace=“t1”></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text3.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text3.html
new file mode 100644
index 0000000..2c65565
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text3.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:include schemaLocation=“s3.xsd”></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text2.html">Back</a> <a href="text4.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s1 <xs:include schemaLocation=“s3.xsd”></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text4.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text4.html
new file mode 100644
index 0000000..8fa3f79
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text4.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s3 <xs:schema targetNamespace=“t1”></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text3.html">Back</a> <a href="text5.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s3 <xs:schema targetNamespace=“t1”></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text5.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text5.html
new file mode 100644
index 0000000..b6cbb0d
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text5.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s3 <xs:element name=“t1e2” type=“xs:string”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text4.html">Back</a> <a href="text6.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s3 <xs:element name=“t1e2” type=“xs:string”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text6.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text6.html
new file mode 100644
index 0000000..340a5bf
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text6.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s3 </xs:schema></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text5.html">Back</a> <a href="text7.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s3 </xs:schema></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text7.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text7.html
new file mode 100644
index 0000000..3b8505b
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text7.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s1 <xs:import namespace=“t2” schemaLocation=“s2.xsd”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text6.html">Back</a> <a href="text8.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s1 <xs:import namespace=“t2”
+ schemaLocation=“s2.xsd”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text8.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text8.html
new file mode 100644
index 0000000..8dbb9fe
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text8.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s2 <xs:schema targetNamespace=“t2”/></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text7.html">Back</a> <a href="text9.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s2 <xs:schema targetNamespace=“t2”/></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text9.html b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text9.html
new file mode 100644
index 0000000..58ce3d0
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/references/diagrams/images/xsd-diagram-import-include/text9.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=utf-8">
+<title>Parse of s2 <xs:element name=“t2e1” type=../></title>
+</head>
+<body>
+<center>
+<a href="text0.html">First page</a> <a href="text8.html">Back</a> <a href="text10.html">Continue</a> <a href="text12.html">Last page</a> <a href="index.html">Overview</a> <a href="siframes.html">Graphics</a></center><br>
+<h1>Parse of s2 <xs:element name=“t2e1” type=../></h1><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/org.eclipse.xsd.doc/toc.xml b/doc/org.eclipse.xsd.doc/toc.xml
new file mode 100644
index 0000000..4031697
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/toc.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="XSD Developer Guide">
+ <topic label="Programmer's Guide">
+ <topic label="Diagrams and Animations" href="references/diagrams/diagrams.html"/>
+ </topic>
+ <topic label="Online Docs">
+ <topic label="FAQ" href="http://wiki.eclipse.org/MDT-XSD-FAQ" target="_blank"/>
+ </topic>
+</toc>
diff --git a/doc/org.eclipse.xsd.doc/tutorials/.gitignore b/doc/org.eclipse.xsd.doc/tutorials/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/org.eclipse.xsd.doc/tutorials/.gitignore
diff --git a/examples/org.eclipse.emf.examples-feature/feature.xml b/examples/org.eclipse.emf.examples-feature/feature.xml
index 843e94f..01d7737 100644
--- a/examples/org.eclipse.emf.examples-feature/feature.xml
+++ b/examples/org.eclipse.emf.examples-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.examples"
label="%featureName"
- version="2.22.0.qualifier"
+ version="2.23.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/examples/org.eclipse.emf.examples-feature/pom.xml b/examples/org.eclipse.emf.examples-feature/pom.xml
index 0458b14..1fa3edb 100644
--- a/examples/org.eclipse.emf.examples-feature/pom.xml
+++ b/examples/org.eclipse.emf.examples-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.examples</artifactId>
- <version>2.22.0-SNAPSHOT</version>
+ <version>2.23.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/META-INF/MANIFEST.MF
index a14c4b0..4b848de 100644
--- a/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-SymbolicName: org.eclipse.emf.examples.databinding.project.ui.rcp;singleton:=true
-Bundle-Version: 1.10.0.qualifier
+Bundle-Version: 1.11.0.qualifier
Bundle-Activator: org.eclipse.emf.example.databinding.project.ui.rcp.Activator
Require-Bundle: org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
@@ -12,8 +12,8 @@
org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)",
org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
org.eclipse.ui.forms;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.emf.databinding;bundle-version="[1.6.0,2.0.0)",
- org.eclipse.emf.databinding.edit;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.8.0,2.0.0)",
org.eclipse.emf.examples.databinding.project.core;bundle-version="[1.3.0,2.0.0)",
org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
org.eclipse.emf.ecore.xmi;bundle-version="[2.17.0,3.0.0)"
diff --git a/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/pom.xml b/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/pom.xml
index 8b28986..8a74edd 100644
--- a/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/pom.xml
+++ b/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.examples.databinding.project.ui.rcp</artifactId>
- <version>1.10.0-SNAPSHOT</version>
+ <version>1.11.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/src/org/eclipse/emf/example/databinding/project/ui/rcp/WidgetProperties.java b/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/src/org/eclipse/emf/example/databinding/project/ui/rcp/WidgetProperties.java
index 1a41ba8..64a6a3b 100644
--- a/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/src/org/eclipse/emf/example/databinding/project/ui/rcp/WidgetProperties.java
+++ b/examples/org.eclipse.emf.examples.databinding.project.ui.rcp/src/org/eclipse/emf/example/databinding/project/ui/rcp/WidgetProperties.java
@@ -28,7 +28,6 @@
import org.eclipse.jface.internal.databinding.swt.ControlSizeProperty;
import org.eclipse.jface.internal.databinding.swt.ControlVisibleProperty;
import org.eclipse.jface.internal.databinding.swt.WidgetEditableProperty;
-import org.eclipse.jface.internal.databinding.swt.WidgetEnabledProperty;
import org.eclipse.jface.internal.databinding.swt.WidgetImageProperty;
import org.eclipse.jface.internal.databinding.swt.WidgetItemsProperty;
import org.eclipse.jface.internal.databinding.swt.WidgetMaximumProperty;
@@ -63,11 +62,6 @@
return new WidgetEditableProperty();
}
- public static IWidgetValueProperty enabled()
- {
- return new WidgetEnabledProperty();
- }
-
public static IWidgetValueProperty focused()
{
return new ControlFocusedProperty();
diff --git a/examples/org.eclipse.emf.examples/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.examples/META-INF/MANIFEST.MF
index bd28719..a37778f 100644
--- a/examples/org.eclipse.emf.examples/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.examples/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.examples;singleton:=true
-Bundle-Version: 2.8.0.qualifier
+Bundle-Version: 2.9.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/examples/org.eclipse.emf.examples/about.mappings b/examples/org.eclipse.emf.examples/about.mappings
index f9d94ab..cf26020 100644
--- a/examples/org.eclipse.emf.examples/about.mappings
+++ b/examples/org.eclipse.emf.examples/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/examples/org.eclipse.emf.examples/pom.xml b/examples/org.eclipse.emf.examples/pom.xml
index d95a1f2..979d337 100644
--- a/examples/org.eclipse.emf.examples/pom.xml
+++ b/examples/org.eclipse.emf.examples/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.examples</artifactId>
- <version>2.8.0-SNAPSHOT</version>
+ <version>2.9.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/examples/org.eclipse.xsd.example/.classpath b/examples/org.eclipse.xsd.example/.classpath
new file mode 100644
index 0000000..196d49a
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.xsd.example/.externalToolBuilders/copyExample.ant b/examples/org.eclipse.xsd.example/.externalToolBuilders/copyExample.ant
new file mode 100644
index 0000000..a686f2c
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/.externalToolBuilders/copyExample.ant
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<project name="copyExample" default="main" basedir="../..">
+
+ <property name="installer" value="org.eclipse.xsd.example.installer" />
+ <import file="../../../plugins/${installer}/copyExampleLib.ant" optional="true" />
+ <basename file="${build.project}" property="project" />
+
+ <target name="main">
+ <copyExample project="${project}" />
+ </target>
+
+</project>
diff --git a/examples/org.eclipse.xsd.example/.externalToolBuilders/org.eclipse.xsd.example.launch b/examples/org.eclipse.xsd.example/.externalToolBuilders/org.eclipse.xsd.example.launch
new file mode 100644
index 0000000..050d2d6
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/.externalToolBuilders/org.eclipse.xsd.example.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<booleanAttribute key="org.eclipse.ant.uiSET_INPUTHANDLER" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/org.eclipse.xsd.example.installer/examples" type="2"/> </resources>}"/>
+<booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value=""/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/org.eclipse.xsd.example.installer/examples/org.eclipse.xsd.example/" type="2"/> <item path="/org.eclipse.xsd.example/.classpath" type="1"/> <item path="/org.eclipse.xsd.example/.externalToolBuilders" type="2"/> <item path="/org.eclipse.xsd.example/.gitignore" type="1"/> <item path="/org.eclipse.xsd.example/.project" type="1"/> <item path="/org.eclipse.xsd.example/.settings" type="2"/> <item path="/org.eclipse.xsd.example/about.html" type="1"/> <item path="/org.eclipse.xsd.example/about.ini" type="1"/> <item path="/org.eclipse.xsd.example/about.mappings" type="1"/> <item path="/org.eclipse.xsd.example/about.properties" type="1"/> <item path="/org.eclipse.xsd.example/build" type="2"/> <item path="/org.eclipse.xsd.example/build.properties" type="1"/> <item path="/org.eclipse.xsd.example/data" type="2"/> <item path="/org.eclipse.xsd.example/META-INF" type="2"/> <item path="/org.eclipse.xsd.example/modeling32.png" type="1"/> <item path="/org.eclipse.xsd.example/plugin.properties" type="1"/> <item path="/org.eclipse.xsd.example/plugin.xml" type="1"/> <item path="/org.eclipse.xsd.example/release.digest" type="1"/> <item path="/org.eclipse.xsd.example/release.properties" type="1"/> <item path="/org.eclipse.xsd.example/release.xml" type="1"/> <item path="/org.eclipse.xsd.example/src" type="2"/> </resources>}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${project_loc:/org.eclipse.xsd.example}/.externalToolBuilders/copyExample.ant"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="incremental,auto,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.project=${project_loc:/org.eclipse.xsd.example}"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+</launchConfiguration>
diff --git a/examples/org.eclipse.xsd.example/.gitignore b/examples/org.eclipse.xsd.example/.gitignore
new file mode 100644
index 0000000..3f8f9e7
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/.gitignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+*.jar
diff --git a/examples/org.eclipse.xsd.example/.project b/examples/org.eclipse.xsd.example/.project
new file mode 100644
index 0000000..55d045b
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/.project
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.example</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>auto,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/org.eclipse.xsd.example.launch</value>
+ </dictionary>
+ <dictionary>
+ <key>incclean</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd.example/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/org.eclipse.xsd.example/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.xsd.example/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..cc05150
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:02 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/examples/org.eclipse.xsd.example/META-INF/MANIFEST.MF b/examples/org.eclipse.xsd.example/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c73878e
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.example; singleton:=true
+Bundle-Version: 2.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.xsd.example
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.xsd;bundle-version="[2.19.0,3.0.0)";visibility:=reexport
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.xsd.example
diff --git a/examples/org.eclipse.xsd.example/about.html b/examples/org.eclipse.xsd.example/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples/org.eclipse.xsd.example/about.ini b/examples/org.eclipse.xsd.example/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/examples/org.eclipse.xsd.example/about.mappings b/examples/org.eclipse.xsd.example/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/examples/org.eclipse.xsd.example/about.properties b/examples/org.eclipse.xsd.example/about.properties
new file mode 100644
index 0000000..9f1a53f
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Example
+
+featureText=XSD Example\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/examples/org.eclipse.xsd.example/build.properties b/examples/org.eclipse.xsd.example/build.properties
new file mode 100644
index 0000000..5a3acde
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/build.properties
@@ -0,0 +1,15 @@
+bin.includes = about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ modeling32.png,\
+ .,\
+ data/,\
+ plugin.xml,\
+ plugin.properties,\
+ META-INF/
+output.. = bin/
+src.includes = about.html,\
+ release.*
+exclude.. = **/doc-files/**
+source.. = src/
diff --git a/examples/org.eclipse.xsd.example/data/SampleMarkup.xml b/examples/org.eclipse.xsd.example/data/SampleMarkup.xml
new file mode 100644
index 0000000..1575ff5
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/SampleMarkup.xml
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemaForSchemaContentAnnotation>
+
+<content key='element-header' markup='requires'>
+<div>
+<h1>Schema Content</h1>
+<p>
+The content is color coded to indicate the level of support; the categories are
+<span class='allows'>allows</span>,
+<span class='requires'>requires</span>,
+<span class='future'>future</span>, and
+<span class='never'>never</span>.
+
+</p>
+</div>
+</content>
+
+<content key='type-header' markup='requires'>
+<div>
+<h1>Built-in Datatypes</h1>
+<p>
+This represents a summary table the
+<a target='Part2' href='http://www.w3.org/TR/xmlschema-2/#built-in-datatypes'>hierarchy</a>
+of built-in datatypes.
+</p>
+<p>
+A <b>very preliminary</b> mapping to Java classes is shown;
+it is understood that a primitive type will be used intead of the actual class whenever such a primitive type exists.
+</p>
+</div>
+</content>
+
+
+<elementAnnotation key='all' markup='requires'>
+<div>
+This generates unordered content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='annotation' markup='allows'>
+<div>
+This may influence generation results in undefined ways.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='any' markup='never'>
+<div>
+Arbitrary element content is document centric and is best supported by DOM itself.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='anyAttribute' markup='never'>
+<div>
+Arbitrary attribute content is document centric and is best supported by DOM itself.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='appinfo' markup='allows'>
+<div>
+This may influence generation results in undefined ways.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='attribute' markup='requires'>
+<div>
+This generates simple typed content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='attributeGroup' markup='requires'>
+<div>
+This contributes attributes to complex content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='choice' markup='requires'>
+<div>
+This generates a choice of content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='complexContent' markup='requires'>
+<div>
+This generates content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='complexContent::extension' markup='requires'>
+<div>
+This contributes additional content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='complexContent::restriction' markup='requires'>
+<div>
+This restricts previously defined content; this may not fit well with programming language notions.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='complexType' markup='requires'>
+<div>
+This contributes to complex content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='documentation' markup='allows'>
+<div>
+This may influence generation results in undefined ways.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='element' markup='requires'>
+<div>
+This generates complex typed content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='enumeration' markup='requires'>
+<div>
+This generates validation checks; it could be used to generate enumerated values.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='field' markup='future'>
+<div>
+It is expected that a future version of the specification will define behavior for this.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='fractionDigits' markup='requires'>
+<div>
+This generates validation checks; it could be used to guide automatic choice of type.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='group' markup='requires'>
+<div>
+This contributes to complex content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='import' markup='requires'>
+<div>
+This directive makes other namespaces accessible.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='include' markup='requires'>
+<div>
+This directive assembles a decomposed schema.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='key' markup='future'>
+<div>
+It is expected that a future version of the specification will define behavior for this.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='keyref' markup='future'>
+<div>
+It is expected that a future version of the specification will define behavior for this.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='length' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='list' markup='requires'>
+<div>
+This defines simple content via list derivation.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='maxExclusive' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='maxInclusive' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='maxLength' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='minExclusive' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='minInclusive' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='minLength' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='notation' markup='never'>
+<div>
+Nothing is generated for notations.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='pattern' markup='requires'>
+<div>
+This generates validation checks; a regular expression library will be required by the implementation.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='redefine' markup='future'>
+<div>
+Since redefine is difficult to implement, and is little used,
+it may be ignored by a conforming implementation
+until a future time when its use becomes common.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='restriction' markup='requires'>
+<div>
+This defines simple type content via restricting derivation.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='schema' markup='requires'>
+<div>
+This generates meaning for a subset of the content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='selector' markup='future'>
+<div>
+It is expected that a future version of the specification will define behavior for this.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='sequence' markup='requires'>
+<div>
+This generates ordered content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='simpleContent' markup='requires'>
+<div>
+This contributes to simple content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='simpleContent::extension' markup='requires'>
+<div>
+This contributes to simple content via extending derivation.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='simpleContent::restriction' markup='requires'>
+<div>
+This defines simple content via restricting derivation; this may not fit well with programming language notions.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='simpleType' markup='requires'>
+<div>
+This defines simple type content.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='totalDigits' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='union' markup='requires'>
+<div>
+This defines simple type content as a union of member types.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='unique' markup='future'>
+<div>
+It is expected that a future version of the specification will define behavior for this.
+</div>
+</elementAnnotation>
+
+<elementAnnotation key='whiteSpace' markup='requires'>
+<div>
+This generates validation checks.
+</div>
+</elementAnnotation>
+
+
+<!-- Markup for attributes -->
+
+
+<attributeAnnotation key='id' markup='never'>
+<div>
+This is ignored.
+</div>
+</attributeAnnotation>
+
+<attributeAnnotation
+ key='complexType.abstract complexType.block complexType.final element.abstract element.block element.final element.nillable element.substitutionGroup schema.blockDefault schema.finalDefault'
+ markup='never'>
+<div>
+The concepts of <a target='Part1' href='http://www.w3.org/TR/xmlschema-1#xsi_type'>xsi typing</a>
+and <a target='Part1' href='http://www.w3.org/TR/xmlschema-1#xsi_nil'>xsi nil</a>
+introduce additional burdens that will be addressed at a future time.
+</div>
+</attributeAnnotation>
+
+<attributeAnnotation key='complexType.mixed complexContent.mixed' markup='never'>
+<div>
+Mixed content is document centric so all complex content is interpretted as element only.
+</div>
+</attributeAnnotation>
+
+
+
+<typeMap schemaType="anySimpleType" javaClass="java.lang.String" />
+<typeMap schemaType="anyType" javaClass="org.w3c.dom.Element" />
+<typeMap schemaType="anyListType" javaClass="java.util.List" />
+<typeMap schemaType="base64Binary" javaClass="java.lang.Byte[]" />
+<typeMap schemaType="boolean" javaClass="java.lang.Boolean" />
+<typeMap schemaType="byte" javaClass="java.lang.Byte" />
+<typeMap schemaType="date" javaClass="java.util.GregorianCalendar" />
+<typeMap schemaType="dateTime" javaClass="java.util.Date" />
+<typeMap schemaType="decimal" javaClass="java.math.BigDecimal" />
+<typeMap schemaType="double" javaClass="java.lang.Double" />
+<typeMap schemaType="float" javaClass="java.lang.Float" />
+<typeMap schemaType="hexBinary" javaClass="java.lang.Byte[]" />
+<typeMap schemaType="int" javaClass="java.lang.Integer" />
+<typeMap schemaType="integer" javaClass="java.math.BigInteger" />
+<typeMap schemaType="long" javaClass="java.lang.Long" />
+<typeMap schemaType="QName" javaClass="java.lang.String[]" />
+<typeMap schemaType="short" javaClass="java.lang.Short" />
+<typeMap schemaType="unsignedByte" javaClass="java.lang.Short" />
+<typeMap schemaType="unsignedInt" javaClass="java.lang.Long" />
+<typeMap schemaType="unsignedShort" javaClass="java.lang.Integer" />
+
+
+<content key='appendix-header' markup='requires'>
+<div>
+<h1>Overview</h1>
+
+This provides an implementation of the XML Schema Standard
+<a target='Part1' href="http://www.w3.org/TR/xmlschema-1">Part 1</a> and
+<a target='Part2' href="http://www.w3.org/TR/xmlschema-2">Part 2</a>.
+
+<a name="details"/>
+<h2>Abstract XML Schema Components Part 1</h2>
+
+The abstract XML Schema Components,
+as described in <a target='Part1' href="http://www.w3.org/TR/xmlschema-1">Part 1</a> of the Standard,
+are related according to this hierarchy:
+<p>
+<img src="ComponentHierarchy.gif" alt="Diagram of the Abstract Schema Component Hierarchy" border="0"/>
+</p>
+
+<p>
+The abstract XML Schema Components have the following defined relations:
+</p>
+<p>
+<img src="ComponentRelations.gif" alt="Diagram of the Abstract Schema Component Relations" border="0"/>
+</p>
+<p>
+This is very similar to the standard non-normative
+<a target='Part1' href="http://www.w3.org/TR/xmlschema-1/#component-diagram">Schema Components Diagram</a>.
+</p>
+
+<p>
+The abstract XML Schema Components have the following defined attributes:
+</p>
+<p>
+<img src="ComponentAttributes.gif" alt="Diagram of the Abstract Schema Component Attributes" border="0"/>
+</p>
+
+
+<h2>Abstract XML Schema Components Part 2</h2>
+
+<p>
+The abstract XML Schema Components,
+as described in <a target='Part2' href="http://www.w3.org/TR/xmlschema-2">Part 2</a> of the Standard,
+are related according to this hierarchy with these defined relations and attributes:
+</p>
+<p>
+<img src="ComponentHierarchyPart2.gif" alt="Diagram of the Abstract Schema Components for Part 2" border="0"/>
+</p>
+
+
+<h2>Abstract XML Schema Annotations</h2>
+
+The abstract XML Schema Components,
+as described in <a target='Part1' href="http://www.w3.org/TR/xmlschema-1">Part 1</a>
+and <a target='Part2' href="http://www.w3.org/TR/xmlschema-2">Part 2</a> of the Standard,
+are annotated as follows:
+<p>
+<img src="Annotations.gif" alt="Diagram of the Abstract Schema Component Annotations" border="0"/>
+</p>
+
+
+<h2>Concrete XML Schema Components</h2>
+
+<p>
+The set of abstract XML Schema Components is extended to represent that concrete syntax as follows:
+</p>
+<p>
+<img src="ConcreteComponents.gif" alt="Diagram of the Concrete Schema Components" border="0"/>
+</p>
+
+<p>
+The concrete attributes are represented as follows:
+</p>
+<p>
+<img src="ConcreteAttributes.gif" alt="Diagram of the Concrete Schema Component Attributes" border="0"/>
+</p>
+
+<p>
+The concrete containment relations are represented as follows:
+</p>
+<p>
+<img src="ConcreteContainment.gif" alt="Diagram of the Concrete Containment Relations" border="0"/>
+</p>
+
+<p>
+The following concrete components resolve to abstract components:
+</p>
+<p>
+<img src="ConcreteResolution.gif" alt="Diagram of Concrete Component Resolution" border="0"/>
+</p>
+
+
+<h1>Generator</h1>
+<p>
+The Contents and Build-in Data Types sections
+are <a target='Extra' href="XSDGenerateHTML.java">generated</a>
+using the model of the Overview section
+with the <a target='Part1' href="http://www.w3.org/TR/xmlschema-1#normative-schemaSchema">schema for schema</a>
+and a <a target='Extra' href='SampleMarkup.xml'>markup file</a> as input.
+</p>
+</div>
+</content>
+
+</schemaForSchemaContentAnnotation>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/Bad.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/Bad.xsd
new file mode 100644
index 0000000..1ddaa7f
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/Bad.xsd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<junk/>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadAttributeDeclaration.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadAttributeDeclaration.xsd
new file mode 100644
index 0000000..0834f81
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadAttributeDeclaration.xsd
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:attribute/>
+ <xsd:attribute name="bad:name"/>
+ <xsd:attribute name="badAttribute" use="optional"/>
+ <xsd:attribute name="badFixedAndDefault" type="xsd:string" fixed="x" default="y"/>
+ <xsd:attribute name="badType" type="xsd:badType"/>
+ <xsd:attribute name="badID" id="id:id" type="xsd:string"/>
+ <xsd:attribute name="badAnonymousType" type="xsd:string">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attribute name="badContent">
+ <xsd:xsimpleType>
+ <xsd:restriction base="xsd:string"/>
+ </xsd:xsimpleType>
+ </xsd:attribute>
+
+ <xsd:attribute name="badAnnotation">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:attribute>
+
+ <xsd:attribute name="badAnnotation">
+ <xsd:annotation/>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:annotation/>
+ </xsd:attribute>
+
+ <xsd:attributeGroup name="myAttributeGroup">
+ <xsd:attribute name="badConstraintForID" type="xsd:ID" default="x"/>
+ <xsd:attribute name="badConstraintForDefault" type="xsd:string" default="x" use="required"/>
+ <xsd:attribute name="badConstraintForType" type="xsd:int" default="x"/>
+ <xsd:attribute name="badAttribute" xuse="optional"/>
+ <xsd:attribute name="badUse" use="xoptional"/>
+ <xsd:attribute name="badForm" form="xqualified"/>
+ <xsd:attribute ref="this:badAttributeReference"/>
+ <xsd:attribute ref="this:okayFixedAttribute" name="badNameForReference"/>
+ <xsd:attribute ref="this:okayFixedAttribute" fixed="2"/>
+ <xsd:attribute ref="this:okayFixedAttribute" form="qualified"/>
+ <xsd:attribute ref="this:okayFixedAttribute" type="xsd:String"/>
+ <xsd:attribute ref="this:okayFixedAttribute">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
+ <xsd:attribute name="okayFixedAttribute" type="xsd:int" fixed="1"/>
+
+ <xsd:attribute name="okay">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attribute name="okayAnnotation">
+ <xsd:annotation/>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadAttributeGroupDefinition.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadAttributeGroupDefinition.xsd
new file mode 100644
index 0000000..dd16870
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadAttributeGroupDefinition.xsd
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:other="http://www.example.com/Other"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:import namespace="http://www.example.com/Other" schemaLocation="Other.xsd"/>
+
+ <xsd:attributeGroup/>
+ <xsd:attributeGroup ref="this:okayAttributeGroup"/>
+ <xsd:attributeGroup name="bad:name"/>
+ <xsd:attributeGroup name="badAttribute" use="optional"/>
+ <xsd:attributeGroup name="badID" id="id:id"/>
+
+ <xsd:attributeGroup name="badContent">
+ <xsd:xattribute/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAnnotation">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAnnotation">
+ <xsd:annotation/>
+ <xsd:attribute name="a"/>
+ <xsd:annotation/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badWildcardIntersection">
+ <xsd:attributeGroup ref="this:AG"/>
+ <xsd:attributeGroup ref="other:AG"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badCircular">
+ <xsd:attributeGroup ref="this:badCircular"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAttributes">
+ <xsd:attribute name="a"/>
+ <xsd:attribute name="a"/>
+ <xsd:attribute name="b" type="xsd:ID"/>
+ <xsd:attribute name="c" type="xsd:ID"/>
+ <xsd:attributeGroup ref="this:badRef"/>
+ <xsd:attributeGroup name="badNested"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="okayAttributeGroup">
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="AG">
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadComplexTypeDefinition.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadComplexTypeDefinition.xsd
new file mode 100644
index 0000000..ab0e249
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadComplexTypeDefinition.xsd
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:other="http://www.example.com/Other"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:import namespace="http://www.example.com/Other" schemaLocation="Other.xsd"/>
+
+ <xsd:complexType/>
+ <xsd:complexType name="bad:name"/>
+ <xsd:complexType name="badAbstract" abstract="fasle"/>
+ <xsd:complexType name="badBlock" block="resiction"/>
+ <xsd:complexType name="badFinal" final="xtension"/>
+ <xsd:complexType name="badID" id="id:id"/>
+ <xsd:complexType name="badMixed" mixed="fasle"/>
+
+ <xsd:complexType name="badContent">
+ <xsd:bad/>
+ </xsd:complexType>
+
+ <xsd:complexType name="badEmptyComplexContent">
+ <xsd:complexContent>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badComplexContent">
+ <xsd:complexContent>
+ <xsd:bad/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badAnnotations">
+ <xsd:complexContent>
+ <xsd:extension>
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badBase">
+ <xsd:complexContent>
+ <xsd:extension base="badTypeReference">
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badSimpleBaseForComplexContent">
+ <xsd:complexContent>
+ <xsd:extension base="xsd:string">
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badSimpleBaseForRestrictionSimpleContent">
+ <xsd:simpleContent>
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badComplexBaseForRestrictionSimpleContent">
+ <xsd:simpleContent>
+ <xsd:restriction base="this:okayTrivialComplexType">
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badWildcardIntersection">
+ <xsd:attributeGroup ref="this:AG"/>
+ <xsd:attributeGroup ref="other:AG"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="badDuplicateIDAttributes">
+ <xsd:attribute name="a"/>
+ <xsd:attribute name="x" type="xsd:ID"/>
+ <xsd:attribute name="a"/>
+ <xsd:attribute name="y" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="badCircularType">
+ <xsd:complexContent>
+ <xsd:restriction base="this:badCircularType">
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badFinalExtension">
+ <xsd:complexContent>
+ <xsd:extension base="this:okayFinalTrivialComplexType">
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badComplexExtension">
+ <xsd:complexContent>
+ <xsd:extension base="this:okayComplexTypeSimple">
+ <xsd:sequence>
+ <xsd:element name="x"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badAttributeType">
+ <xsd:complexContent>
+ <xsd:extension base="this:okayComplexTypeComplex">
+ <xsd:attribute name="a" type="xsd:int"/>
+ <xsd:anyAttribute namespace="http://c.x"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badComplexExtensionMixed" mixed="false">
+ <xsd:complexContent>
+ <xsd:extension base="this:okayComplexTypeComplex">
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badFinalRestriction">
+ <xsd:simpleContent>
+ <xsd:restriction base="this:okayComplexTypeSimple">
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badRestrictedAttributeType">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayComplexTypeComplex">
+ <xsd:attribute name="a" type="xsd:int"/>
+ <xsd:attribute name="b">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="1*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute ref="other:A"/>
+ <xsd:attribute name="B" type="xsd:int"/>
+ <xsd:anyAttribute namespace="http://c"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badSimpleBaseForRestrictionSimpleContent">
+ <xsd:simpleContent>
+ <xsd:restriction base="this:okayComplexTypeSimpleWithAttribute">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:long">
+ <xsd:pattern value="11"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:attribute name="b" type="xsd:string" use="required"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badComplexBaseForRestrictionSimpleContent">
+ <xsd:simpleContent>
+ <xsd:restriction base="this:okayComplexTypeComplex">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:long">
+ <xsd:pattern value="11"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:attribute name="b" type="xsd:string" use="required"/>
+ <xsd:attribute name="c" type="xsd:string" use="required"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badEmptyRestrictionOfSimpleContent">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeSimple">
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badComplexRestrictionOfSimpleContent">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeSimple">
+ <xsd:sequence>
+ <xsd:element name="e"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badMixedRestrictionOfComplexContent" mixed="true">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e1" nillable="true"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badNonRestrictionOfComplexContent">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e1" nillable="true"/>
+ <xsd:element name="e2" nillable="true"/>
+ <xsd:element name="e3" nillable="true"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badRestrictionOfComplexContent">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e2" nillable="true"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badNotNillableRestrictionOfComplexContent">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e1"/>
+ <xsd:element name="e2" nillable="true"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badNotRestrictedFixedComplexTypeComplex">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayFixedComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e" type="xsd:token" fixed="xy"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badNotRestrictedTypeComplexTypeComplex">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayFixedComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e" block="substitution" type="xsd:string" fixed="xx"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badNotRestrictedBlockComplexTypeComplex">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayRestrictedComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e" type="xsd:token" fixed="xx"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badAnySimpleTypeComplexType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:anySimpleType">
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:attributeGroup name="AG">
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+ <xsd:complexType name="okayTrivialComplexType"/>
+
+ <xsd:complexType name="okayFinalTrivialComplexType" final="#all"/>
+
+ <xsd:complexType name="okayTrivialComplexTypeSimple">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int">
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayTrivialComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e1" nillable="true"/>
+ <xsd:element name="e2" nillable="true"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayRestrictionOfComplexContent">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayTrivialComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e1" nillable="true"/>
+ <xsd:element name="e2" nillable="true"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayComplexTypeSimple" abstract="true" block="extension" final="restriction" id="x" mixed="true">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int">
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayComplexTypeSimpleWithAttribute">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int">
+ <xsd:attribute name="a" type="xsd:string"/>
+ <xsd:attribute name="b" type="xsd:string" use="required"/>
+ <xsd:anyAttribute namespace="http://a http://b"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayComplexTypeComplex" abstract="true" block="extension" final="" id="x" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="e"/>
+ </xsd:sequence>
+ <xsd:attribute name="a" type="xsd:string"/>
+ <xsd:attribute name="b" type="xsd:string" use="required"/>
+ <xsd:attribute name="c" type="xsd:string" use="required"/>
+ <xsd:anyAttribute namespace="http://a http://b http://www.example.com/Other "/>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayFixedComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e" type="xsd:token" fixed="xx"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayRestrictedComplexTypeComplex">
+ <xsd:complexContent>
+ <xsd:restriction base="this:okayFixedComplexTypeComplex">
+ <xsd:sequence>
+ <xsd:element name="e" block="substitution" fixed="xx">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="x*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadDataType.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadDataType.xsd
new file mode 100644
index 0000000..6c67e19
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadDataType.xsd
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema xmlns:this="http://www.example.com/Bad" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/Bad">
+
+ <xsd:simpleType name="badBoolean">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:boolean"/>
+ </xsd:simpleType>
+ <xsd:enumeration value="true false"/>
+ <xsd:enumeration value="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badBase64Binary">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:base64Binary">
+ <xsd:enumeration value="Aa11"/>
+ <xsd:enumeration value="Aa1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:enumeration value="1.0"/>
+ <xsd:enumeration value="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badDouble">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#double">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:double">
+ <xsd:enumeration value="1.0"/>
+ <xsd:enumeration value="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFloat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#float">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:float">
+ <xsd:enumeration value="1.0"/>
+ <xsd:enumeration value="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badHexBinary">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#hexBinary">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:enumeration value="fa"/>
+ <xsd:enumeration value="ha"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badDuration">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#duration">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:duration">
+ <xsd:enumeration value="P-1347M"/>
+ <xsd:enumeration value="P1347Y"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badDate">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#date">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:date">
+ <xsd:enumeration value="1999-10-32"/>
+ <xsd:enumeration value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#time">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:time">
+ <xsd:enumeration value="13:20:00-25:00"/>
+ <xsd:enumeration value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badDateTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:enumeration value="1999-05-31T13:20:00-25:00"/>
+ <xsd:enumeration value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badGYear">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:enumeration value="199x"/>
+ <xsd:enumeration value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badGMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:enumeration value="--13--"/>
+ <xsd:enumeration value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badGYearMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:enumeration value="1999-13"/>
+ <xsd:enumeration value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badGDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:enumeration value="---32"/>
+ <xsd:enumeration value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badGMonthDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:gMonthDay">
+ <xsd:enumeration value="--10-32"/>
+ <xsd:enumeration value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badAnyURI">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:anyURI">
+ <xsd:enumeration value=":##:"/>
+ <xsd:enumeration value="."/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badQName">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#QName">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:QName">
+ <xsd:enumeration value="xsd::string"/>
+ <xsd:enumeration value="xsd:string"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badNOTATION">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:NOTATION">
+ <xsd:enumeration value="Notation:Bad:"/>
+ <xsd:enumeration value="NotationGood"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="okayString">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#string">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadElementDeclaration.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadElementDeclaration.xsd
new file mode 100644
index 0000000..6be0838
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadElementDeclaration.xsd
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element/>
+ <xsd:element name="bad:name"/>
+ <xsd:element name="badAbstract" abstract="fasle"/>
+ <xsd:element name="badNillable" nillable="fasle"/>
+ <xsd:element name="badFinal" final="fasle"/>
+ <xsd:element name="badBlock" block="something"/>
+ <xsd:element name="badAttribute" form="qualified"/>
+ <xsd:element name="badFixedAndDefault" type="xsd:string" fixed="x" default="y"/>
+ <xsd:element name="badType" type="xsd:badType"/>
+ <xsd:element name="badID" id="id:id" type="xsd:string"/>
+ <xsd:element name="badAnonymousType" type="xsd:string">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+
+ <xsd:element name="badContent">
+ <xsd:xsimpleType>
+ <xsd:restriction base="xsd:string"/>
+ </xsd:xsimpleType>
+ </xsd:element>
+
+ <xsd:element name="badAnnotation">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:element>
+
+ <xsd:element name="badAnnotation">
+ <xsd:annotation/>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:annotation/>
+ </xsd:element>
+
+ <xsd:element name="badSubstitutionGroupReference" substitutionGroup="this:badElementReference"/>
+
+ <xsd:group name="myModelGroup">
+ <xsd:sequence>
+ <xsd:element name="badConstraintForID" type="xsd:ID" default="x"/>
+ <xsd:element name="badConstraintForDefault" type="xsd:string" default="x" use="required"/>
+ <xsd:element name="badConstraintForSimpleType" type="xsd:int" default="x"/>
+ <xsd:element name="badConstraintForComplexSimpleType" default="2">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:restriction base="xsd:int">
+ <xsd:pattern value="1*"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="badAttribute" xuse="optional"/>
+ <xsd:element name="badUse" use="xoptional"/>
+ <xsd:element name="badForm" form="xqualified"/>
+ <xsd:element name="badMaxOccurs" maxOccurs="unbinded"/>
+ <xsd:element name="badMinOccurs" minOccurs="-1"/>
+ <xsd:element ref="this:badElementReference"/>
+ <xsd:element ref="this:okayFixedAttribute" name="badNameForReference"/>
+ <xsd:element ref="this:okayFixedAttribute" nillable="true"/>
+ <xsd:element ref="this:okayFixedAttribute" default="1"/>
+ <xsd:element ref="this:okayFixedAttribute" fixed="1"/>
+ <xsd:element ref="this:okayFixedAttribute" block=""/>
+ <xsd:element ref="this:okayFixedAttribute" form="qualified"/>
+ <xsd:element ref="this:okayFixedAttribute" type="xsd:String"/>
+ <xsd:element ref="this:okayFixedAttribute">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="okayComplexComplex" default="2">
+ <xsd:complexType>
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="badSimpleRestriction" substitutionGroup="this:okayNoRestriction">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:int">
+ <xsd:pattern value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+
+ <xsd:element name="badComplexRestriction" substitutionGroup="this:okayNoRestriction">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:restriction base="xsd:int">
+ <xsd:pattern value="1"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="badUnionRestriction" substitutionGroup="this:okayUnion">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:pattern value="1.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+
+ <xsd:element name="okayFixedAttribute" type="xsd:int" fixed="1"/>
+
+ <xsd:element name="okayNoRestriction" final="restriction" type="xsd:int"/>
+
+ <xsd:element name="okaySimple">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+
+ <xsd:element name="okayUnion">
+ <xsd:simpleType>
+ <xsd:union memberTypes="xsd:string xsd:int"/>
+ </xsd:simpleType>
+ </xsd:element>
+
+ <xsd:element name="okayUnionRestriction" substitutionGroup="this:okayUnion">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:int">
+ <xsd:pattern value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+
+ <xsd:element name="okayComplexSimple">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="okayComplexComplex" default="x">
+ <xsd:complexType mixed="true">
+ <xsd:choice>
+ <xsd:element name="x"/>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="okayAnnotation">
+ <xsd:annotation/>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadEnumerationFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadEnumerationFacet.xsd
new file mode 100644
index 0000000..ddc5e78
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadEnumerationFacet.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:anySimpleType">
+ <xsd:enumeration value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badEnumerationFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#enumeration-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="0" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badEnumerationFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#enumeration-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badEnumerationFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#enumeration-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:enumeration value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badEnumerationFacetApplication">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#enumeration-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a"/>
+ <xsd:enumeration value="aa"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadFractionDigitsFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadFractionDigitsFacet.xsd
new file mode 100644
index 0000000..c3ade5b
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadFractionDigitsFacet.xsd
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:fractionDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="1"/>
+ <xsd:fractionDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="1" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="-1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="1" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetWithFractionDigits">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-less-than-equal-to-totalDigits">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="1"/>
+ <xsd:fractionDigits value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#fractionDigits-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:fractionDigits value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-fractionDigits">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:fractionDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badFractionDigitsFacetAppliedToDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-fractionDigits-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:fractionDigits value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="0.1234"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadIdentityConstraintDefinition.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadIdentityConstraintDefinition.xsd
new file mode 100644
index 0000000..7655a6a
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadIdentityConstraintDefinition.xsd
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="badKeys">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="x"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:key/>
+ <xsd:key name="badKeyAttribute" x="x"/>
+ <xsd:key name="badKeyID" id="id:badKeyID"/>
+ <xsd:key name="badKeyAnnotation">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:key>
+ <xsd:key name="badKeyNoField">
+ <xsd:selector/>
+ </xsd:key>
+ <xsd:key name="badKeyEmptySelectorAndField">
+ <xsd:selector x="x"/>
+ <xsd:field x="x"/>
+ </xsd:key>
+ <xsd:key name="badKeyXPaths">
+ <xsd:selector xpath="1"/>
+ <xsd:field xpath="2"/>
+ </xsd:key>
+ <xsd:key name="badKeySelectorFieldContents">
+ <xsd:selector xpath="x">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:selector>
+ <xsd:field xpath=".">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:field>
+ </xsd:key>
+ </xsd:element>
+
+ <xsd:element name="badUniques">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="x"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:unique/>
+ <xsd:unique name="badUniqueAttribute" x="x"/>
+ <xsd:unique name="badUniqueID" id="id:badUniqueID"/>
+ <xsd:unique name="badUniqueAnnotation">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:unique>
+ <xsd:unique name="badUniqueNoField">
+ <xsd:selector/>
+ </xsd:unique>
+ <xsd:unique name="badUniqueEmptySelectorAndField">
+ <xsd:selector x="x"/>
+ <xsd:field x="x"/>
+ </xsd:unique>
+ <xsd:unique name="badUniqueXPaths">
+ <xsd:selector xpath="1"/>
+ <xsd:field xpath="2"/>
+ </xsd:unique>
+ <xsd:unique name="badUniqueSelectorFieldContents">
+ <xsd:selector xpath="x">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:selector>
+ <xsd:field xpath=".">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:field>
+ </xsd:unique>
+ </xsd:element>
+
+ <xsd:element name="badKeyRefs">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="x"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:keyref/>
+ <xsd:keyref name="badKeyRefAttribute" refer="this:badKeyAttribute" x="x"/>
+ <xsd:keyref name="badKeyRefID" refer="this:badKeyID" id="id:badKeyRefID"/>
+ <xsd:keyref name="badKeyRefAnnotation" refer="this:badKeyAnnotation" >
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:keyref>
+ <xsd:keyref name="badKeyRefNoField" refer="this:badKeyNoField">
+ <xsd:selector/>
+ </xsd:keyref>
+ <xsd:keyref name="badKeyRefEmptySelectorAndField" refer="this:badKeyEmptySelectorAndField">
+ <xsd:selector x="x"/>
+ <xsd:field x="x"/>
+ </xsd:keyref>
+ <xsd:keyref name="badKeyRefXPaths" refer="this:badKeyXPaths">
+ <xsd:selector xpath="1"/>
+ <xsd:field xpath="2"/>
+ </xsd:keyref>
+ <xsd:keyref name="badKeyRefSelectorFieldContents" refer="this:badKeySelectorFieldContents">
+ <xsd:selector xpath="x">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:selector>
+ <xsd:field xpath=".">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:field>
+ <xsd:field xpath=".">
+ <xsd:annotation/>
+ </xsd:field>
+ </xsd:keyref>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadLengthFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadLengthFacet.xsd
new file mode 100644
index 0000000..4308f22
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadLengthFacet.xsd
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:length value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="0"/>
+ <xsd:length value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:length/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="-1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetWithMinLengthOrMaxLength">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-minLength-maxLength">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="2"/>
+ <xsd:length value="2"/>
+ <xsd:maxLength value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#length-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:length value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-length">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:length value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="badLengthFacetAppliedToString">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-length-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="abcd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetAppliedToList">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-length-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:length value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a b c d"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetAppliedToBase64">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-length-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:base64Binary">
+ <xsd:length value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="Aa11Bb22Cc33Dd44"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badLengthFacetAppliedToHexBinary">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-length-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a1b2c3d4"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxExclusiveFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxExclusiveFacet.xsd
new file mode 100644
index 0000000..f2a8bd1
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxExclusiveFacet.xsd
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="0"/>
+ <xsd:maxExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="1"/>
+ <xsd:maxExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxExclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetRestrictionWithBaseMinExclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetRestrictionWithMinInclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ <xsd:minInclusive value="2.000001"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-maxExclusive">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxExclusive value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToDouble">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:double">
+ <xsd:maxExclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToFloat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:maxExclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToDuration">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToDate">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxExclusive value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxExclusive value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToDateTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxExclusive value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToGYear">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:maxExclusive value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToGMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:maxExclusive value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToGYearMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:maxExclusive value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToGDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:maxExclusive value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxExclusiveFacetAppliedToGMonthDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonthDay">
+ <xsd:maxExclusive value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="okayMaxExclusiveFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="okayMaxExclusiveFacetRestrictionWithMinExclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxInclusiveFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxInclusiveFacet.xsd
new file mode 100644
index 0000000..7f572f2
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxInclusiveFacet.xsd
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="0"/>
+ <xsd:maxInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxInclusive-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxInclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxInclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-maxInclusive">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxInclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="4"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToDouble">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:double">
+ <xsd:maxInclusive value="2.9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToFloat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:maxInclusive value="2.9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToDuration">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="P2D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToDate">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxInclusive value="1999-10-25"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxInclusive value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="13:20:00-05:01"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToDateTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxInclusive value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-05-31T13:20:00-05:01"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToGYear">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:maxInclusive value="1998"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToGMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:maxInclusive value="--11--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToGYearMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:maxInclusive value="1999-11"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToGDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:maxInclusive value="---30"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxInclusiveFacetAppliedToGMonthDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonthDay">
+ <xsd:maxInclusive value="--10-30"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxLengthFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxLengthFacet.xsd
new file mode 100644
index 0000000..e69d6eb
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadMaxLengthFacet.xsd
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxLength value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="0"/>
+ <xsd:maxLength value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="-1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxLength-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#maxLength-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-maxLength">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:maxLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetAppliedToString">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="abcd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetAppliedToList">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:maxLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a b c d"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetAppliedToBase64">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:base64Binary">
+ <xsd:maxLength value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="Aa11Bb22Cc33Dd44"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMaxLengthFacetAppliedToHexBinary">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:maxLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a1b2c3d4"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadMinExclusiveFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadMinExclusiveFacet.xsd
new file mode 100644
index 0000000..b7efbad
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadMinExclusiveFacet.xsd
@@ -0,0 +1,519 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="0"/>
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="1"/>
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minExclusive value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRestrictionWithBaseMaxExclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRestrictionWithMaxInclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxInclusive value="2"/>
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRestrictionWithMaxExclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ <xsd:minExclusive value="2.001"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-minExclusive">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minExclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDouble">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:double">
+ <xsd:maxExclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToFloat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:maxExclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDuration">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDate">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxExclusive value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxExclusive value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDateTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxExclusive value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGYear">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:maxExclusive value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:maxExclusive value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGYearMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:maxExclusive value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:maxExclusive value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGMonthDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-maxExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonthDay">
+ <xsd:maxExclusive value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDouble">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:double">
+ <xsd:minExclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToFloat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:minExclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDuration">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:minExclusive value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDate">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:minExclusive value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:minExclusive value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToDateTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:minExclusive value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGYear">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:minExclusive value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:minExclusive value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGYearMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:minExclusive value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:minExclusive value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinExclusiveFacetAppliedToGMonthDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minExclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonthDay">
+ <xsd:minExclusive value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="okayMinExclusiveFacetRestrictionWithMaxExclusive">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:maxExclusive value="2"/>
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="okayMinExclusiveFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minExclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minExclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadMinInclusiveFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadMinInclusiveFacet.xsd
new file mode 100644
index 0000000..1baa478
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadMinInclusiveFacet.xsd
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="0"/>
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minInclusive-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minInclusive-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minInclusive-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minInclusive value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="badMinInclusiveFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-minInclusive">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minInclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToDouble">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:double">
+ <xsd:minInclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="2.9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToFloat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:minInclusive value="3.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="2.9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToDuration">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:minInclusive value="P2D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="P1D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToDate">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:minInclusive value="1999-10-26"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-10-25"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:minInclusive value="13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="13:20:00-04:59"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToDateTime">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:minInclusive value="1999-05-31T13:20:00-05:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-05-31T13:20:00-04:59"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToGYear">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:minInclusive value="1999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1998"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToGMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:minInclusive value="--12--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--11--"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToGYearMonth">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:minInclusive value="1999-12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1999-11"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToGDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:minInclusive value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="---30"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinInclusiveFacetAppliedToGMonthDay">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minInclusive-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonthDay">
+ <xsd:minInclusive value="--10-31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="--10-30"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadMinLengthFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadMinLengthFacet.xsd
new file mode 100644
index 0000000..4f87c1c
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadMinLengthFacet.xsd
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minLength value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="0"/>
+ <xsd:minLength value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="0" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="-1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="0" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetWithMaxLength">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-less-than-equal-to-maxLength">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="3"/>
+ <xsd:maxLength value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#minLength-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-minLength">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:minLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetAppliedToString">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:minLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="ab"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetAppliedToList">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:minLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a b"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetAppliedToBase64">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:base64Binary">
+ <xsd:minLength value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="Aa11Bb22"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badMinLengthFacetAppliedToHexBinary">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-minLength-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:minLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a1b2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadModelGroup.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadModelGroup.xsd
new file mode 100644
index 0000000..b55fb10
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadModelGroup.xsd
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:other="http://www.example.com/Other"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:import namespace="http://www.example.com/Other" schemaLocation="Other.xsd"/>
+
+ <xsd:group name="badAttribute">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badID">
+ <xsd:sequence id="id:id">
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badAllContent">
+ <xsd:all>
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:all>
+ </xsd:group>
+
+ <xsd:group name="badSequenceContent">
+ <xsd:sequence>
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badNestedAll">
+ <xsd:sequence>
+ <xsd:all minOccurs="1" maxOccurs="1">
+ </xsd:all>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badSequencebounds">
+ <xsd:sequence>
+ <xsd:sequence minOccurs="-1" maxOccurs="unbinded">
+ </xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:complexType name="badAllBounds">
+ <xsd:all minOccurs="2" maxOccurs="2">
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="badAllElements">
+ <xsd:all>
+ <xsd:element name="e1" maxOccurs="2"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="badUPAElements">
+ <xsd:sequence>
+ <xsd:element name="e1" minOccurs="0"/>
+ <xsd:element name="e1" minOccurs="1" maxOccurs="2"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="badUPAElementWildcard">
+ <xsd:choice>
+ <xsd:element ref="other:E"/>
+ <xsd:any namespace="http://www.example.com/Other"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="badUPAWildcards">
+ <xsd:choice>
+ <xsd:any namespace="http://www.example.com/Other"/>
+ <xsd:any namespace="##other"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="badInconsistentElements">
+ <xsd:sequence>
+ <xsd:element name="e1" type="xsd:int"/>
+ <xsd:element name="e1" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="badMinOccurs">
+ <xsd:sequence>
+ <xsd:element name="e1" minOccurs="2" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayAllElements">
+ <xsd:all>
+ <xsd:element name="e1" maxOccurs="1"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="okayAllElements2">
+ <xsd:complexContent>
+ <xsd:extension base="this:okayAllElements">
+ <xsd:all>
+ <xsd:element name="e2" maxOccurs="1"/>
+ </xsd:all>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadModelGroupDefinition.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadModelGroupDefinition.xsd
new file mode 100644
index 0000000..aa0df93
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadModelGroupDefinition.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:other="http://www.example.com/Other"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:import namespace="http://www.example.com/Other" schemaLocation="Other.xsd"/>
+
+ <xsd:group>
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="bad:name">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="badRef" ref="this:okayGroup">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="badID" id="id:id">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badNoContent">
+ </xsd:group>
+
+ <xsd:group name="badContent">
+ <xsd:bad/>
+ </xsd:group>
+
+ <xsd:group name="badCircular">
+ <xsd:sequence>
+ <xsd:group ref="this:badCircular"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="okayGroup">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadNotationDeclaration.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadNotationDeclaration.xsd
new file mode 100644
index 0000000..09b0ac5
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadNotationDeclaration.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:notation/>
+ <xsd:notation name="badNoPublic"/>
+ <xsd:notation name="bad:name" public="x"/>
+ <xsd:notation name="badAttribute" x="optional" public="x"/>
+ <xsd:notation name="badID" id="id:id" public="x"/>
+
+ <xsd:notation name="badContent" public="x">
+ <xsd:bad/>
+ </xsd:notation>
+
+ <xsd:notation name="badAnnotation" public="x">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:notation>
+
+ <xsd:notation name="badAnnotation" public="##" system="##"/>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadPatternFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadPatternFacet.xsd
new file mode 100644
index 0000000..79315a6
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadPatternFacet.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:anySimpleType">
+ <xsd:pattern value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badPatternFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#pattern-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badPatternFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#pattern-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badPatternFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#pattern-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="a\"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badPatternFacetApplication">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#pattern-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="abcd"/>
+ <xsd:enumeration value="bcd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadSchema.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadSchema.xsd
new file mode 100644
index 0000000..4b3409a
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadSchema.xsd
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad##"
+ xmlns:this="http://www.example.com/Bad##"
+ xmlns:other="http://www.example.com/Other"
+ xmlns:notOther="http://www.example.com/NotOther"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ id="id:schema"
+ bad="bad"
+ attributeFormDefault="qalified"
+ blockDefault="restiction"
+ elementFormDefault="qalified"
+ finalDefault="exention"
+ version="1">
+
+ <xsd:annotation/>
+ <xsd:annotation>
+ <xsd:bad/>
+ <xsd:appinfo/>
+ <xsd:documentation/>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.example.com/Bad##"/>
+ <xsd:import namespace="http://www.example.com/NotOther" schemaLocation="Other.xsd"/>
+ <xsd:import namespace="http://www.example.com/NotUsed"/>
+ <xsd:import/>
+
+ <xsd:include/>
+ <xsd:include id="id:include" schemaLocation="BadSchema.xsd"/>
+ <xsd:include schemaLocation="BadSchema.xsd">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:include>
+ <xsd:include schemaLocation="Other.xsd"/>
+ <xsd:include schemaLocation="Nothing.xsd"/>
+ <xsd:include schemaLocation="Bad.xsd"/>
+
+ <xsd:redefine/>
+ <xsd:redefine id="id:redefine" schemaLocation="BadSchema.xsd"/>
+ <xsd:redefine schemaLocation="BadSchema.xsd">
+ <xsd:bad/>
+ </xsd:redefine>
+ <xsd:redefine schemaLocation="Other.xsd"/>
+ <xsd:redefine schemaLocation="Nothing.xsd"/>
+ <xsd:redefine schemaLocation="Nothing.xsd">
+ <xsd:complexType name="T">
+ <xsd:complexContent>
+ <xsd:extension base="this:T">
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:redefine>
+
+ <xsd:redefine schemaLocation="Okay.xsd">
+ <xsd:simpleType name="S">
+ <xsd:restriction base="this:S">
+ <xsd:pattern value="..*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT">
+ <xsd:complexContent>
+ <xsd:restriction base="this:CT">
+ <xsd:sequence>
+ <xsd:element name="bad"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:group name="G">
+ <xsd:sequence>
+ <xsd:group ref="this:G" minOccurs="0"/>
+ <xsd:group ref="this:G"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="GG">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="G1">
+ <xsd:sequence>
+ <xsd:element name="bad"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:attributeGroup name="AG">
+ <xsd:attributeGroup ref="this:AG"/>
+ <xsd:attributeGroup ref="this:AG"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AGG">
+ <xsd:attributeGroup ref="this:AGG"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG1">
+ <xsd:attribute ref="this:A"/>
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+ <xsd:simpleType name="ST">
+ <xsd:restriction base="this:ST">
+ <xsd:pattern value="..*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:group name="G2">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+ </xsd:redefine>
+
+ <xsd:element name="e"/>
+ <xsd:element name="e"/>
+
+ <xsd:import namespace="http://www.example.com/Other" schemaLocation="Other.xsd"/>
+
+ <xsd:attribute name="a"/>
+ <xsd:attribute name="a"/>
+
+ <xsd:attributeGroup name="ag"/>
+ <xsd:attributeGroup name="ag"/>
+
+ <xsd:group name="g">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="g">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:complexType name="t"/>
+ <xsd:complexType name="t"/>
+
+ <xsd:notation name="n" public="x"/>
+ <xsd:notation name="n" public="x"/>
+
+ <xsd:element name="e1">
+ <xsd:key name="k">
+ <xsd:selector xpath="."/>
+ <xsd:field xpath="."/>
+ </xsd:key>
+ </xsd:element>
+ <xsd:element name="e2">
+ <xsd:key name="k">
+ <xsd:selector xpath="."/>
+ <xsd:field xpath="."/>
+ </xsd:key>
+ </xsd:element>
+
+ <xsd:element name="e2" type="notOther:Type"/>
+
+</xsd:schema>
+
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadSimpleTypeDefinition.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadSimpleTypeDefinition.xsd
new file mode 100644
index 0000000..f6ae9fd
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadSimpleTypeDefinition.xsd
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType/>
+ <xsd:simpleType name="badContent" id="id:id">
+ <xsd:bad/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badList">
+ <xsd:list id="id:list"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badListContent" final="xtension">
+ <xsd:list>
+ <xsd:bad/>
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badListBaseForContents">
+ <xsd:list itemType="xsd:int">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:int">
+ <xsd:pattern value="1.*1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badUnion">
+ <xsd:union id="id:union"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badUnionContent">
+ <xsd:union>
+ <xsd:bad/>
+ </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badRestriction">
+ <xsd:restriction id="id:restriction"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badRestrictionContent">
+ <xsd:restriction>
+ <xsd:bad/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badRestrictionBaseForContents">
+ <xsd:restriction base="xsd:int">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:int">
+ <xsd:pattern value="1.*1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badDuplicateFacets">
+ <xsd:restriction base="xsd:int">
+ <xsd:maxExclusive value="10"/>
+ <xsd:maxExclusive value="10"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badListEmpty" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-list-of-atomic">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:list>
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badListOfList" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-list-of-atomic">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:list>
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:string">
+ </xsd:list>
+ </xsd:simpleType>
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badUnionCircular" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-list-of-atomic">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:list>
+ <xsd:simpleType>
+ <xsd:union memberTypes="xsd:string this:badUnionCircular">
+ </xsd:union>
+ </xsd:simpleType>
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badAtomicCircular" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-list-of-atomic">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="this:badAtomicCircular">
+ <xsd:pattern value="(ab)*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badListCircular" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-list-of-atomic">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:list>
+ <xsd:simpleType>
+ <xsd:union memberTypes="xsd:string this:badListCircular">
+ </xsd:union>
+ </xsd:simpleType>
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:complexType name="badSimpleComplexType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int" id="xx:xx">
+ <xsd:pattern value="1*"/>
+ <xsd:attribute name="a"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="badOtherSimpleComplexType">
+ <xsd:simpleContent>
+ <xsd:restriction base="this:badSimpleComplexType" id="xx:xx">
+ <xsd:pattern value="1*">
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:pattern>
+ <xsd:attribute name="a"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="badAnySimpleTypeAtomic">
+ <xsd:restriction base="xsd:anySimpleType">
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badAnySimpleTypeList">
+ <xsd:list itemType="xsd:anySimpleType">
+ </xsd:list>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badAnySimpleTypeUnion">
+ <xsd:union memberTypes="xsd:anySimpleType">
+ </xsd:union>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadTotalDigitsFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadTotalDigitsFacet.xsd
new file mode 100644
index 0000000..f58b83f
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadTotalDigitsFacet.xsd
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:totalDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#totalDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="1"/>
+ <xsd:totalDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#totalDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="1" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#totalDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#totalDigits-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#totalDigits-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="1" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#totalDigits-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:totalDigits value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-totalDigits">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="2" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:totalDigits value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badTotalDigitsFacetAppliedToDecimal">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-totalDigits-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="1234"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadWhiteSpaceFacet.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadWhiteSpaceFacet.xsd
new file mode 100644
index 0000000..65d7502
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadWhiteSpaceFacet.xsd
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="badFacetForType" >
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cos-applicable-facets">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:anySimpleType">
+ <xsd:whiteSpace value="preserve"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetRepeat">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#whiteSpace-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="preserve"/>
+ <xsd:whiteSpace value="preserve"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetExtraAttribute">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#whiteSpace-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="preserve" bad="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetMissingValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#whiteSpace-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetValue">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#whiteSpace-value">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#whiteSpace-fixed">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="collapse" fixed="bad"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetRestriction">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#whiteSpace-valid-restriction">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="replace"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:whiteSpace value="preserve"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetRestrictionFixed">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#dc-whiteSpace">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="replace" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:whiteSpace value="collapse"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="badWhiteSpaceFacetAppliedToWithPatternWithCollapse">
+ <xsd:annotation>
+ <xsd:documentation source="http://www.w3.org/TR/xmlschema-2/#cvc-whiteSpace-valid">
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="a a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:enumeration value="a a"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/BadWildcard.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/BadWildcard.xsd
new file mode 100644
index 0000000..1123a19
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/BadWildcard.xsd
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Bad"
+ xmlns:this="http://www.example.com/Bad"
+ xmlns:other="http://www.example.com/Other"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:import namespace="http://www.example.com/Other" schemaLocation="Other.xsd"/>
+
+ <xsd:attributeGroup name="badAttributeWildcardAttribute">
+ <xsd:anyAttribute xnamespace="http://www.example.com/Other"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAttributeWildcardID">
+ <xsd:anyAttribute id="id:id"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAttributeWildcardAnnotation">
+ <xsd:anyAttribute>
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:anyAttribute>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAttributeWildcardProcessContents">
+ <xsd:anyAttribute processContents="lex"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="badAttributeWildcardNamespace">
+ <xsd:anyAttribute namespace="http://www.example.com/##"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="badElementWildcardAttribute">
+ <xsd:sequence>
+ <xsd:any xnamespace="http://www.example.com/Other"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badElementWildcardID">
+ <xsd:sequence>
+ <xsd:any id="id:id"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badElementWildcardAnnotation">
+ <xsd:sequence>
+ <xsd:any>
+ <xsd:annotation/>
+ <xsd:annotation/>
+ </xsd:any>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badElementWildcardProcessContents">
+ <xsd:sequence>
+ <xsd:any processContents="lex"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="badElementWildcardNamespace">
+ <xsd:sequence>
+ <xsd:any namespace="http://www.example.com/##"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:attributeGroup name="okayAttributeWildcard">
+ <xsd:anyAttribute namespace="http://www.example.com/Other"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="okayElementWildcard">
+ <xsd:sequence>
+ <xsd:any namespace="http://www.example.com/Other"/>
+ </xsd:sequence>
+ </xsd:group>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/Okay.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/Okay.xsd
new file mode 100644
index 0000000..e01e123
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/Okay.xsd
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="E" type="CT"/>
+
+ <xsd:group name="G">
+ <xsd:sequence>
+ <xsd:element ref="E"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:attribute name="A" type="ST"/>
+
+ <xsd:simpleType name="ST">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="AG">
+ <xsd:attribute ref="A"/>
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+ <xsd:complexType name="CT">
+ <xsd:group ref="G"/>
+ <xsd:attributeGroup ref="AG"/>
+ </xsd:complexType>
+
+ <xsd:group name="G1">
+ <xsd:sequence>
+ <xsd:element ref="E"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:group name="G2">
+ <xsd:sequence>
+ <xsd:element ref="E"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:attributeGroup name="AG1">
+ <xsd:attribute ref="A" use="required"/>
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/diagnostics/Other.xsd b/examples/org.eclipse.xsd.example/data/diagnostics/Other.xsd
new file mode 100644
index 0000000..5154e72
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/diagnostics/Other.xsd
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ */
+-->
+<xsd:schema
+ targetNamespace="http://www.example.com/Other"
+ xmlns:this="http://www.example.com/Other"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="E"/>
+
+ <xsd:attribute name="A"/>
+
+ <xsd:attributeGroup name="AG">
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+</xsd:schema>
diff --git a/examples/org.eclipse.xsd.example/data/index.html b/examples/org.eclipse.xsd.example/data/index.html
new file mode 100644
index 0000000..f8256d5
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/data/index.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ */
+-->
+
+<title>2001 XML Schema Grammar Index</title>
+
+</head>
+
+<frameset cols="40%,60%">
+
+<frame src="SchemaForSchema.html" name="schemaForSchemaFrame">
+</frame>
+
+<frameset rows="50%,50%">
+<frame src="http://www.w3.org/TR/xmlschema-1/" name="Part1">
+</frame>
+<frame src="http://www.w3.org/TR/xmlschema-2/" name="Part2">
+</frame>
+</frameset>
+
+
+</frameset>
+
+<noframes>
+<h2>Frame Alert</h2>
+<p>
+This document is designed to be viewed using the frames feature.
+If you see this message, you are using a non-frame-capable web client.
+</p>
+<p>
+Link to <a href="SchemaForSchema.html">Non-frame version.</a>
+</p>
+</noframes>
+
+</html>
+
diff --git a/examples/org.eclipse.xsd.example/modeling32.png b/examples/org.eclipse.xsd.example/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/modeling32.png
Binary files differ
diff --git a/examples/org.eclipse.xsd.example/plugin.properties b/examples/org.eclipse.xsd.example/plugin.properties
new file mode 100644
index 0000000..71fe0a8
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/plugin.properties
@@ -0,0 +1,15 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Example
+providerName = Eclipse Modeling Project
diff --git a/examples/org.eclipse.xsd.example/plugin.xml b/examples/org.eclipse.xsd.example/plugin.xml
new file mode 100644
index 0000000..99dcba7
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension id="XSDMainExample" point="org.eclipse.core.runtime.applications">
+ <application>
+ <run class="org.eclipse.xsd.example.XSDMainExample$Runnable" />
+ </application>
+ </extension>
+
+ <extension id="XSDGenerateHTML" point="org.eclipse.core.runtime.applications">
+ <application>
+ <run class="org.eclipse.xsd.example.XSDGenerateHTML" />
+ </application>
+ </extension>
+</plugin>
diff --git a/examples/org.eclipse.xsd.example/pom.xml b/examples/org.eclipse.xsd.example/pom.xml
new file mode 100644
index 0000000..a265681
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.example</artifactId>
+ <version>2.9.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/examples/org.eclipse.xsd.example/release.digest b/examples/org.eclipse.xsd.example/release.digest
new file mode 100644
index 0000000..d5c54ad
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/release.digest
Binary files differ
diff --git a/examples/org.eclipse.xsd.example/release.properties b/examples/org.eclipse.xsd.example/release.properties
new file mode 100644
index 0000000..4854ce2
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/release.properties
@@ -0,0 +1,6 @@
+#
+#Mon Sep 10 16:55:48 CEST 2012
+root.projects=org.eclipse.xsd.example-feature
+baseline.for.integration=true
+provide.service=false
+show.deviations=false
diff --git a/examples/org.eclipse.xsd.example/release.xml b/examples/org.eclipse.xsd.example/release.xml
new file mode 100644
index 0000000..5e73181
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/release.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<release>
+ <feature name="org.eclipse.xsd.example" version="2.12.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.example" version="2.8.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.license" version="2.12.0"/>
+ <plugin name="org.eclipse.xsd.example" version="2.8.0"/>
+</release>
diff --git a/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/XSDGenerateHTML.java b/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/XSDGenerateHTML.java
new file mode 100644
index 0000000..c553acf
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/XSDGenerateHTML.java
@@ -0,0 +1,1571 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.example;
+
+
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDCardinality;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTerm;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.impl.XSDNamedComponentImpl;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+
+/**
+ * Generates HTML annotated documentation that summarizes the built-in simple type hierarchy.
+ * It implements the method {@link #run run},
+ * which is called just like main during headless workbench invocation.
+ * <p>
+ * You can execute this example by running
+ *<pre>
+ * xsd-generate-schema-for-schema-html.bat
+ *</pre>
+ * from the directory:
+ *<pre>
+ * plugins/org.eclipse.xsd.example/data/
+ *</pre>
+ * This script uses the file
+ *<pre>
+ * plugins/org.eclipse.xsd.example/SampleMarkup.xml
+ *</pre>
+ * for annotations.
+ * The resultin HTML document is stored in <code>SchemaForSchema.html</code>
+ * and an <code>index.html</code> is provided frame-based viewing of the document.
+ * The script
+ *<pre>
+ * xsd-generate-html.bat
+ *</pre>
+ * allows you to pass in your own annotations.
+ * </p>
+ */
+public class XSDGenerateHTML implements IApplication
+{
+ {
+ // This is needed because we can't have the following in the plugin.xml
+ //
+ // <extension point = "com.ibm.etools.emf.extension_parser">
+ // <parser type="xsd" class="org.eclipse.xsd.util.XSDResourceFactoryImpl"/>
+ // </extension>
+ //
+ // The com.ibm.etools.xsdmodel plugin, shipped with WSAD, has a conflicting registration for this.
+ //
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+ }
+
+ /**
+ * The map from schema type to Java class.
+ */
+ public Map<String, String> schemaTypeToJavaClassMap = new HashMap<String, String>();
+
+ /**
+ * The map from String keys to documentation.
+ * @see #readMarkup
+ * @see #handleMarkup
+ */
+ public Map<String, String> contentDocumentationMap = new HashMap<String, String>();
+
+ /**
+ * The map from String keys to documentation for {@link XSDElementDeclaration}.
+ * @see #readMarkup
+ * @see #handleMarkup
+ */
+ public Map<String, String> elementDeclarationMarkupMap = new HashMap<String, String>();
+
+ /**
+ * The map from String keys to documentation for {@link XSDAttributeDeclaration}s.
+ * @see #readMarkup
+ * @see #handleMarkup
+ */
+ public Map<String, String> attributeDeclarationMarkupMap = new HashMap<String, String>();
+
+ /**
+ * The map from {@link XSDElementDeclaration} to an anchor string.
+ */
+ public Map<XSDElementDeclaration, XSDElementDeclaration> specialAnchorMap = new HashMap<XSDElementDeclaration, XSDElementDeclaration>();
+
+ /**
+ * The list of anchors in <a href="http://www.w3.org/TR/xmlschema-1/">Part 1</a>.
+ */
+ protected List<String> part1Anchors =
+ Arrays.asList
+ (new String []
+ {
+ "all",
+ "annotation",
+ "any",
+ "anyAttribute",
+ "appinfo",
+ "attribute",
+ "attributeGroup",
+ "choice",
+ "complexContent",
+ "complexContent::extension",
+ "complexContent::restriction",
+ "complexType",
+ "documentation",
+ "element",
+ "field",
+ "group",
+ "import",
+ "include",
+ "key",
+ "keyref",
+ "list",
+ "notation",
+ "redefine",
+ "restriction",
+ "schema",
+ "selector",
+ "sequence",
+ "simpleContent",
+ // "simpleContent::attributeGroup",
+ "simpleContent::extension",
+ "simpleContent::restriction",
+ "simpleType",
+ "union",
+ "unique",
+ });
+
+ /**
+ * The list of components in <a href="http://www.w3.org/TR/xmlschema-1/">Part 1</a>.
+ */
+ List<String> part1Components =
+ Arrays.asList
+ (new String []
+ {
+ "all", "Model_Group_details Particle_details",
+ "annotation", "Annotation_details",
+ "any", "Wildcard_details",
+ "anyAttribute", "Wildcard_details",
+ "appinfo", "Annotation_details",
+ "attribute", "Attribute_Declaration_details AU_details",
+ "attributeGroup", "Attribute_Group_Definition_details",
+ "choice", "Model_Group_details Particle_details",
+ "complexContent", "Complex_Type_Definition_details",
+ "complexContent::extension", "Complex_Type_Definition_details",
+ "complexContent::restriction", "Complex_Type_Definition_details",
+ "complexType", "Complex_Type_Definition_details",
+ "documentation", "Annotation_details",
+ "element", "Element_Declaration_details Particle_details",
+ "field", "Identity-constraint_Definition_details",
+ "group", "Model_Group_Definition_details Particle_details",
+ "import", "",
+ "include", "",
+ "key", "Identity-constraint_Definition_details",
+ "keyref", "Identity-constraint_Definition_details",
+ "list", "Simple_Type_Definition_details",
+ "notation", "Notation_Declaration_details",
+ "redefine", "",
+ "restriction", "Simple_Type_Definition_details",
+ "schema", "Schema_details",
+ "selector", "Identity-constraint_Definition_details",
+ "sequence", "Model_Group_details Particle_details",
+ "simpleContent", "Complex_Type_Definition_details",
+ // "simpleContent::attributeGroup", "",
+ "simpleContent::extension", "Complex_Type_Definition_details",
+ "simpleContent::restriction", "Complex_Type_Definition_details",
+ "simpleType", "Simple_Type_Definition_details",
+ "union", "Simple_Type_Definition_details",
+ "unique", "Identity-constraint_Definition_details",
+ });
+
+ /**
+ * The list of anchors in <a href="http://www.w3.org/TR/xmlschema-2/">Part 2</a>.
+ */
+ protected List<String> part2Anchors =
+ Arrays.asList
+ (new String []
+ {
+ "enumeration",
+ "fractionDigits",
+ "length",
+ "list",
+ "maxExclusive",
+ "maxInclusive",
+ "maxLength",
+ "minExclusive",
+ "minInclusive",
+ "minLength",
+ "pattern",
+ "restriction",
+ "simpleType",
+ "totalDigits",
+ "union",
+ "whiteSpace",
+ });
+
+ /**
+ * The list of components in <a href="http://www.w3.org/TR/xmlschema-2/">Part 2</a>.
+ */
+ protected List<String> part2Components =
+ Arrays.asList
+ (new String []
+ {
+ "enumeration", "dc-enumeration",
+ "fractionDigits", "dc-fractionDigits",
+ "length", "dc-length",
+ "list", "dc-defn",
+ "maxExclusive", "dc-maxExclusive",
+ "maxInclusive", "dc-maxInclusive",
+ "maxLength", "dc-maxLength",
+ "minExclusive", "dc-minExclusive",
+ "minInclusive", "dc-minInclusive",
+ "minLength", "dc-minLength",
+ "pattern", "dc-pattern",
+ "restriction", "dc-defn",
+ "simpleType", "dc-defn",
+ "totalDigits", "dc-totalDigits",
+ "union", "dc-defn",
+ "whiteSpace", "dc-whiteSpace",
+ });
+
+ /**
+ * The URL for errata.
+ */
+ protected String errata = "http://www.w3.org/2001/05/xmlschema-rec-comments";
+
+ /**
+ * A markup style indicating the feature is required to be supported.
+ */
+ public static final String REQUIRES = "requires";
+
+ /**
+ * A markup style indicating the feature not required to be supported.
+ */
+ public static final String ALLOWS = "allows";
+
+ /**
+ * A markup style indicating the feature will eventually be required to be supported.
+ */
+ public static final String FUTURE = "future";
+
+ /**
+ * A markup style indicating the feature will never be required to be supported.
+ */
+ public static final String NEVER = "never";
+
+ /**
+ * Creates an instance.
+ */
+ public XSDGenerateHTML()
+ {
+ super();
+ }
+
+ /**
+ * Read the markup from the .xml input.
+ * @param fileName the name of an XML file.
+ */
+ public void readMarkup(String fileName)
+ {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ documentBuilderFactory.setNamespaceAware(true);
+ documentBuilderFactory.setValidating(false);
+ try
+ {
+ DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ Document document = documentBuilder.parse(fileName);
+ for (Node child = document.getDocumentElement().getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if ("elementAnnotation".equals(child.getLocalName()))
+ {
+ handleMarkup(elementDeclarationMarkupMap, (Element)child);
+ }
+ else if ("attributeAnnotation".equals(child.getLocalName()))
+ {
+ handleMarkup(attributeDeclarationMarkupMap, (Element)child);
+ }
+ else if ("content".equals(child.getLocalName()))
+ {
+ handleMarkup(contentDocumentationMap, (Element)child);
+ }
+ else if ("typeMap".equals(child.getLocalName()))
+ {
+ Element markupElement = (Element)child;
+ String schemaType = markupElement.getAttribute("schemaType");
+ String javaClass = markupElement.getAttribute("javaClass");
+ schemaTypeToJavaClassMap.put(schemaType, javaClass);
+ }
+ }
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace(System.err);
+ }
+ }
+
+ /**
+ * Handle a markup element by caching information in a map.
+ * @param markupMap the map to contain the markup.
+ * @param markupElement the element specifying the markup.
+ */
+ public void handleMarkup(Map<String, String> markupMap, Element markupElement)
+ {
+ String keyList = markupElement.getAttribute("key");
+ for (StringTokenizer stringTokenizer = new StringTokenizer(keyList); stringTokenizer.hasMoreTokens(); )
+ {
+ String key = stringTokenizer.nextToken();
+ String markup = markupElement.getAttribute("markup");
+ if (markup.length() > 0)
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ try
+ {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+
+ for (Node grandChild = markupElement.getFirstChild(); grandChild != null; grandChild = grandChild.getNextSibling())
+ {
+ if (grandChild.getNodeType() == Node.ELEMENT_NODE)
+ {
+ transformer.transform(new DOMSource(grandChild), new StreamResult(out));
+ }
+ }
+ String serialization = out.toString();
+ serialization = serialization.substring(serialization.indexOf("<div>"));
+ markupMap.put(key, markup + "@" + serialization);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace(System.err);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the content documentation associated with the key.
+ * @param key the key to look up.
+ * @return the associated content documentation.
+ * @see #handleMarkup
+ */
+ public String getContentDocumentation(String key)
+ {
+ String result = contentDocumentationMap.get(key);
+ if (result != null)
+ {
+ result = result.substring(result.indexOf("@") + 1);
+ if (result.length() == 0)
+ {
+ result = null;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Returns the element markup associated with the key.
+ * @param key the key to look up.
+ * @return the associated element markup.
+ * @see #handleMarkup
+ */
+ public String getElementDeclarationMarkup(String key)
+ {
+ String result = elementDeclarationMarkupMap.get(key);
+ if (result != null)
+ {
+ result = result.substring(0, result.indexOf("@"));
+ if (result.length() == 0)
+ {
+ result = null;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Returns the element documentation associated with the key.
+ * @param key the key to look up.
+ * @return the associated element documentation.
+ * @see #handleMarkup
+ */
+ public String getElementDeclarationDocumentation(String key)
+ {
+ String result = elementDeclarationMarkupMap.get(key);
+ if (result != null)
+ {
+ result = result.substring(result.indexOf("@") + 1);
+ if (result.length() == 0)
+ {
+ result = null;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Returns the attribute markup associated with the key.
+ * @param key the key to look up.
+ * @return the associated attribute markup.
+ * @see #handleMarkup
+ */
+ public String getAttributeDeclarationMarkup(String key)
+ {
+ String result = attributeDeclarationMarkupMap.get(key);
+ if (result != null)
+ {
+ result = result.substring(0, result.indexOf("@"));
+ if (result.length() == 0)
+ {
+ result = null;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Returns the attribute documentation associated with the key.
+ * @param key the key to look up.
+ * @return the associated attribute documentation.
+ * @see #handleMarkup
+ */
+ public String getAttributeDeclarationDocumentation(String key)
+ {
+ String result = attributeDeclarationMarkupMap.get(key);
+ if (result != null)
+ {
+ result = result.substring(result.indexOf("@") + 1);
+ if (result.length() == 0)
+ {
+ result = null;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Returns an href in Part 1 or Part 2 of the XML specification for the given element.
+ * @param xsdElementDeclaration an element declaration in the schema for schema.
+ * @return an href.
+ */
+ public String getStandardLink(XSDElementDeclaration xsdElementDeclaration)
+ {
+ String result = xsdElementDeclaration.getName();
+ XSDElementDeclaration parentElementDeclaration = specialAnchorMap.get(xsdElementDeclaration);
+ if (parentElementDeclaration != null)
+ {
+ result = "<a target='Part1' href='" + XSDConstants.PART1 + "#element-" + parentElementDeclaration.getName() + "::" + result;
+ }
+ else if (part2Anchors.contains(result))
+ {
+ result = "<a target='Part2' href='" + XSDConstants.PART2 + "#element-" + result;
+ }
+ else
+ {
+ result = "<a target='Part1' href='" + XSDConstants.PART1 + "#element-" + result;
+ }
+
+ return result + "'>";
+ }
+
+ /**
+ * Returns an href in Part 1 or Part 2 of the component specification for the given element.
+ * @param xsdElementDeclaration a simple type defintion in the schema for schema.
+ * @return an href.
+ */
+ public String getComponentLinks(XSDElementDeclaration xsdElementDeclaration)
+ {
+ String name = xsdElementDeclaration.getName();
+ XSDElementDeclaration parentElementDeclaration = specialAnchorMap.get(xsdElementDeclaration);
+ if (parentElementDeclaration != null)
+ {
+ name = parentElementDeclaration.getName() + "::" + name;
+ }
+
+ int part = 0;
+ String anchors = null;
+ int index = part2Components.indexOf(name);
+ if (index != -1)
+ {
+ part = 2;
+ anchors = part2Components.get(index + 1);
+ }
+ else
+ {
+ index = part1Components.indexOf(name);
+ if (index != -1)
+ {
+ part = 1;
+ anchors = part1Components.get(index + 1);
+ }
+ }
+
+ if (part != 0)
+ {
+ StringBuffer result = new StringBuffer();
+ int count = 0;
+ for (StringTokenizer stringTokenizer = new StringTokenizer(anchors); stringTokenizer.hasMoreTokens(); )
+ {
+ String anchor = stringTokenizer.nextToken();
+ result.append(" <a target='Part");
+ result.append(part);
+ result.append("' href='");
+ result.append(part == 1 ? XSDConstants.PART1 : XSDConstants.PART2);
+ result.append("#");
+ result.append(anchor);
+ result.append("'><font size=-2>");
+ result.append(++count);
+ result.append("</font></a>");
+ }
+ return result.length() > 0 ? result.toString() : null;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Returns an href in Part 2 of the component specification for the given simple type definition.
+ * @param xsdSimpleTypeDefinition an element declaration in the schema for schema.
+ * @return an href.
+ */
+ public String getSimpleTypeDefinitionLink(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ String reference = xsdSimpleTypeDefinition.getName();
+ StringBuffer result = new StringBuffer();
+ if ("anyType".equals(reference))
+ {
+ result.append("<a target='Part1' href='");
+ result.append(XSDConstants.PART1);
+ }
+ else
+ {
+ result.append("<a target='Part2' href='");
+ result.append(XSDConstants.PART2);
+ }
+ result.append("#");
+ if ("anyType".equals(reference))
+ {
+ reference = "ur-type-itself";
+ }
+ else if ("anySimpleType".equals(reference))
+ {
+ reference = "anySimpleType-component";
+ }
+ else if ("anyListType".equals(reference))
+ {
+ reference = "element-list";
+ }
+ else if ("anyUnionType".equals(reference))
+ {
+ reference = "element-union";
+ }
+ result.append(reference);
+ result.append("'>");
+ result.append(xsdSimpleTypeDefinition.getName());
+ result.append("</a>");
+ return result.toString();
+ }
+
+ /**
+ * Returns an anchor that can be used locally for the given element declaration.
+ * @param xsdElementDeclaration an element declaration in the schema for schema.
+ * @return an anchor.
+ */
+ public String getLocalAnchor(XSDElementDeclaration xsdElementDeclaration)
+ {
+ String result = xsdElementDeclaration.getName();
+ XSDElementDeclaration parentElementDeclaration = specialAnchorMap.get(xsdElementDeclaration);
+ if (parentElementDeclaration != null)
+ {
+ result = "element-" + parentElementDeclaration.getName() + "::" + result;
+ }
+ else if (part2Anchors.contains(result))
+ {
+ result = "element-2-" + result;
+ }
+ else
+ {
+ result = "element-" + result;
+ }
+
+ return result;
+ }
+
+ public Object start(IApplicationContext context) throws Exception
+ {
+ String [] arguments = (String[])context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
+ return run(arguments == null ? new String [0] : arguments);
+ }
+
+ public void stop()
+ {
+ // Subclasses may override
+ }
+
+ /**
+ * Generate HTML annotated documentation that summarizes the built-in simple type hierarchy.
+ * @param object an array of Strings.
+ * @return <code>0</code> indicating success, or <code>1</code> indicating failure.
+ */
+ public Object run(Object object)
+ {
+ try
+ {
+ String [] arguments = (String [])object;
+
+ // Filter out inappropriate arguments added by the PDE.
+ //
+ if (arguments.length > 0 && "-pdelaunch".equals(arguments[0]))
+ {
+ String [] oldArguments = arguments;
+ arguments = new String [arguments.length - 1];
+ System.arraycopy(oldArguments, 1, arguments, 0, arguments.length);
+ }
+
+ readMarkup(arguments[0]);
+
+ printHeader();
+
+ // Iterate over the schema arguments.
+ //
+ for (int i = 1; i < arguments.length; ++i)
+ {
+ System.out.println("<!-- << " + arguments[i] + " >> -->");
+ loadAndPrint(arguments[i]);
+ }
+ printFooter();
+
+ return 0;
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ return 1;
+ }
+ }
+
+ /**
+ * Print the start of the document.
+ */
+ public void printHeader()
+ {
+ System.out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+ System.out.println("<html>");
+
+ System.out.println("<style type='text/css'>");
+ System.out.println(" code { font-family: monospace; font-size: 100%}");
+ System.out.println(" div.reprdef { border: 4px double gray; margin: 0em 1em; padding: 0em }");
+ System.out.println(" span.reprdef { color: #A52A2A }");
+
+ System.out.println(" div.reprHeader { margin: 4px; font-weight: bold }");
+ System.out.println(" div.reprBody { border-top-width: 4px; border-top-style: double; border-top-color: #d3d3d3; padding: 4px ; margin: 0em}");
+
+ System.out.println(" div.never, span.never { color : #7F7F7F }");
+ // System.out.println(" div.future, span.future { color : #AF7F7F }");
+ System.out.println(" div.allows, span.allows { color : #7FAF7F }");
+ System.out.println(" div.future, span.future { color : #7F7FAF }");
+
+ System.out.println("</style>");
+ }
+
+ /**
+ * Print the end of the document.
+ */
+ public void printFooter()
+ {
+ System.out.println("</html>");
+ }
+
+ /**
+ * Load the XML Schema file and print the documentation based on it.
+ * @param xsdFile the name of an XML Schema file.
+ */
+ public void loadAndPrint(String xsdFile) throws Exception
+ {
+ XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+ // Create a resource set and load the main schema file into it.
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+ XSDResourceImpl xsdResource = (XSDResourceImpl)resourceSet.getResource(URI.createFileURI(xsdFile), true);
+ XSDSchema xsdSchema = xsdResource.getSchema();
+
+ String elementContentHeaderDocumentation = getContentDocumentation("element-header");
+ if (elementContentHeaderDocumentation != null)
+ {
+ System.out.println(elementContentHeaderDocumentation);
+ }
+
+ List<XSDElementDeclaration> all = new ArrayList<XSDElementDeclaration>(xsdSchema.getElementDeclarations());
+
+ XSDElementDeclaration simpleContent = xsdSchema.resolveElementDeclaration("simpleContent");
+ XSDElementDeclaration complexContent = xsdSchema.resolveElementDeclaration("complexContent");
+ for (int i = 0; i <= 1; ++i)
+ {
+ for (int j = 0; j <= 1; ++j)
+ {
+ XSDElementDeclaration parentElement = (i == 0 ? complexContent : simpleContent);
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)parentElement.getTypeDefinition();
+ XSDElementDeclaration specialElementDeclaration =
+ (XSDElementDeclaration)
+ ((XSDModelGroup)
+ ((XSDModelGroup)
+ ((XSDParticle)(xsdComplexTypeDefinition.getContentType())).
+ getTerm()).
+ getParticles().get(1).
+ getTerm()).
+ getParticles().get(j).
+ getTerm();
+ all.add(specialElementDeclaration);
+ specialAnchorMap.put(specialElementDeclaration, parentElement);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ List<XSDElementDeclaration> aux = (List<XSDElementDeclaration>)(List<?>)XSDNamedComponentImpl.sortNamedComponents((List<XSDNamedComponent>)(List<?>)all);
+ all = aux;
+
+ for (XSDElementDeclaration xsdElementDeclaration : all)
+ {
+ XSDElementDeclaration parentElementDeclaration = specialAnchorMap.get(xsdElementDeclaration);
+ String elementDeclarationName = xsdElementDeclaration.getName();
+ String key = (parentElementDeclaration == null ? "" : parentElementDeclaration.getName() + "::") + elementDeclarationName;
+ String elementDeclarationMarkup = getElementDeclarationMarkup(key);
+ System.out.print("<h2>");
+ System.out.print(elementDeclarationName.substring(0, 1).toUpperCase());
+ System.out.print(elementDeclarationName.substring(1));
+ System.out.println("</h2>");
+ System.out.println("<div class='reprdef'>");
+ System.out.println("<table cols=1 width='100%'><tr><td>");
+ System.out.print("<div class='reprHeader'><span class='reprdef'>XML Representation Summary: </span><code>");
+ System.out.print("<a name='" + getLocalAnchor(xsdElementDeclaration) + "'>");
+ System.out.print(getStandardLink(xsdElementDeclaration));
+ System.out.print(elementDeclarationName);
+ System.out.print("</a></a></code>");
+ System.out.print(" Element Information Item ");
+ if (parentElementDeclaration != null)
+ {
+ System.out.print("<small>(");
+ System.out.print("<a href='#" + getLocalAnchor(parentElementDeclaration) + "'>");
+ System.out.print(parentElementDeclaration.getName());
+ System.out.print("</a>)</small>");
+ }
+ else if ("restriction".equals(elementDeclarationName))
+ {
+ System.out.print("<small>(simpleType)</small>");
+ }
+ System.out.println("</div>");
+
+ System.out.println("<div class='reprBody'>");
+
+ if (elementDeclarationMarkup != null)
+ {
+ System.out.print("<div class='" + elementDeclarationMarkup + "'>");
+ }
+ System.out.print("<tt><");
+ System.out.print(elementDeclarationName);
+ System.out.print("</tt>");
+
+ String componentLinks = getComponentLinks(xsdElementDeclaration);
+ if (componentLinks != null)
+ {
+ System.out.print(componentLinks);
+ }
+
+ System.out.println("<br>");
+
+ StringBuffer attributeDocumentationBuffer = new StringBuffer();
+ Map<String, Integer> repeatedDocumentationMap = new HashMap<String, Integer>();
+
+ XSDTypeDefinition xsdTypeDefinition = xsdElementDeclaration.getTypeDefinition();
+ XSDComplexTypeDefinition generalType = xsdSchema.resolveComplexTypeDefinitionURI(xsdElementDeclaration.getURI());
+ if (generalType.getContainer() != null)
+ {
+ xsdTypeDefinition = generalType;
+ }
+
+ if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ System.out.println("<tt>></tt><br>");
+ }
+ else if (xsdTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)xsdTypeDefinition;
+ for (Iterator<XSDAttributeUse> attributeUses = xsdComplexTypeDefinition.getAttributeUses().iterator(); attributeUses.hasNext(); )
+ {
+ XSDAttributeUse xsdAttributeUse = attributeUses.next();
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ String attributeDeclarationName = xsdAttributeDeclaration.getName();
+ System.out.print("<tt> ");
+ if (xsdAttributeDeclaration.getTargetNamespace() != null)
+ {
+ System.out.print("xml:");
+ }
+ String attributeDeclarationMarkup = null;
+ String attributeDeclarationDocumentation = null;
+ if (!"ignored".equals(elementDeclarationMarkup))
+ {
+ attributeDeclarationMarkup = getAttributeDeclarationMarkup(attributeDeclarationName);
+ if (attributeDeclarationMarkup == null)
+ {
+ attributeDeclarationMarkup =
+ getAttributeDeclarationMarkup(elementDeclarationName + "." + attributeDeclarationName);
+ }
+
+ attributeDeclarationDocumentation = getAttributeDeclarationDocumentation(attributeDeclarationName);
+ if (attributeDeclarationDocumentation == null)
+ {
+ attributeDeclarationDocumentation =
+ getAttributeDeclarationDocumentation(elementDeclarationName + "." + attributeDeclarationName);
+ }
+ }
+
+ if (attributeDeclarationDocumentation != null)
+ {
+ Integer oldInsertIndex = repeatedDocumentationMap.get(attributeDeclarationDocumentation);
+ if (oldInsertIndex != null)
+ {
+ String insertion = "<br>" + attributeDeclarationName;
+ attributeDocumentationBuffer.insert(oldInsertIndex, insertion);
+ repeatedDocumentationMap.put(attributeDeclarationDocumentation, oldInsertIndex + insertion.length());
+ }
+ else
+ {
+ if (attributeDocumentationBuffer.length() == 0)
+ {
+ attributeDocumentationBuffer.append("<table cols=2 width='100%'>\n");
+ attributeDocumentationBuffer.append("<tr>\n<th width=25% valign=top align=left><b>Attribute</b></th>\n");
+ attributeDocumentationBuffer.append("<th width=75% valign=top align=left><b>Description</b></th>\n</tr>\n");
+ }
+ attributeDocumentationBuffer.append("<tr><td><b>");
+ if (attributeDeclarationMarkup != null)
+ {
+ attributeDocumentationBuffer.append("<span class='" + attributeDeclarationMarkup + "'>");
+ }
+ attributeDocumentationBuffer.append(attributeDeclarationName);
+ int insertIndex = attributeDocumentationBuffer.length();
+ if (attributeDeclarationMarkup != null)
+ {
+ attributeDocumentationBuffer.append("</span>");
+ }
+ attributeDocumentationBuffer.append("</b></td>\n<td valign=top>\n");
+ attributeDocumentationBuffer.append(attributeDeclarationDocumentation);
+ attributeDocumentationBuffer.append("</td></tr>");
+ repeatedDocumentationMap.put(attributeDeclarationDocumentation, insertIndex);
+ }
+ }
+
+ if (attributeDeclarationMarkup != null)
+ {
+ System.out.print("<span class='" + attributeDeclarationMarkup + "'>");
+ }
+ if (xsdAttributeUse.isRequired())
+ {
+ System.out.print("<b>");
+ System.out.print(attributeDeclarationName);
+ System.out.print("</b>");
+ }
+ else
+ {
+ System.out.print(attributeDeclarationName);
+ }
+ if (attributeDeclarationMarkup != null)
+ {
+ System.out.print("</span>");
+ }
+ System.out.print(" = </tt>");
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdAttributeDeclaration.getTypeDefinition();
+ printSimpleTypeDefinition(xsdSimpleTypeDefinition);
+ if (xsdAttributeUse.getLexicalValue() != null)
+ {
+ System.out.print(" : ");
+ if ("".equals(xsdAttributeUse.getLexicalValue()))
+ {
+ System.out.print("\"\"");
+ }
+ else
+ {
+ System.out.print(xsdAttributeUse.getLexicalValue());
+ }
+ }
+ if (attributeUses.hasNext())
+ {
+ System.out.println("<br>");
+ }
+ }
+ if (xsdComplexTypeDefinition.getAttributeWildcard() != null)
+ {
+ System.out.println("<br>");
+ System.out.println("<span class='" + ALLOWS + "'><tt><em> { any attributes with non-schema namespace . . . }</em></tt></span>");
+ }
+
+ System.out.println("<tt>></tt><br>");
+
+ if (xsdComplexTypeDefinition.getContentType() instanceof XSDParticle)
+ {
+ System.out.print("<tt><em> Content:</em> ");
+
+ printParticle((XSDParticle)xsdComplexTypeDefinition.getContentType(), elementDeclarationMarkup);
+
+ System.out.print("</tt>");
+ }
+ else if (xsdComplexTypeDefinition.getContentType() instanceof XSDSimpleTypeDefinition)
+ {
+ System.out.print("<b>***** simple</b>");
+ }
+ else
+ {
+ System.out.print("<b>{ **** empty }</b>");
+ }
+ System.out.println("<br>");
+ }
+ System.out.print("<tt></");
+ System.out.print(elementDeclarationName);
+ System.out.println("></tt>");
+
+ if (elementDeclarationMarkup != null)
+ {
+ System.out.print("</div>");
+ }
+ System.out.println("</div>");
+
+ String elementDeclarationDocumentation = getElementDeclarationDocumentation(key);
+ if (elementDeclarationDocumentation != null)
+ {
+ System.out.println("<div class='reprBody'>");
+ System.out.println(elementDeclarationDocumentation);
+ System.out.println("</div>");
+ }
+ if (attributeDocumentationBuffer.length() > 0)
+ {
+ System.out.println("<div class='reprBody'>");
+ System.out.print(attributeDocumentationBuffer);
+ System.out.println("</table>");
+ System.out.println("</div>");
+ }
+ System.out.println("</td></tr></table>");
+ System.out.println("</div>");
+ }
+
+ // System.out.println("<h1>Built-in Datatypes</h1>");
+ String typeContentHeaderDocumentation = getContentDocumentation("type-header");
+ if (typeContentHeaderDocumentation != null)
+ {
+ System.out.println(typeContentHeaderDocumentation);
+ }
+ System.out.println("<table border=true cols=3 width='100%'>");
+ System.out.println("<tr>");
+ System.out.println("<th width=33% valign=top align=left><b>Type</b></th>");
+ System.out.println("<th width=33% valign=top align=left><b>Properties & Facets</b></th>");
+ System.out.println("<th width=34% valign=top align=left><b>Effective Value</b></th>");
+ System.out.println("</tr>");
+
+ XSDSimpleTypeDefinition anyTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("anyType");
+ XSDSimpleTypeDefinition anySimpleTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("anySimpleType");
+
+ XSDSimpleTypeDefinition anyListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ anyListTypeDefinition.setVariety(XSDVariety.LIST_LITERAL);
+ anyListTypeDefinition.setName("anyListType");
+ anyListTypeDefinition.setItemTypeDefinition(anySimpleTypeDefinition);
+ xsdSchema.getContents().add(anyListTypeDefinition);
+ anyListTypeDefinition.getElement().setAttribute(XSDConstants.ID_ATTRIBUTE, "anyListType");
+
+ XSDSimpleTypeDefinition anyUnionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ anyUnionTypeDefinition.setVariety(XSDVariety.UNION_LITERAL);
+ anyUnionTypeDefinition.setName("anyUnionType");
+ anyUnionTypeDefinition.getMemberTypeDefinitions().add(anySimpleTypeDefinition);
+ xsdSchema.getContents().add(anyUnionTypeDefinition);
+ anyUnionTypeDefinition.getElement().setAttribute(XSDConstants.ID_ATTRIBUTE, "anyUnionType");
+
+ List<XSDTypeDefinition> allTypeDefinitions = new ArrayList<XSDTypeDefinition>(xsdSchema.getTypeDefinitions());
+ allTypeDefinitions.add(0, anySimpleTypeDefinition);
+ allTypeDefinitions.add(0, anyTypeDefinition);
+ for (XSDTypeDefinition xsdTypeDefinition : allTypeDefinitions)
+ {
+ if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition &&
+ xsdTypeDefinition.getElement() != null &&
+ xsdTypeDefinition.getName().equals(xsdTypeDefinition.getElement().getAttribute(XSDConstants.ID_ATTRIBUTE)))
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdTypeDefinition;
+ System.out.println("<tr>");
+ System.out.println("<a name='" + xsdSimpleTypeDefinition.getName() + "-simple-type'>");
+ System.out.println("<td>");
+ boolean isPrimitive =
+ XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety() &&
+ xsdSimpleTypeDefinition.getBaseTypeDefinition() == anySimpleTypeDefinition;
+ if (isPrimitive)
+ {
+ System.out.print("<b>");
+ }
+ System.out.print(getSimpleTypeDefinitionLink(xsdSimpleTypeDefinition));
+ if (isPrimitive)
+ {
+ System.out.print("</b>");
+ }
+ for (XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition;;
+ baseTypeDefinition = baseTypeDefinition.getBaseTypeDefinition())
+ {
+ String javaClass = schemaTypeToJavaClassMap.get(baseTypeDefinition.getName());
+ if (javaClass != null)
+ {
+ System.out.println("<br> <br>");
+ if (baseTypeDefinition == xsdSimpleTypeDefinition)
+ {
+ System.out.print("<b>"); // )
+ }
+ int dotIndex = javaClass.lastIndexOf(".");
+ System.out.print("<font size=-2>");
+ System.out.print(javaClass.substring(0, dotIndex + 1));
+ System.out.print("</font><br> ");
+ System.out.print(javaClass.substring(dotIndex + 1));
+ if (baseTypeDefinition == xsdSimpleTypeDefinition)
+ {
+ // (
+ System.out.print("<b>");
+ }
+ System.out.println();
+ break;
+ }
+ }
+ System.out.println("<br>");
+ System.out.println("</td>");
+ System.out.println("</a>");
+
+ StringBuffer validFacets = new StringBuffer();
+ StringBuffer effectiveFacetValues = new StringBuffer();
+
+ validFacets.append("variety<br>\n");
+ effectiveFacetValues.append
+ (xsdSimpleTypeDefinition.isSetVariety() ? "<b>" + xsdSimpleTypeDefinition.getVariety() + "</b>" : "<em>absent</em>");
+ effectiveFacetValues.append("<br>\n");
+
+ validFacets.append("base type definition<br>\n");
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ while (baseTypeDefinition.getName() == null)
+ {
+ baseTypeDefinition = baseTypeDefinition.getBaseTypeDefinition();
+ }
+ effectiveFacetValues.append("<a href='#");
+ effectiveFacetValues.append(baseTypeDefinition.getName());
+ effectiveFacetValues.append("-simple-type'>");
+ effectiveFacetValues.append(baseTypeDefinition.getName());
+ effectiveFacetValues.append("</a><br>\n");
+
+ validFacets.append("ordered<br>\n");
+ effectiveFacetValues.append
+ ("anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ?
+ "*" :
+ xsdSimpleTypeDefinition.getOrderedFacet().getValue().getName());
+ effectiveFacetValues.append("<br>\n");
+
+ validFacets.append("bounded<br>\n");
+ effectiveFacetValues.append
+ ("anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ?
+ "*" :
+ xsdSimpleTypeDefinition.getBoundedFacet().isValue() ? "true" : "false");
+ effectiveFacetValues.append("<br>\n");
+
+ validFacets.append("cardinality<br>\n");
+ effectiveFacetValues.append
+ ("anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ?
+ "*" :
+ XSDCardinality.COUNTABLY_INFINITE_LITERAL == xsdSimpleTypeDefinition.getCardinalityFacet().getValue() ?
+ "countably infinite" :
+ xsdSimpleTypeDefinition.getCardinalityFacet().getValue().getName());
+ effectiveFacetValues.append("<br>\n");
+
+ validFacets.append("numeric<br>\n");
+ effectiveFacetValues.append
+ ("anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ?
+ "*" :
+ xsdSimpleTypeDefinition.getNumericFacet().isValue() ? "true" : "false");
+ effectiveFacetValues.append("<br>\n");
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("length"))
+ {
+ validFacets.append("length<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveLengthFacet() != null)
+ {
+ XSDLengthFacet xsdLengthFacet = xsdSimpleTypeDefinition.getEffectiveLengthFacet();
+ if (xsdLengthFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdLengthFacet.getValue());
+ if (xsdLengthFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("minLength"))
+ {
+ validFacets.append("minLength<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveMinLengthFacet() != null)
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = xsdSimpleTypeDefinition.getEffectiveMinLengthFacet();
+ if (xsdMinLengthFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdMinLengthFacet.getValue());
+ if (xsdMinLengthFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("maxLength"))
+ {
+ validFacets.append("maxLength<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet() != null)
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet();
+ if (xsdMaxLengthFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdMaxLengthFacet.getValue());
+ if (xsdMaxLengthFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("pattern"))
+ {
+ validFacets.append("pattern<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectivePatternFacet() != null)
+ {
+ // XSDPatternFacet xsdPatternFacet = xsdSimpleTypeDefinition.getEffectivePatternFacet();
+ effectiveFacetValues.append("*");
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("enumeration"))
+ {
+ validFacets.append("enumeration<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() != null)
+ {
+ XSDEnumerationFacet xsdEnumerationFacet = xsdSimpleTypeDefinition.getEffectiveEnumerationFacet();
+ for (Iterator<?> enumerators = xsdEnumerationFacet.getValue().iterator(); enumerators.hasNext(); )
+ {
+ String enumerator = (String)enumerators.next();
+ effectiveFacetValues.append(enumerator);
+ effectiveFacetValues.append(" ");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("whiteSpace"))
+ {
+ validFacets.append("whiteSpace<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveWhiteSpaceFacet() != null)
+ {
+ XSDWhiteSpaceFacet xsdWhiteSpaceFacet = xsdSimpleTypeDefinition.getEffectiveWhiteSpaceFacet();
+ if (xsdWhiteSpaceFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdWhiteSpaceFacet.getValue());
+ if (xsdWhiteSpaceFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("maxInclusive"))
+ {
+ validFacets.append("maxInclusive<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveMaxFacet() instanceof XSDMaxInclusiveFacet)
+ {
+ XSDMaxInclusiveFacet xsdMaxInclusiveFacet = (XSDMaxInclusiveFacet)xsdSimpleTypeDefinition.getEffectiveMaxFacet();
+ if (xsdMaxInclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdMaxInclusiveFacet.getValue());
+ if (xsdMaxInclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("maxExclusive"))
+ {
+ validFacets.append("maxExclusive<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveMaxFacet() instanceof XSDMaxExclusiveFacet)
+ {
+ XSDMaxExclusiveFacet xsdMaxExclusiveFacet = (XSDMaxExclusiveFacet)xsdSimpleTypeDefinition.getEffectiveMaxFacet();
+ if (xsdMaxExclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdMaxExclusiveFacet.getValue());
+ if (xsdMaxExclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("minInclusive"))
+ {
+ validFacets.append("maxInclusive<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveMinFacet() instanceof XSDMinInclusiveFacet)
+ {
+ XSDMinInclusiveFacet xsdMinInclusiveFacet = (XSDMinInclusiveFacet)xsdSimpleTypeDefinition.getEffectiveMinFacet();
+ if (xsdMinInclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdMinInclusiveFacet.getValue());
+ if (xsdMinInclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("minExclusive"))
+ {
+ validFacets.append("maxExclusive<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveMinFacet() instanceof XSDMinExclusiveFacet)
+ {
+ XSDMinExclusiveFacet xsdMinExclusiveFacet = (XSDMinExclusiveFacet)xsdSimpleTypeDefinition.getEffectiveMinFacet();
+ if (xsdMinExclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdMinExclusiveFacet.getValue());
+ if (xsdMinExclusiveFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("totalDigits"))
+ {
+ validFacets.append("totalDigits<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveTotalDigitsFacet() != null)
+ {
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = xsdSimpleTypeDefinition.getEffectiveTotalDigitsFacet();
+ if (xsdTotalDigitsFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdTotalDigitsFacet.getValue());
+ if (xsdTotalDigitsFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ if (xsdSimpleTypeDefinition.getValidFacets().contains("fractionDigits"))
+ {
+ validFacets.append("fractionDigits<br>\n");
+ if (xsdSimpleTypeDefinition.getEffectiveFractionDigitsFacet() != null)
+ {
+ XSDFractionDigitsFacet xsdFractionDigitsFacet = xsdSimpleTypeDefinition.getEffectiveFractionDigitsFacet();
+ if (xsdFractionDigitsFacet.isFixed())
+ {
+ effectiveFacetValues.append("<b>");
+ }
+ effectiveFacetValues.append(xsdFractionDigitsFacet.getValue());
+ if (xsdFractionDigitsFacet.isFixed())
+ {
+ effectiveFacetValues.append("</b>");
+ }
+ }
+ effectiveFacetValues.append("<br>\n");
+ }
+
+ System.out.println("<td>");
+ System.out.print(validFacets);
+ System.out.println("</td>");
+ System.out.print("<td>");
+ System.out.println(effectiveFacetValues);
+ System.out.println("</td>");
+ System.out.println("</tr>");
+ }
+ }
+ System.out.println("</table>");
+
+ String appendixContentHeaderDocumentation = getContentDocumentation("appendix-header");
+ if (appendixContentHeaderDocumentation != null)
+ {
+ System.out.println(appendixContentHeaderDocumentation);
+ }
+ }
+
+ /**
+ * Print a particle with markup for the document.
+ * @param xsdParticle a particle.
+ * @param rootElementDeclarationMarkup the markup.
+ */
+ public void printParticle(XSDParticle xsdParticle, String rootElementDeclarationMarkup)
+ {
+ int minOccurs = xsdParticle.getMinOccurs();
+ int maxOccurs = xsdParticle.getMaxOccurs();
+ XSDTerm xsdTerm = xsdParticle.getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ String elementDeclarationName = xsdElementDeclaration.getName();
+ String elementDeclarationMarkup = null;
+ if (rootElementDeclarationMarkup == null)
+ {
+ elementDeclarationMarkup = getElementDeclarationMarkup(elementDeclarationName);
+ }
+ if (elementDeclarationMarkup != null)
+ {
+ System.out.print("<span class='");
+ System.out.print(elementDeclarationMarkup);
+ System.out.print("'>");
+ }
+ System.out.print("<a href='#" + getLocalAnchor(xsdElementDeclaration) + "'>");
+ System.out.print(elementDeclarationName.charAt(0));
+ System.out.print("</a>");
+ System.out.print(elementDeclarationName.substring(1));
+ if (elementDeclarationMarkup != null)
+ {
+ System.out.print("</span>");
+ }
+ if (minOccurs == 0)
+ {
+ if (maxOccurs == 1)
+ {
+ System.out.print("?");
+ }
+ else
+ {
+ System.out.print("*");
+ }
+ }
+ else if (maxOccurs == -1)
+ {
+ System.out.print("+");
+ }
+ }
+ else if (xsdTerm instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdTerm;
+ List<XSDParticle> particles = xsdModelGroup.getParticles();
+ boolean isRedundant =
+ particles.size() == 1 &&
+ minOccurs == 1 &&
+ maxOccurs == 1 &&
+ particles.get(0).getTerm() instanceof XSDModelGroup;
+ if (!isRedundant)
+ {
+ System.out.print("("); // )
+ }
+
+ String separator =
+ XSDCompositor.CHOICE_LITERAL == xsdModelGroup.getCompositor() ?
+ " | " :
+ XSDCompositor.SEQUENCE_LITERAL == xsdModelGroup.getCompositor() ?
+ ", " :
+ " & ";
+
+ for (Iterator<XSDParticle> i = xsdModelGroup.getParticles().iterator(); i.hasNext(); )
+ {
+ XSDParticle childParticle = i.next();
+ printParticle(childParticle, rootElementDeclarationMarkup);
+ if (i.hasNext())
+ {
+ System.out.print(separator);
+ }
+ }
+
+ if (!isRedundant)
+ {
+ // (
+ System.out.print(")");
+ if (minOccurs == 0)
+ {
+ if (maxOccurs == 1)
+ {
+ System.out.print("?");
+ }
+ else
+ {
+ System.out.print("*");
+ }
+ }
+ else if (maxOccurs == -1)
+ {
+ System.out.print("+");
+ }
+ }
+ }
+ else if (xsdTerm instanceof XSDWildcard)
+ {
+ System.out.print("<em>{any}</em>");
+ }
+ }
+
+ /**
+ * Print a simple type definition for the document.
+ * @param xsdSimpleTypeDefinition a simple type definition in the schema for schema.
+ */
+ public void printSimpleTypeDefinition(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ if (xsdSimpleTypeDefinition == null)
+ {
+ // Do nothing
+ }
+ else if (xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() != null)
+ {
+ List<?> value = xsdSimpleTypeDefinition.getEffectiveEnumerationFacet().getValue();
+ if (value.size() > 1)
+ {
+ System.out.print("(");
+ }
+ for (Iterator<?> enumerators = value.iterator(); enumerators.hasNext(); )
+ {
+ String enumerator = enumerators.next().toString();
+ System.out.print("<em>");
+ System.out.print(enumerator);
+ System.out.print("</em>");
+ if (enumerators.hasNext())
+ {
+ System.out.print(" | ");
+ }
+ }
+ if (value.size() > 1)
+ {
+ System.out.print(")");
+ }
+ }
+ else if (xsdSimpleTypeDefinition.getElement() != null &&
+ xsdSimpleTypeDefinition.getElement().hasAttribute(XSDConstants.ID_ATTRIBUTE))
+ {
+ System.out.print("<a href='#" + xsdSimpleTypeDefinition.getName() + "-simple-type'>");
+ System.out.print(xsdSimpleTypeDefinition.getName());
+ System.out.print("</a>");
+ }
+ else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ System.out.print("(");
+ for (Iterator<XSDSimpleTypeDefinition> members = xsdSimpleTypeDefinition.getMemberTypeDefinitions().iterator(); members.hasNext(); )
+ {
+ XSDSimpleTypeDefinition memberTypeDefinition = members.next();
+ printSimpleTypeDefinition(memberTypeDefinition);
+ if (members.hasNext())
+ {
+ System.out.print(" | ");
+ }
+ }
+ System.out.print(")");
+ }
+ else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ System.out.print("List of ");
+ printSimpleTypeDefinition(xsdSimpleTypeDefinition.getItemTypeDefinition());
+ }
+ else if (xsdSimpleTypeDefinition.getName() != null)
+ {
+ if ("public".equals(xsdSimpleTypeDefinition.getName()))
+ {
+ System.out.print("<a target='Part2' href='" + XSDConstants.PART2 + "#anyURI'>anyURI</a> ");
+ System.out.print("<a target='Errata' href='" + errata + "#pfipublic'><em>public</em></a>");
+ }
+ else
+ {
+ System.out.print("<b><em>");
+ System.out.print(xsdSimpleTypeDefinition.getName());
+ System.out.print("</em></b>");
+ }
+ }
+ else if (xsdSimpleTypeDefinition.getEffectivePatternFacet() != null)
+ {
+ // System.out.print(xsdSimpleTypeDefinition.getEffectivePatternFacet().getLexicalValue());
+
+ System.out.print("<em>");
+ System.out.print("<a target='Part1' href='" + XSDConstants.PART1 + "#coss-identity-constraint'>");
+ System.out.print("a restricted xpath expression");
+ System.out.print("</a>");
+ System.out.print("</em>");
+ }
+ else
+ {
+ System.out.print("***");
+ }
+ }
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/XSDMainExample.java b/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/XSDMainExample.java
new file mode 100644
index 0000000..4a459be
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/XSDMainExample.java
@@ -0,0 +1,451 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.example;
+
+import java.io.File;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.util.XSDPrototypicalSchema;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+
+/**
+ * Supports command line invocation to drive XML Schema model examples.
+ * It handles both {@link #run headless} invocation and {@link #main standalone} invocation.
+ * <p>
+ * You can execute one of these example by running
+ *<pre>
+ * xsd-example.bat
+ *</pre>
+ * or
+ *<pre>
+ * xsd-standalone-example.bat
+ *</pre>
+ * from the directory:
+ *<pre>
+ * plugins/org.eclipse.xsd.example/data/
+ *</pre>
+ * </p>
+ * @see #run
+ * @see #main
+ */
+public class XSDMainExample
+{
+ {
+ // This is needed because we can't have the following in the plugin.xml
+ //
+ // <extension point = "org.eclipse.emf.extension_parser">
+ // <parser type="xsd" class="org.eclipse.xsd.util.XSDResourceFactoryImpl"/>
+ // </extension>
+ //
+ // The com.ibm.etools.xsdmodel plugin, shipped with WSAD, has a conflicting registration for this.
+ //
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+ }
+
+ public static class Runnable implements IApplication
+ {
+ public Object start(IApplicationContext context) throws Exception
+ {
+ String [] args = (String[])context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
+ return new XSDMainExample().run(args == null ? new String [0] : args);
+ }
+
+ public void stop()
+ {
+ // Do nothing
+ }
+ }
+
+ /**
+ * Executes a stand-alone example.
+ * @param args an array of Strings from the command line.
+ * @see #run
+ */
+ public static void main(String args[])
+ {
+ System.exit((Integer)new XSDMainExample().run(args));
+ }
+
+ /**
+ * Creates an instance.
+ */
+ public XSDMainExample()
+ {
+ super();
+ }
+
+ /**
+ * Executes a headless workbench example.
+ * If no arguments are provided, the {@link XSDPrototypicalSchema} will be tested;
+ * otherwise each argument is taken to be the URI of a schema which will be loaded and printed.
+ * @param object an array of Strings from the command line, each representing the URI of a schema.
+ * @return <code>0</code> indicating success, or <code>1</code> indicating failure.
+ * @see #main
+ */
+ public Object run(Object object)
+ {
+ try
+ {
+ // If there are no arguments...
+ //
+ String[] arguments = (String[])object;
+
+ // Filter out inappropriate arguments added by the PDE.
+ //
+ if (arguments.length > 0 && "-pdelaunch".equals(arguments[0]))
+ {
+ String [] oldArguments = arguments;
+ arguments = new String [arguments.length - 1];
+ System.arraycopy(oldArguments, 1, arguments, 0, arguments.length);
+ }
+
+ if (arguments.length == 0)
+ {
+ // Serialize the Purchase Order schema sample.
+ //
+ System.out.println("<!-- ** PurchaseOrderSchema ** -->");
+ XSDSchema xsdPurchaseOrderSchema = XSDPrototypicalSchema.getPurchaseOrderSchema();
+ if (xsdPurchaseOrderSchema.getElement() == null)
+ {
+ xsdPurchaseOrderSchema.updateElement();
+ }
+ XSDResourceImpl.serialize(System.out, xsdPurchaseOrderSchema.getElement());
+
+ // Serialize the prototypical schema sample.
+ //
+ System.out.println("<!-- ** PrototypicalSchema ** -->");
+ XSDSchema xsdSchema = XSDPrototypicalSchema.getPrototypicalSchema();
+ if (xsdSchema.getElement() == null)
+ {
+ xsdSchema.updateElement();
+ }
+ XSDResourceImpl.serialize(System.out, xsdSchema.getElement());
+ System.out.println("===== clone =====");
+
+ XSDSchema clonedSchema = (XSDSchema)xsdSchema.cloneConcreteComponent(true, true);
+ clonedSchema.setElement(null);
+ clonedSchema.updateElement();
+
+ XSDResourceImpl.serialize(System.out, clonedSchema.getElement());
+
+ System.out.println("===== clone schema for schema =====");
+ XSDSchema clonedSchemaForSchema = (XSDSchema)clonedSchema.getSchemaForSchema().cloneConcreteComponent(true, true);
+ clonedSchemaForSchema.setElement(null);
+ clonedSchemaForSchema.updateElement();
+ XSDResourceImpl.serialize(System.out, clonedSchemaForSchema.getElement());
+ }
+ else if (arguments[0].equals("-printExample"))
+ {
+ XSDPrototypicalSchema xsdPrototypicalSchema = XSDPrototypicalSchema.getInstance();
+
+ // Iterate over the schema arguments.
+ //
+ for (int i = 1; i < arguments.length; ++i)
+ {
+ xsdPrototypicalSchema.printSchema(arguments[i]);
+ }
+ }
+ else if (arguments[0].equals("-createExample"))
+ {
+ Document document = (Document)XSDPrototypicalSchema.getPurchaseOrderSchema().getDocument().cloneNode(true);
+
+ XSDSchema xsdSchema = XSDPrototypicalSchema.getInstance().createSchema(document.getDocumentElement());
+ if (xsdSchema != null)
+ {
+ if (xsdSchema.getElement() == null)
+ {
+ xsdSchema.updateElement();
+ }
+ XSDResourceImpl.serialize(System.out, xsdSchema.getElement());
+ }
+ }
+ else if (arguments[0].equals("-saveExample"))
+ {
+ XSDPrototypicalSchema.getInstance().savePurchaseOrderSchema(arguments[1]);
+ }
+ else if (arguments[0].equals("-traceLoad"))
+ {
+ for (int i = 1; i < arguments.length; ++i)
+ {
+ XSDPrototypicalSchema.getInstance().traceLoading(arguments[i]);
+ }
+ }
+ else if (arguments[0].equals("-clone"))
+ {
+ XSDPrototypicalSchema.getInstance().printComponent
+ (System.out,
+ XSDPrototypicalSchema.getInstance().cloneComponent
+ (XSDPrototypicalSchema.getPurchaseOrderSchema(), false));
+
+ XSDPrototypicalSchema.getInstance().printComponent
+ (System.out,
+ XSDPrototypicalSchema.getInstance().cloneComponent
+ (XSDPrototypicalSchema.getPurchaseOrderSchema(), true));
+ }
+ else if (arguments[0].equals("-crossReferenceExample"))
+ {
+ XSDPrototypicalSchema.getInstance().crossReferenceTest(System.out);
+ }
+ else if (arguments[0].equals("-validate"))
+ {
+ // Iterate over the schema arguments.
+ //
+ for (int i = 1; i < arguments.length; ++i)
+ {
+ validate(arguments[i]);
+ }
+ }
+ else
+ {
+ // Iterate over the schema arguments.
+ //
+ for (int i = 0; i < arguments.length; ++i)
+ {
+ System.out.println("<!-- << " + arguments[i] + " >> -->");
+ loadAndPrint(arguments[i]);
+ }
+ }
+
+ return 0;
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ return 1;
+ }
+ }
+
+ /**
+ * Prints a header tag for the given schema.
+ * @param xsdSchema a schema.
+ */
+ protected void printSchemaStart(XSDSchema xsdSchema)
+ {
+ System.out.print("<schema targetNamespace=\"");
+ if (xsdSchema.getTargetNamespace() != null)
+ {
+ System.out.print(xsdSchema.getTargetNamespace());
+ }
+ System.out.print("\" schemaLocation=\"");
+ if (xsdSchema.getSchemaLocation() != null)
+ {
+ System.out.print(xsdSchema.getSchemaLocation());
+ }
+ System.out.print("\">");
+ }
+
+ /**
+ * Prints directive tags for those directives that reference the given schema.
+ * @param indent the indentation string to print at the start of each line.
+ * @param xsdSchema a schema.
+ */
+ protected void printDirectives(String indent, XSDSchema xsdSchema)
+ {
+ System.out.print(indent);
+ printSchemaStart(xsdSchema);
+ System.out.println();
+
+ if (!xsdSchema.getReferencingDirectives().isEmpty())
+ {
+ System.out.println(indent + " <referencingDirectives>");
+ for (XSDSchemaDirective xsdSchemaDirective : xsdSchema.getReferencingDirectives())
+ {
+ XSDSchema referencingSchema = xsdSchemaDirective.getSchema();
+ System.out.print(indent + " ");
+ printSchemaStart(referencingSchema);
+ System.out.println();
+ System.out.print(indent + " ");
+ if (xsdSchemaDirective instanceof XSDImport)
+ {
+ XSDImport xsdImport = (XSDImport)xsdSchemaDirective;
+ System.out.print("<import namespace=\"");
+ if (xsdImport.getNamespace() != null)
+ {
+ System.out.print(xsdImport.getNamespace());
+ }
+ System.out.print("\" schemaLocation=\"");
+ }
+ else if (xsdSchemaDirective instanceof XSDRedefine)
+ {
+ System.out.print("<redefine schemaLocation=\"");
+ }
+ else if (xsdSchemaDirective instanceof XSDInclude)
+ {
+ System.out.print("<include schemaLocation=\"");
+ }
+ if (xsdSchemaDirective.getSchemaLocation() != null)
+ {
+ System.out.print(xsdSchemaDirective.getSchemaLocation());
+ }
+ System.out.println("\"/>");
+ System.out.println(indent + " </schema>");
+ }
+ System.out.println(indent + " </referencingDirectives>");
+ }
+
+ if (!xsdSchema.getIncorporatedVersions().isEmpty())
+ {
+ System.out.println(indent + " <incorporatedVersions>");
+ for (XSDSchema incorporatedVersion : xsdSchema.getIncorporatedVersions())
+ {
+ printDirectives(indent + " ", incorporatedVersion);
+ }
+ System.out.println(indent + " </incorporatedVersions>");
+ }
+
+ System.out.println(indent + "</schema>");
+ }
+
+ /**
+ * Load the XML Schema file and print information about it.
+ * @param xsdFile the URI of an XML Schema file.
+ */
+ public void loadAndPrint(String xsdFile) throws Exception
+ {
+ // This let's us test whether the string exists as a file.
+ // It not, we try as a URI.
+ //
+ URI uri;
+ File file = new File(xsdFile);
+ if (file.isFile())
+ {
+ uri = URI.createFileURI(file.getCanonicalFile().toString());
+ }
+ else
+ {
+ uri = URI.createURI(xsdFile);
+ }
+
+ // Create a resource set, create a schema resource, and load the main schema file into it.
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+ XSDResourceImpl xsdMainResource = (XSDResourceImpl)resourceSet.createResource(URI.createURI("*.xsd"));
+ xsdMainResource.setURI(uri);
+ xsdMainResource.load(resourceSet.getLoadOptions());
+
+ // Iterate over all the resources, i.e., the main resource and those that have been included or imported.
+ //
+ for (Object resource : resourceSet.getResources())
+ {
+ if (resource instanceof XSDResourceImpl)
+ {
+ XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+ XSDSchema xsdSchema = xsdResource.getSchema();
+
+ System.out.println("<!-- ===== Schema Composition =====");
+ printDirectives(" ", xsdSchema);
+ System.out.println("-->");
+
+ Element element = xsdSchema.getElement();
+ if (element != null)
+ {
+ // Print the serialization of the model.
+ //
+ XSDResourceImpl.serialize(System.out, element);
+ }
+ }
+ }
+
+ // This removes the associated DOM element, creates a new associated DOM element, and then prints it.
+ // This is a good test for how well serialization works for a model created "bottom up".
+ //
+ XSDSchema xsdMainSchema = xsdMainResource.getSchema();
+ xsdMainSchema.setDocument(null);
+ xsdMainSchema.setElement(null);
+ xsdMainSchema.updateElement();
+ System.out.println("<!-- [ " + xsdMainSchema.getSchemaLocation() + " ] -->");
+ XSDResourceImpl.serialize(System.out, xsdMainSchema.getElement());
+ }
+
+ /**
+ * Load the XML Schema file and print any diagnostics information about it.
+ * @param xsdFile the URI of an XML Schema file.
+ */
+ public void validate(String xsdFile) throws Exception
+ {
+ // This let's us test whether the string exists as a file.
+ // It not, we try as a URI.
+ //
+ URI uri;
+ File file = new File(xsdFile);
+ if (file.isFile())
+ {
+ uri = URI.createFileURI(file.getCanonicalFile().toString());
+ }
+ else
+ {
+ uri = URI.createURI(xsdFile);
+ }
+
+ // Create a resource set, create a schema resource, and load the main schema file into it.
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getLoadOptions().put(XSDResourceImpl.XSD_TRACK_LOCATION, Boolean.TRUE);
+ XSDResourceImpl xsdMainResource = (XSDResourceImpl)resourceSet.createResource(URI.createURI("*.xsd"));
+ xsdMainResource.setURI(uri);
+ xsdMainResource.load(resourceSet.getLoadOptions());
+
+ // Iterate over all the resources, i.e., the main resource and those that have been included or imported.
+ //
+ for (Object resource : resourceSet.getResources())
+ {
+ if (resource instanceof XSDResourceImpl)
+ {
+ XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+
+ System.err.println("--> " + xsdResource.getURI());
+
+ XSDSchema xsdSchema = xsdResource.getSchema();
+ xsdSchema.validate();
+
+ if (!xsdSchema.getAllDiagnostics().isEmpty())
+ {
+ for (XSDDiagnostic xsdDiagnostic : xsdSchema.getAllDiagnostics())
+ {
+ String localizedSeverity =
+ XSDPlugin.INSTANCE.getString("_UI_XSDDiagnosticSeverity_" + xsdDiagnostic.getSeverity());
+
+ System.err.println
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_DiagnosticFileLineColumn_message",
+ new Object []
+ {
+ localizedSeverity,
+ xsdDiagnostic.getLocationURI(),
+ xsdDiagnostic.getLine(),
+ xsdDiagnostic.getColumn()
+ }));
+
+ System.err.println(xsdDiagnostic.getMessage());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/package.html b/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/package.html
new file mode 100644
index 0000000..72f6451
--- /dev/null
+++ b/examples/org.eclipse.xsd.example/src/org/eclipse/xsd/example/package.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+-->
+</head>
+<body>
+
+This provides examples of the XML Schema model; it demonstrates how to drive API.
+
+</body>
+</html>
diff --git a/features/.gitignore b/features/.gitignore
new file mode 100644
index 0000000..e970233
--- /dev/null
+++ b/features/.gitignore
@@ -0,0 +1 @@
+.project
\ No newline at end of file
diff --git a/features/org.eclipse.emf.codegen-feature/feature.xml b/features/org.eclipse.emf.codegen-feature/feature.xml
index d3b95cf..b69f32a 100644
--- a/features/org.eclipse.emf.codegen-feature/feature.xml
+++ b/features/org.eclipse.emf.codegen-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.codegen"
label="%featureName"
- version="2.23.0.qualifier"
+ version="2.24.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.codegen-feature/pom.xml b/features/org.eclipse.emf.codegen-feature/pom.xml
index 252cd8c..81431c3 100644
--- a/features/org.eclipse.emf.codegen-feature/pom.xml
+++ b/features/org.eclipse.emf.codegen-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.codegen</artifactId>
- <version>2.23.0-SNAPSHOT</version>
+ <version>2.24.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.codegen.ui-feature/feature.xml b/features/org.eclipse.emf.codegen.ui-feature/feature.xml
index c300646..677a4d4 100644
--- a/features/org.eclipse.emf.codegen.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.codegen.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.codegen.ui"
label="%featureName"
- version="2.24.0.qualifier"
+ version="2.25.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.codegen.ui-feature/pom.xml b/features/org.eclipse.emf.codegen.ui-feature/pom.xml
index 01fd5fa..08469b1 100644
--- a/features/org.eclipse.emf.codegen.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.codegen.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.codegen.ui</artifactId>
- <version>2.24.0-SNAPSHOT</version>
+ <version>2.25.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.common-feature/feature.xml b/features/org.eclipse.emf.common-feature/feature.xml
index 97155bf..bcb94bb 100644
--- a/features/org.eclipse.emf.common-feature/feature.xml
+++ b/features/org.eclipse.emf.common-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.common"
label="%featureName"
- version="2.28.0.qualifier"
+ version="2.29.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.common-feature/pom.xml b/features/org.eclipse.emf.common-feature/pom.xml
index 66a204c..5197e3a 100644
--- a/features/org.eclipse.emf.common-feature/pom.xml
+++ b/features/org.eclipse.emf.common-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.common</artifactId>
- <version>2.28.0-SNAPSHOT</version>
+ <version>2.29.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.common.ui-feature/feature.xml b/features/org.eclipse.emf.common.ui-feature/feature.xml
index 3eed298..5978942 100644
--- a/features/org.eclipse.emf.common.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.common.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.common.ui"
label="%featureName"
- version="2.19.0.qualifier"
+ version="2.20.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.common.ui-feature/pom.xml b/features/org.eclipse.emf.common.ui-feature/pom.xml
index 53f982d..ccee455 100644
--- a/features/org.eclipse.emf.common.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.common.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.common.ui</artifactId>
- <version>2.19.0-SNAPSHOT</version>
+ <version>2.20.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.converter-feature/feature.xml b/features/org.eclipse.emf.converter-feature/feature.xml
index 34f466e..7b86056 100644
--- a/features/org.eclipse.emf.converter-feature/feature.xml
+++ b/features/org.eclipse.emf.converter-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.converter"
label="%featureName"
- version="2.18.0.qualifier"
+ version="2.19.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.converter-feature/pom.xml b/features/org.eclipse.emf.converter-feature/pom.xml
index 8416ecb..ef2fd12 100644
--- a/features/org.eclipse.emf.converter-feature/pom.xml
+++ b/features/org.eclipse.emf.converter-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.converter</artifactId>
- <version>2.18.0-SNAPSHOT</version>
+ <version>2.19.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.databinding-feature/feature.xml b/features/org.eclipse.emf.databinding-feature/feature.xml
index 7f7b456..45cb120 100644
--- a/features/org.eclipse.emf.databinding-feature/feature.xml
+++ b/features/org.eclipse.emf.databinding-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.databinding"
label="%featureName"
- version="1.9.0.qualifier"
+ version="1.10.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.databinding-feature/pom.xml b/features/org.eclipse.emf.databinding-feature/pom.xml
index 4b366c2..3946e2d 100644
--- a/features/org.eclipse.emf.databinding-feature/pom.xml
+++ b/features/org.eclipse.emf.databinding-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.databinding</artifactId>
- <version>1.9.0-SNAPSHOT</version>
+ <version>1.10.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.databinding.edit-feature/feature.xml b/features/org.eclipse.emf.databinding.edit-feature/feature.xml
index 9e0f662..0e10398 100644
--- a/features/org.eclipse.emf.databinding.edit-feature/feature.xml
+++ b/features/org.eclipse.emf.databinding.edit-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.databinding.edit"
label="%featureName"
- version="1.9.0.qualifier"
+ version="1.10.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.databinding.edit-feature/pom.xml b/features/org.eclipse.emf.databinding.edit-feature/pom.xml
index f61028a..9801399 100644
--- a/features/org.eclipse.emf.databinding.edit-feature/pom.xml
+++ b/features/org.eclipse.emf.databinding.edit-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.databinding.edit</artifactId>
- <version>1.9.0-SNAPSHOT</version>
+ <version>1.10.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.ecore.edit-feature/feature.xml b/features/org.eclipse.emf.ecore.edit-feature/feature.xml
index d5bf174..0203286 100644
--- a/features/org.eclipse.emf.ecore.edit-feature/feature.xml
+++ b/features/org.eclipse.emf.ecore.edit-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.ecore.edit"
label="%featureName"
- version="2.15.0.qualifier"
+ version="2.16.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.ecore.edit-feature/pom.xml b/features/org.eclipse.emf.ecore.edit-feature/pom.xml
index 67aaf9e..9074bf7 100644
--- a/features/org.eclipse.emf.ecore.edit-feature/pom.xml
+++ b/features/org.eclipse.emf.ecore.edit-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.ecore.edit</artifactId>
- <version>2.15.0-SNAPSHOT</version>
+ <version>2.16.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.ecore.editor-feature/feature.xml b/features/org.eclipse.emf.ecore.editor-feature/feature.xml
index 9c0e642..ba633ea 100644
--- a/features/org.eclipse.emf.ecore.editor-feature/feature.xml
+++ b/features/org.eclipse.emf.ecore.editor-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.ecore.editor"
label="%featureName"
- version="2.18.0.qualifier"
+ version="2.19.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.ecore.editor-feature/pom.xml b/features/org.eclipse.emf.ecore.editor-feature/pom.xml
index 1dc4ae3..2925d94 100644
--- a/features/org.eclipse.emf.ecore.editor-feature/pom.xml
+++ b/features/org.eclipse.emf.ecore.editor-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.ecore.editor</artifactId>
- <version>2.18.0-SNAPSHOT</version>
+ <version>2.19.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.ecore.xcore.lib-feature/feature.xml b/features/org.eclipse.emf.ecore.xcore.lib-feature/feature.xml
index 04624af..82ecf30 100644
--- a/features/org.eclipse.emf.ecore.xcore.lib-feature/feature.xml
+++ b/features/org.eclipse.emf.ecore.xcore.lib-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.ecore.xcore.lib"
label="%featureName"
- version="1.8.0.qualifier"
+ version="1.9.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.ecore.xcore.lib-feature/pom.xml b/features/org.eclipse.emf.ecore.xcore.lib-feature/pom.xml
index 10ef821..3d5b5a5 100644
--- a/features/org.eclipse.emf.ecore.xcore.lib-feature/pom.xml
+++ b/features/org.eclipse.emf.ecore.xcore.lib-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.ecore.xcore.lib</artifactId>
- <version>1.8.0-SNAPSHOT</version>
+ <version>1.9.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.edit-feature/feature.xml b/features/org.eclipse.emf.edit-feature/feature.xml
index 0af7bce..71431ce 100644
--- a/features/org.eclipse.emf.edit-feature/feature.xml
+++ b/features/org.eclipse.emf.edit-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.edit"
label="%featureName"
- version="2.18.0.qualifier"
+ version="2.19.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.edit-feature/pom.xml b/features/org.eclipse.emf.edit-feature/pom.xml
index d354c12..b0d963b 100644
--- a/features/org.eclipse.emf.edit-feature/pom.xml
+++ b/features/org.eclipse.emf.edit-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.edit</artifactId>
- <version>2.18.0-SNAPSHOT</version>
+ <version>2.19.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.edit.ui-feature/feature.xml b/features/org.eclipse.emf.edit.ui-feature/feature.xml
index c3478e6..a79aa13 100644
--- a/features/org.eclipse.emf.edit.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.edit.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.edit.ui"
label="%featureName"
- version="2.24.0.qualifier"
+ version="2.25.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.edit.ui-feature/pom.xml b/features/org.eclipse.emf.edit.ui-feature/pom.xml
index db8c8a6..1208a5d 100644
--- a/features/org.eclipse.emf.edit.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.edit.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.edit.ui</artifactId>
- <version>2.24.0-SNAPSHOT</version>
+ <version>2.25.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt-feature/feature.xml b/features/org.eclipse.emf.gwt-feature/feature.xml
index 4d1e973..c2a5c21 100644
--- a/features/org.eclipse.emf.gwt-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt"
label="%featureName"
- version="2.18.0.qualifier"
+ version="2.19.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt-feature/pom.xml b/features/org.eclipse.emf.gwt-feature/pom.xml
index 9056eb5..27fb187 100644
--- a/features/org.eclipse.emf.gwt-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt</artifactId>
- <version>2.18.0-SNAPSHOT</version>
+ <version>2.19.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt.common-feature/feature.xml b/features/org.eclipse.emf.gwt.common-feature/feature.xml
index d170d0a..6803f57 100644
--- a/features/org.eclipse.emf.gwt.common-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt.common-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt.common"
label="%featureName"
- version="2.16.0.qualifier"
+ version="2.17.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt.common-feature/pom.xml b/features/org.eclipse.emf.gwt.common-feature/pom.xml
index c06f18e..55b6ac3 100644
--- a/features/org.eclipse.emf.gwt.common-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt.common-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt.common</artifactId>
- <version>2.16.0-SNAPSHOT</version>
+ <version>2.17.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt.ecore-feature/feature.xml b/features/org.eclipse.emf.gwt.ecore-feature/feature.xml
index 9dbc40c..605c624 100644
--- a/features/org.eclipse.emf.gwt.ecore-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt.ecore-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt.ecore"
label="%featureName"
- version="2.17.0.qualifier"
+ version="2.18.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt.ecore-feature/pom.xml b/features/org.eclipse.emf.gwt.ecore-feature/pom.xml
index 55065c1..354d0ce 100644
--- a/features/org.eclipse.emf.gwt.ecore-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt.ecore-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt.ecore</artifactId>
- <version>2.17.0-SNAPSHOT</version>
+ <version>2.18.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt.ecore.edit-feature/feature.xml b/features/org.eclipse.emf.gwt.ecore.edit-feature/feature.xml
index e367dce..7f06ce7 100644
--- a/features/org.eclipse.emf.gwt.ecore.edit-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt.ecore.edit-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt.ecore.edit"
label="%featureName"
- version="2.14.0.qualifier"
+ version="2.15.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt.ecore.edit-feature/pom.xml b/features/org.eclipse.emf.gwt.ecore.edit-feature/pom.xml
index f86e072..bd940f0 100644
--- a/features/org.eclipse.emf.gwt.ecore.edit-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt.ecore.edit-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt.ecore.edit</artifactId>
- <version>2.14.0-SNAPSHOT</version>
+ <version>2.15.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt.edit-feature/feature.xml b/features/org.eclipse.emf.gwt.edit-feature/feature.xml
index d4aa6e0..192d29d 100644
--- a/features/org.eclipse.emf.gwt.edit-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt.edit-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt.edit"
label="%featureName"
- version="2.13.0.qualifier"
+ version="2.14.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt.edit-feature/pom.xml b/features/org.eclipse.emf.gwt.edit-feature/pom.xml
index a554527..ac0c238 100644
--- a/features/org.eclipse.emf.gwt.edit-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt.edit-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt.edit</artifactId>
- <version>2.13.0-SNAPSHOT</version>
+ <version>2.14.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt.edit.ui-feature/feature.xml b/features/org.eclipse.emf.gwt.edit.ui-feature/feature.xml
index 266a67e..d7d231d 100644
--- a/features/org.eclipse.emf.gwt.edit.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt.edit.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt.edit.ui"
label="%featureName"
- version="2.13.0.qualifier"
+ version="2.14.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt.edit.ui-feature/pom.xml b/features/org.eclipse.emf.gwt.edit.ui-feature/pom.xml
index f1003f5..4b5d997 100644
--- a/features/org.eclipse.emf.gwt.edit.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt.edit.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt.edit.ui</artifactId>
- <version>2.13.0-SNAPSHOT</version>
+ <version>2.14.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.gwt.sdk-feature/feature.xml b/features/org.eclipse.emf.gwt.sdk-feature/feature.xml
index ed43328..4ce1a42 100644
--- a/features/org.eclipse.emf.gwt.sdk-feature/feature.xml
+++ b/features/org.eclipse.emf.gwt.sdk-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.gwt.sdk"
label="%featureName"
- version="2.19.0.qualifier"
+ version="2.20.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.gwt.sdk-feature/pom.xml b/features/org.eclipse.emf.gwt.sdk-feature/pom.xml
index b5a97ea..ce07b56 100644
--- a/features/org.eclipse.emf.gwt.sdk-feature/pom.xml
+++ b/features/org.eclipse.emf.gwt.sdk-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.gwt.sdk</artifactId>
- <version>2.19.0-SNAPSHOT</version>
+ <version>2.20.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
<build>
diff --git a/features/org.eclipse.emf.mapping-feature/feature.xml b/features/org.eclipse.emf.mapping-feature/feature.xml
index 0c83198..54f2f8e 100644
--- a/features/org.eclipse.emf.mapping-feature/feature.xml
+++ b/features/org.eclipse.emf.mapping-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.mapping"
label="%featureName"
- version="2.14.0.qualifier"
+ version="2.15.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.mapping-feature/pom.xml b/features/org.eclipse.emf.mapping-feature/pom.xml
index bebc4d7..f18f0eb 100644
--- a/features/org.eclipse.emf.mapping-feature/pom.xml
+++ b/features/org.eclipse.emf.mapping-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.mapping</artifactId>
- <version>2.14.0-SNAPSHOT</version>
+ <version>2.15.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.mapping.ecore-feature/feature.xml b/features/org.eclipse.emf.mapping.ecore-feature/feature.xml
index 5b4d80a..6166038 100644
--- a/features/org.eclipse.emf.mapping.ecore-feature/feature.xml
+++ b/features/org.eclipse.emf.mapping.ecore-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.mapping.ecore"
label="%featureName"
- version="2.13.0.qualifier"
+ version="2.14.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.mapping.ecore-feature/pom.xml b/features/org.eclipse.emf.mapping.ecore-feature/pom.xml
index f2667e1..5528fe8 100644
--- a/features/org.eclipse.emf.mapping.ecore-feature/pom.xml
+++ b/features/org.eclipse.emf.mapping.ecore-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.mapping.ecore</artifactId>
- <version>2.13.0-SNAPSHOT</version>
+ <version>2.14.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.mapping.ecore.editor-feature/feature.xml b/features/org.eclipse.emf.mapping.ecore.editor-feature/feature.xml
index 0cde0b9..489e2e1 100644
--- a/features/org.eclipse.emf.mapping.ecore.editor-feature/feature.xml
+++ b/features/org.eclipse.emf.mapping.ecore.editor-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.mapping.ecore.editor"
label="%featureName"
- version="2.15.0.qualifier"
+ version="2.16.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.mapping.ecore.editor-feature/pom.xml b/features/org.eclipse.emf.mapping.ecore.editor-feature/pom.xml
index 83c0100..8adb00e 100644
--- a/features/org.eclipse.emf.mapping.ecore.editor-feature/pom.xml
+++ b/features/org.eclipse.emf.mapping.ecore.editor-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.mapping.ecore.editor</artifactId>
- <version>2.15.0-SNAPSHOT</version>
+ <version>2.16.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.mapping.ui-feature/feature.xml b/features/org.eclipse.emf.mapping.ui-feature/feature.xml
index dd89ae0..19ec020 100644
--- a/features/org.eclipse.emf.mapping.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.mapping.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.mapping.ui"
label="%featureName"
- version="2.14.0.qualifier"
+ version="2.15.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.mapping.ui-feature/pom.xml b/features/org.eclipse.emf.mapping.ui-feature/pom.xml
index 7134a43..ebf00b3 100644
--- a/features/org.eclipse.emf.mapping.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.mapping.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.mapping.ui</artifactId>
- <version>2.14.0-SNAPSHOT</version>
+ <version>2.15.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.oda-feature/feature.xml b/features/org.eclipse.emf.oda-feature/feature.xml
index 447fdee..6eea718 100755
--- a/features/org.eclipse.emf.oda-feature/feature.xml
+++ b/features/org.eclipse.emf.oda-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.oda"
label="%featureName"
- version="1.8.0.qualifier"
+ version="1.9.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.oda-feature/pom.xml b/features/org.eclipse.emf.oda-feature/pom.xml
index d535423..c9b6848 100644
--- a/features/org.eclipse.emf.oda-feature/pom.xml
+++ b/features/org.eclipse.emf.oda-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.oda</artifactId>
- <version>1.8.0-SNAPSHOT</version>
+ <version>1.9.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.oda.ecore-feature/feature.xml b/features/org.eclipse.emf.oda.ecore-feature/feature.xml
index 15b6ed7..431ea2e 100755
--- a/features/org.eclipse.emf.oda.ecore-feature/feature.xml
+++ b/features/org.eclipse.emf.oda.ecore-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.oda.ecore"
label="%featureName"
- version="1.8.0.qualifier"
+ version="1.9.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.oda.ecore-feature/pom.xml b/features/org.eclipse.emf.oda.ecore-feature/pom.xml
index 55dc545..92e7750 100644
--- a/features/org.eclipse.emf.oda.ecore-feature/pom.xml
+++ b/features/org.eclipse.emf.oda.ecore-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.oda.ecore</artifactId>
- <version>1.8.0-SNAPSHOT</version>
+ <version>1.9.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.oda.ecore.ui-feature/feature.xml b/features/org.eclipse.emf.oda.ecore.ui-feature/feature.xml
index 0f99504..0bb4f6c 100755
--- a/features/org.eclipse.emf.oda.ecore.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.oda.ecore.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.oda.ecore.ui"
label="%featureName"
- version="1.7.0.qualifier"
+ version="1.8.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.oda.ecore.ui-feature/pom.xml b/features/org.eclipse.emf.oda.ecore.ui-feature/pom.xml
index 74f8a52..904a5fc 100644
--- a/features/org.eclipse.emf.oda.ecore.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.oda.ecore.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.oda.ecore.ui</artifactId>
- <version>1.7.0-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.oda.sdk-feature/feature.xml b/features/org.eclipse.emf.oda.sdk-feature/feature.xml
index 8a372e5..5932304 100755
--- a/features/org.eclipse.emf.oda.sdk-feature/feature.xml
+++ b/features/org.eclipse.emf.oda.sdk-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.oda.sdk"
label="%featureName"
- version="1.10.0.qualifier"
+ version="1.11.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.oda.sdk-feature/pom.xml b/features/org.eclipse.emf.oda.sdk-feature/pom.xml
index c6c3431..388f4e3 100644
--- a/features/org.eclipse.emf.oda.sdk-feature/pom.xml
+++ b/features/org.eclipse.emf.oda.sdk-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.oda.sdk</artifactId>
- <version>1.10.0-SNAPSHOT</version>
+ <version>1.11.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
<build>
diff --git a/features/org.eclipse.emf.rap.common.ui-feature/feature.xml b/features/org.eclipse.emf.rap.common.ui-feature/feature.xml
index 21069ab..0734376 100755
--- a/features/org.eclipse.emf.rap.common.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.rap.common.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.rap.common.ui"
label="%featureName"
- version="2.13.0.qualifier"
+ version="2.14.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.rap.common.ui-feature/pom.xml b/features/org.eclipse.emf.rap.common.ui-feature/pom.xml
index 971c8b6..0a92da9 100644
--- a/features/org.eclipse.emf.rap.common.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.rap.common.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.rap.common.ui</artifactId>
- <version>2.13.0-SNAPSHOT</version>
+ <version>2.14.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.rap.edit.ui-feature/feature.xml b/features/org.eclipse.emf.rap.edit.ui-feature/feature.xml
index dbf5591..3bcc5c8 100755
--- a/features/org.eclipse.emf.rap.edit.ui-feature/feature.xml
+++ b/features/org.eclipse.emf.rap.edit.ui-feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.emf.rap.edit.ui"
label="%featureName"
- version="2.14.0.qualifier"
+ version="2.15.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.license"
license-feature-version="2.11.0">
diff --git a/features/org.eclipse.emf.rap.edit.ui-feature/pom.xml b/features/org.eclipse.emf.rap.edit.ui-feature/pom.xml
index a77ea47..1876c4f 100644
--- a/features/org.eclipse.emf.rap.edit.ui-feature/pom.xml
+++ b/features/org.eclipse.emf.rap.edit.ui-feature/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf.features</groupId>
<artifactId>org.eclipse.emf.rap.edit.ui</artifactId>
- <version>2.14.0-SNAPSHOT</version>
+ <version>2.15.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.xsd-feature/.gitignore b/features/org.eclipse.xsd-feature/.gitignore
new file mode 100644
index 0000000..5d0bb32
--- /dev/null
+++ b/features/org.eclipse.xsd-feature/.gitignore
@@ -0,0 +1 @@
+build.xml
\ No newline at end of file
diff --git a/features/org.eclipse.xsd-feature/.project b/features/org.eclipse.xsd-feature/.project
new file mode 100644
index 0000000..7570aff
--- /dev/null
+++ b/features/org.eclipse.xsd-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd-feature/build.properties b/features/org.eclipse.xsd-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd-feature/feature.properties b/features/org.eclipse.xsd-feature/feature.properties
new file mode 100644
index 0000000..cc978ad
--- /dev/null
+++ b/features/org.eclipse.xsd-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2002-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD - XML Schema Definition Model
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=The XSD model for representing and manipulating XML Schemas.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd-feature/feature.xml b/features/org.eclipse.xsd-feature/feature.xml
new file mode 100644
index 0000000..3b3ca21
--- /dev/null
+++ b/features/org.eclipse.xsd-feature/feature.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd"
+ label="%featureName"
+ version="2.21.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.ecore"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd-feature/pom.xml b/features/org.eclipse.xsd-feature/pom.xml
new file mode 100644
index 0000000..62dbed7
--- /dev/null
+++ b/features/org.eclipse.xsd-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd</artifactId>
+ <version>2.21.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.ecore.converter-feature/.project b/features/org.eclipse.xsd.ecore.converter-feature/.project
new file mode 100644
index 0000000..481e018
--- /dev/null
+++ b/features/org.eclipse.xsd.ecore.converter-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.ecore.converter-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.ecore.converter-feature/build.properties b/features/org.eclipse.xsd.ecore.converter-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.ecore.converter-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.ecore.converter-feature/feature.properties b/features/org.eclipse.xsd.ecore.converter-feature/feature.properties
new file mode 100644
index 0000000..163758e
--- /dev/null
+++ b/features/org.eclipse.xsd.ecore.converter-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2007-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Ecore Converter
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Importer and exporter for converting between Ecore models and XML Schemas.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.ecore.converter-feature/feature.xml b/features/org.eclipse.xsd.ecore.converter-feature/feature.xml
new file mode 100644
index 0000000..44665a7
--- /dev/null
+++ b/features/org.eclipse.xsd.ecore.converter-feature/feature.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.ecore.converter"
+ label="%featureName"
+ version="2.14.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.core.resources"/>
+ <import plugin="org.eclipse.xsd"/>
+ <import plugin="org.eclipse.emf.importer"/>
+ <import plugin="org.eclipse.emf.exporter"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd.ecore.converter"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.xsd.ecore.importer"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.xsd.ecore.exporter"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.ecore.converter-feature/pom.xml b/features/org.eclipse.xsd.ecore.converter-feature/pom.xml
new file mode 100644
index 0000000..a8cbf77
--- /dev/null
+++ b/features/org.eclipse.xsd.ecore.converter-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.ecore.converter</artifactId>
+ <version>2.14.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.edit-feature/.project b/features/org.eclipse.xsd.edit-feature/.project
new file mode 100644
index 0000000..32447a5
--- /dev/null
+++ b/features/org.eclipse.xsd.edit-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.edit-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.edit-feature/build.properties b/features/org.eclipse.xsd.edit-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.edit-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.edit-feature/feature.properties b/features/org.eclipse.xsd.edit-feature/feature.properties
new file mode 100644
index 0000000..6140282
--- /dev/null
+++ b/features/org.eclipse.xsd.edit-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2007-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Edit
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Platform-independent support for viewing and editing XML Schemas.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.edit-feature/feature.xml b/features/org.eclipse.xsd.edit-feature/feature.xml
new file mode 100644
index 0000000..61afff4
--- /dev/null
+++ b/features/org.eclipse.xsd.edit-feature/feature.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.edit"
+ label="%featureName"
+ version="2.15.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.edit"/>
+ <import plugin="org.eclipse.xsd"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.edit-feature/pom.xml b/features/org.eclipse.xsd.edit-feature/pom.xml
new file mode 100644
index 0000000..0136ab1
--- /dev/null
+++ b/features/org.eclipse.xsd.edit-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.edit</artifactId>
+ <version>2.15.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.editor-feature/.project b/features/org.eclipse.xsd.editor-feature/.project
new file mode 100644
index 0000000..ec774e8
--- /dev/null
+++ b/features/org.eclipse.xsd.editor-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.editor-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.editor-feature/build.properties b/features/org.eclipse.xsd.editor-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.editor-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.editor-feature/feature.properties b/features/org.eclipse.xsd.editor-feature/feature.properties
new file mode 100644
index 0000000..5f8f921
--- /dev/null
+++ b/features/org.eclipse.xsd.editor-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2007-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Sample Editor
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Simple, tree-based XML Schema editor for the IDE.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.editor-feature/feature.xml b/features/org.eclipse.xsd.editor-feature/feature.xml
new file mode 100644
index 0000000..96dd879
--- /dev/null
+++ b/features/org.eclipse.xsd.editor-feature/feature.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.editor"
+ label="%featureName"
+ version="2.15.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.core.resources"/>
+ <import plugin="org.eclipse.jface.text"/>
+ <import plugin="org.eclipse.ui.ide"/>
+ <import plugin="org.eclipse.ui.workbench.texteditor"/>
+ <import plugin="org.eclipse.ui.editors"/>
+ <import plugin="org.eclipse.emf.edit.ui"/>
+ <import plugin="org.eclipse.emf.ecore.xmi"/>
+ <import plugin="org.eclipse.xsd.edit"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd.editor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.editor-feature/pom.xml b/features/org.eclipse.xsd.editor-feature/pom.xml
new file mode 100644
index 0000000..92807bf
--- /dev/null
+++ b/features/org.eclipse.xsd.editor-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.editor</artifactId>
+ <version>2.15.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.example-feature/.project b/features/org.eclipse.xsd.example-feature/.project
new file mode 100644
index 0000000..5223686
--- /dev/null
+++ b/features/org.eclipse.xsd.example-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.example-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd.example/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.example-feature/.settings/org.eclipse.pde.prefs b/features/org.eclipse.xsd.example-feature/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..ac20b4f
--- /dev/null
+++ b/features/org.eclipse.xsd.example-feature/.settings/org.eclipse.pde.prefs
@@ -0,0 +1 @@
+compilers.f.unresolved-features=2
\ No newline at end of file
diff --git a/features/org.eclipse.xsd.example-feature/build.properties b/features/org.eclipse.xsd.example-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.example-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.example-feature/feature.properties b/features/org.eclipse.xsd.example-feature/feature.properties
new file mode 100644
index 0000000..84058c1
--- /dev/null
+++ b/features/org.eclipse.xsd.example-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2007-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Example
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Simple example illustrating the use of the XSD model APIs.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.example-feature/feature.xml b/features/org.eclipse.xsd.example-feature/feature.xml
new file mode 100644
index 0000000..5cf0c74
--- /dev/null
+++ b/features/org.eclipse.xsd.example-feature/feature.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.example"
+ label="%featureName"
+ version="2.13.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.xsd"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd.example"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.example-feature/pom.xml b/features/org.eclipse.xsd.example-feature/pom.xml
new file mode 100644
index 0000000..42c93a2
--- /dev/null
+++ b/features/org.eclipse.xsd.example-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.example</artifactId>
+ <version>2.13.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.license-feature/.project b/features/org.eclipse.xsd.license-feature/.project
new file mode 100644
index 0000000..4bac74b
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.license-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.license-feature/build.properties b/features/org.eclipse.xsd.license-feature/build.properties
new file mode 100644
index 0000000..f39b293
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/build.properties
@@ -0,0 +1,7 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-2.0.html,\
+ license.html,\
+ build.properties
+src.includes = epl-2.0.html,\
+ license.html
diff --git a/features/org.eclipse.xsd.license-feature/epl-2.0.html b/features/org.eclipse.xsd.license-feature/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/features/org.eclipse.xsd.license-feature/feature.properties b/features/org.eclipse.xsd.license-feature/feature.properties
new file mode 100755
index 0000000..9dd2dd5
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/feature.properties
@@ -0,0 +1,148 @@
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+\n\
+November 22, 2017\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION\n\
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF\n\
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE\n\
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED\n\
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE\n\
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY\n\
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU\n\
+MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
+is provided to you under the terms and conditions of the Eclipse Public License\n\
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also\n\
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,\n\
+"Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code, documentation\n\
+and other files maintained in the Eclipse Foundation source code repository\n\
+("Repository") in software modules ("Modules") and made available as\n\
+downloadable archives ("Downloads").\n\
+\n\
+- Content may be structured and packaged into modules to facilitate\n\
+ delivering, extending, and upgrading the Content. Typical modules may\n\
+ include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and\n\
+ features ("Features").\n\
+- Each Plug-in or Fragment may be packaged as a sub-directory or JAR\n\
+ (Java\u2122 ARchive) in a directory named "plugins".\n\
+- A Feature is a bundle of one or more Plug-ins and/or Fragments and\n\
+ associated material. Each Feature may be packaged as a sub-directory in a\n\
+ directory named "features". Within a Feature, files named "feature.xml" may\n\
+ contain a list of the names and version numbers of the Plug-ins and/or\n\
+ Fragments associated with that Feature.\n\
+- Features may also include other Features ("Included Features"). Within a\n\
+ Feature, files named "feature.xml" may contain a list of the names and\n\
+ version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be contained in\n\
+files named "about.html" ("Abouts"). The terms and conditions governing Features\n\
+and Included Features should be contained in files named "license.html"\n\
+("Feature Licenses"). Abouts and Feature Licenses may be located in any\n\
+directory of a Download or Module including, but not limited to the following\n\
+locations:\n\
+\n\
+- The top-level (root) directory\n\
+- Plug-in and Fragment directories\n\
+- Inside Plug-ins and Fragments packaged as JARs\n\
+- Sub-directories of the directory named "src" of certain Plug-ins\n\
+- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using\n\
+the Provisioning Technology (as defined below), you must agree to a license\n\
+("Feature Update License") during the installation process. If the Feature\n\
+contains Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform you\n\
+where you can locate them. Feature Update Licenses may be found in the "license"\n\
+property of files named "feature.properties" found within a Feature. Such\n\
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and\n\
+conditions (or references to such terms and conditions) that govern your use of\n\
+the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL\n\
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE\n\
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+- Eclipse Public License Version 1.0 (available at\n\
+ http://www.eclipse.org/legal/epl-v10.html)\n\
+- Eclipse Distribution License Version 1.0 (available at\n\
+ http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+- Common Public License Version 1.0 (available at\n\
+ http://www.eclipse.org/legal/cpl-v10.html)\n\
+- Apache Software License 1.1 (available at\n\
+ http://www.apache.org/licenses/LICENSE)\n\
+- Apache Software License 2.0 (available at\n\
+ http://www.apache.org/licenses/LICENSE-2.0)\n\
+- Mozilla Public License Version 1.1 (available at\n\
+ http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO\n\
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is\n\
+provided, please contact the Eclipse Foundation to determine what terms and\n\
+conditions govern that particular Content.\n\
+\n\
+Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which\n\
+include, but are not limited to, p2 and the Eclipse Update Manager\n\
+("Provisioning Technology") for the purpose of allowing users to install\n\
+software, documentation, information and/or other materials (collectively\n\
+"Installable Software"). This capability is provided with the intent of allowing\n\
+such users to install, extend and update Eclipse-based products. Information\n\
+about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install\n\
+Installable Software. You shall be responsible for enabling the applicable\n\
+license agreements relating to the Installable Software to be presented to, and\n\
+accepted by, the users of the Provisioning Technology in accordance with the\n\
+Specification. By using Provisioning Technology in such a manner and making it\n\
+available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the\n\
+following:\n\
+\n\
+1. A series of actions may occur ("Provisioning Process") in which a user may\n\
+ execute the Provisioning Technology on a machine ("Target Machine") with the\n\
+ intent of installing, extending or updating the functionality of an\n\
+ Eclipse-based product.\n\
+2. During the Provisioning Process, the Provisioning Technology may cause third\n\
+ party Installable Software or a portion thereof to be accessed and copied to\n\
+ the Target Machine.\n\
+3. Pursuant to the Specification, you will provide to the user the terms and\n\
+ conditions that govern the use of the Installable Software ("Installable\n\
+ Software Agreement") and such Installable Software Agreement shall be\n\
+ accessed from the Target Machine in accordance with the Specification. Such\n\
+ Installable Software Agreement must inform the user of the terms and\n\
+ conditions that govern the Installable Software and must solicit acceptance\n\
+ by the end user in the manner prescribed in such Installable\n\
+ Software Agreement. Upon such indication of agreement by the user, the\n\
+ provisioning Technology will complete installation of the\n\
+ Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are currently\n\
+may have restrictions on the import, possession, and use, and/or re-export to\n\
+another country, of encryption software. BEFORE using any encryption software,\n\
+please check the country's laws, regulations and policies concerning the import,\n\
+possession, or use, and re-export of encryption software, to see if this is\n\
+permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the\n\
+United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/features/org.eclipse.xsd.license-feature/feature.xml b/features/org.eclipse.xsd.license-feature/feature.xml
new file mode 100644
index 0000000..97f0f08
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/feature.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.license"
+ label="XSD License"
+ version="2.12.0.qualifier"
+ provider-name="Eclipse Modeling Project">
+
+ <description>
+ License for XML Schema Definition.
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2014-2018 Eclipse contributors and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+</feature>
diff --git a/features/org.eclipse.xsd.license-feature/license.html b/features/org.eclipse.xsd.license-feature/license.html
new file mode 100644
index 0000000..008b801
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/license.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+ <h2>Eclipse Foundation Software User Agreement</h2>
+ <p>November 22, 2017</p>
+
+ <h3>Usage Of Content</h3>
+
+ <p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+ INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY
+ THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+ GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+ APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+ AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+ AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+ USE THE CONTENT.</p>
+
+ <h3>Applicable Licenses</h3>
+
+ <p>
+ Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+ Eclipse Public License Version 2.0 ("EPL"). A copy of the
+ EPL is provided with this Content and is also available at <a
+ href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>Content includes, but is not limited to, source code, object
+ code, documentation and other files maintained in the Eclipse
+ Foundation source code repository ("Repository") in software
+ modules ("Modules") and made available as downloadable
+ archives ("Downloads").</p>
+
+ <ul>
+ <li>Content may be structured and packaged into modules to
+ facilitate delivering, extending, and upgrading the Content. Typical
+ modules may include plug-ins ("Plug-ins"), plug-in
+ fragments ("Fragments"), and features
+ ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory
+ or JAR (Java™ ARchive) in a directory named
+ "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+ Fragments and associated material. Each Feature may be packaged as a
+ sub-directory in a directory named "features". Within a
+ Feature, files named "feature.xml" may contain a list of
+ the names and version numbers of the Plug-ins and/or Fragments
+ associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+ Features"). Within a Feature, files named
+ "feature.xml" may contain a list of the names and version
+ numbers of Included Features.</li>
+ </ul>
+
+ <p>The terms and conditions governing Plug-ins and Fragments should
+ be contained in files named "about.html"
+ ("Abouts"). The terms and conditions governing Features and
+ Included Features should be contained in files named
+ "license.html" ("Feature Licenses"). Abouts and
+ Feature Licenses may be located in any directory of a Download or
+ Module including, but not limited to the following locations:</p>
+
+ <ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of
+ certain Plug-ins</li>
+ <li>Feature directories</li>
+ </ul>
+
+ <p>Note: if a Feature made available by the Eclipse Foundation is
+ installed using the Provisioning Technology (as defined below), you
+ must agree to a license ("Feature Update License") during
+ the installation process. If the Feature contains Included Features,
+ the Feature Update License should either provide you with the terms
+ and conditions governing the Included Features or inform you where you
+ can locate them. Feature Update Licenses may be found in the
+ "license" property of files named
+ "feature.properties" found within a Feature. Such Abouts,
+ Feature Licenses, and Feature Update Licenses contain the terms and
+ conditions (or references to such terms and conditions) that govern
+ your use of the associated Content in that directory.</p>
+
+ <p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+ REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+ CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+ ARE NOT LIMITED TO):</p>
+
+ <ul>
+ <li>Eclipse Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+ </li>
+ <li>Eclipse Distribution License Version 1.0 (available at <a
+ href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+ </li>
+ <li>Common Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+ </li>
+ <li>Apache Software License 1.1 (available at <a
+ href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+ </li>
+ <li>Apache Software License 2.0 (available at <a
+ href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+ </li>
+ <li>Mozilla Public License Version 1.1 (available at <a
+ href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+ </li>
+ </ul>
+
+ <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+ CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+ or Feature Update License is provided, please contact the Eclipse
+ Foundation to determine what terms and conditions govern that
+ particular Content.</p>
+
+
+ <h3>Use of Provisioning Technology</h3>
+
+ <p>
+ The Eclipse Foundation makes available provisioning software, examples
+ of which include, but are not limited to, p2 and the Eclipse Update
+ Manager ("Provisioning Technology") for the purpose of
+ allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+ capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+ packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").
+ </p>
+
+ <p>You may use Provisioning Technology to allow other parties to
+ install Installable Software. You shall be responsible for enabling
+ the applicable license agreements relating to the Installable Software
+ to be presented to, and accepted by, the users of the Provisioning
+ Technology in accordance with the Specification. By using Provisioning
+ Technology in such a manner and making it available in accordance with
+ the Specification, you further acknowledge your agreement to, and the
+ acquisition of all necessary rights to permit the following:</p>
+
+ <ol>
+ <li>A series of actions may occur ("Provisioning
+ Process") in which a user may execute the Provisioning
+ Technology on a machine ("Target Machine") with the intent
+ of installing, extending or updating the functionality of an
+ Eclipse-based product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+ may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+ the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such
+ Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+ Software Agreement must inform the user of the terms and conditions
+ that govern the Installable Software and must solicit acceptance by
+ the end user in the manner prescribed in such Installable Software
+ Agreement. Upon such indication of agreement by the user, the
+ provisioning Technology will complete installation of the Installable
+ Software.</li>
+ </ol>
+
+ <h3>Cryptography</h3>
+
+ <p>Content may contain encryption software. The country in which
+ you are currently may have restrictions on the import, possession, and
+ use, and/or re-export to another country, of encryption software.
+ BEFORE using any encryption software, please check the country's laws,
+ regulations and policies concerning the import, possession, or use,
+ and re-export of encryption software, to see if this is permitted.</p>
+
+ <p>
+ <small>Java and all Java-based trademarks are trademarks of
+ Oracle Corporation in the United States, other countries, or both.</small>
+ </p>
+</body>
+</html>
diff --git a/features/org.eclipse.xsd.license-feature/pom.xml b/features/org.eclipse.xsd.license-feature/pom.xml
new file mode 100644
index 0000000..9e48052
--- /dev/null
+++ b/features/org.eclipse.xsd.license-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.license</artifactId>
+ <version>2.12.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.mapping-feature/.project b/features/org.eclipse.xsd.mapping-feature/.project
new file mode 100644
index 0000000..c1bdf5f
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.mapping-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.mapping-feature/build.properties b/features/org.eclipse.xsd.mapping-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.mapping-feature/feature.properties b/features/org.eclipse.xsd.mapping-feature/feature.properties
new file mode 100644
index 0000000..62bb339
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2007-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Mapping
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Platform-independent support for mapping between XML Schemas and Ecore models.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.mapping-feature/feature.xml b/features/org.eclipse.xsd.mapping-feature/feature.xml
new file mode 100644
index 0000000..0076505
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping-feature/feature.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.mapping"
+ label="%featureName"
+ version="2.15.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.ecore.xmi"/>
+ <import plugin="org.eclipse.emf.ecore.edit"/>
+ <import plugin="org.eclipse.emf.mapping"/>
+ <import plugin="org.eclipse.xsd"/>
+ <import plugin="org.eclipse.xsd.edit"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd.mapping"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.emf.mapping.xsd2ecore"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.mapping-feature/pom.xml b/features/org.eclipse.xsd.mapping-feature/pom.xml
new file mode 100644
index 0000000..9f46918
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.mapping</artifactId>
+ <version>2.15.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.mapping.editor-feature/.project b/features/org.eclipse.xsd.mapping.editor-feature/.project
new file mode 100644
index 0000000..4a54699
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping.editor-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.mapping.editor-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.mapping.editor-feature/build.properties b/features/org.eclipse.xsd.mapping.editor-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping.editor-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.mapping.editor-feature/feature.properties b/features/org.eclipse.xsd.mapping.editor-feature/feature.properties
new file mode 100644
index 0000000..63aa0f1
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping.editor-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2007-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD Mapping Editor
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=Editor for examining mappings between XML Schemas and Ecore models in the IDE.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.mapping.editor-feature/feature.xml b/features/org.eclipse.xsd.mapping.editor-feature/feature.xml
new file mode 100644
index 0000000..54281c6
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping.editor-feature/feature.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.mapping.editor"
+ label="%featureName"
+ version="2.15.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.mapping.ui"/>
+ <import plugin="org.eclipse.emf.mapping.xsd2ecore"/>
+ <import plugin="org.eclipse.xsd.edit"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.xsd.mapping.editor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.emf.mapping.xsd2ecore.editor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.mapping.editor-feature/pom.xml b/features/org.eclipse.xsd.mapping.editor-feature/pom.xml
new file mode 100644
index 0000000..9ef11ea
--- /dev/null
+++ b/features/org.eclipse.xsd.mapping.editor-feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.mapping.editor</artifactId>
+ <version>2.15.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/features/org.eclipse.xsd.sdk-feature/.gitignore b/features/org.eclipse.xsd.sdk-feature/.gitignore
new file mode 100644
index 0000000..c14487c
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/.gitignore
@@ -0,0 +1 @@
+build.xml
diff --git a/features/org.eclipse.xsd.sdk-feature/.project b/features/org.eclipse.xsd.sdk-feature/.project
new file mode 100644
index 0000000..3eab04f
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.sdk-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.xsd.sdk-feature/.settings/org.eclipse.pde.prefs b/features/org.eclipse.xsd.sdk-feature/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..ac20b4f
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/.settings/org.eclipse.pde.prefs
@@ -0,0 +1 @@
+compilers.f.unresolved-features=2
\ No newline at end of file
diff --git a/features/org.eclipse.xsd.sdk-feature/build.properties b/features/org.eclipse.xsd.sdk-feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.xsd.sdk-feature/feature.properties b/features/org.eclipse.xsd.sdk-feature/feature.properties
new file mode 100644
index 0000000..4102a18
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/feature.properties
@@ -0,0 +1,23 @@
+# /**
+# * Copyright (c) 2002-2011 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=XSD - XML Schema Definition SDK
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "description" property - description of the feature
+description=The full SDK for XSD, including source and documentation.
+
+EMFUpdateSiteName=Eclipse Modeling Framework Updates
diff --git a/features/org.eclipse.xsd.sdk-feature/feature.xml b/features/org.eclipse.xsd.sdk-feature/feature.xml
new file mode 100644
index 0000000..e1f16a7
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/feature.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.xsd.sdk"
+ label="%featureName"
+ version="2.33.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.xsd.license"
+ license-feature-version="2.12.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v20.html">
+ Copyright (c) 2002-2018 IBM Corporation and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v2.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v20.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ <discovery label="%EMFUpdateSiteName" url="https://download.eclipse.org/modeling/emf/emf/builds/"/>
+ </url>
+
+ <includes
+ id="org.eclipse.xsd"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.source"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.ecore.converter"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.ecore.converter.source"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.edit"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.edit.source"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.editor"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.editor.source"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.mapping"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.mapping.source"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.mapping.editor"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.mapping.editor.source"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.xsd.doc"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.xsd.example.installer"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.xsd.sdk-feature/pom.xml b/features/org.eclipse.xsd.sdk-feature/pom.xml
new file mode 100644
index 0000000..88c0e07
--- /dev/null
+++ b/features/org.eclipse.xsd.sdk-feature/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.features</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/features</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf.features</groupId>
+ <artifactId>org.eclipse.xsd.sdk</artifactId>
+ <version>2.33.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/plugins/org.eclipse.emf.codegen.ecore.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.codegen.ecore.ui/META-INF/MANIFEST.MF
index 2fc2325..4aaca8f 100644
--- a/plugins/org.eclipse.emf.codegen.ecore.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.codegen.ecore.ui/META-INF/MANIFEST.MF
@@ -18,8 +18,8 @@
org.eclipse.jdt.core;bundle-version="[3.6.0,4.0.0)",
org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
org.eclipse.emf.codegen.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.edit.ui;bundle-version="[2.22.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore.edit;bundle-version="[2.13.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit.ui;bundle-version="[2.23.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.14.0,3.0.0)";visibility:=reexport,
org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.codegen.ecore.ui/about.mappings b/plugins/org.eclipse.emf.codegen.ecore.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.codegen.ecore.ui/about.mappings
+++ b/plugins/org.eclipse.emf.codegen.ecore.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.codegen.ecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.codegen.ecore/META-INF/MANIFEST.MF
index e2a2454..81d2c4d 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.codegen.ecore/META-INF/MANIFEST.MF
@@ -24,7 +24,7 @@
org.eclipse.jdt.core;bundle-version="[3.6.0,4.0.0)",
org.eclipse.jdt.launching;bundle-version="[3.5.0,4.0.0)",
org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.codegen;bundle-version="[2.22.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.codegen;bundle-version="[2.23.0,3.0.0)";visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="[2.17.0,3.0.0)",
org.eclipse.text;bundle-version="[3.5.0,4.0.0)"
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.codegen.ecore/about.mappings b/plugins/org.eclipse.emf.codegen.ecore/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/about.mappings
+++ b/plugins/org.eclipse.emf.codegen.ecore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.codegen.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.codegen.ui/META-INF/MANIFEST.MF
index c82aad8..55dc1c4 100644
--- a/plugins/org.eclipse.emf.codegen.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.codegen.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.codegen.ui; singleton:=true
-Bundle-Version: 2.23.0.qualifier
+Bundle-Version: 2.24.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.codegen.presentation.CodeGenUIPlugin
Bundle-Vendor: %providerName
@@ -11,7 +11,7 @@
Export-Package: org.eclipse.emf.codegen.action,
org.eclipse.emf.codegen.presentation
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.codegen;bundle-version="[2.22.0,3.0.0)",
+ org.eclipse.emf.codegen;bundle-version="[2.23.0,3.0.0)",
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
org.eclipse.jdt.core;bundle-version="[3.6.0,4.0.0)",
org.eclipse.jdt.launching;bundle-version="[3.5.0,4.0.0)",
@@ -23,7 +23,7 @@
org.eclipse.ui.views;bundle-version="[3.5.0,4.0.0)",
org.eclipse.ui.workbench;bundle-version="[3.6.0,4.0.0)",
org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.common.ui;bundle-version="[2.18.0,3.0.0)"
+ org.eclipse.emf.common.ui;bundle-version="[2.21.0,3.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.codegen.ui
diff --git a/plugins/org.eclipse.emf.codegen.ui/about.mappings b/plugins/org.eclipse.emf.codegen.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.codegen.ui/about.mappings
+++ b/plugins/org.eclipse.emf.codegen.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.codegen.ui/pom.xml b/plugins/org.eclipse.emf.codegen.ui/pom.xml
index e983173..f3da65a 100644
--- a/plugins/org.eclipse.emf.codegen.ui/pom.xml
+++ b/plugins/org.eclipse.emf.codegen.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.codegen.ui</artifactId>
- <version>2.23.0-SNAPSHOT</version>
+ <version>2.24.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.codegen/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.codegen/META-INF/MANIFEST.MF
index 7f12022..0004f89 100644
--- a/plugins/org.eclipse.emf.codegen/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.codegen/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.codegen; singleton:=true
-Bundle-Version: 2.22.0.qualifier
+Bundle-Version: 2.23.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.codegen.CodeGenPlugin$Implementation
Bundle-Vendor: %providerName
@@ -18,7 +18,7 @@
org.eclipse.emf.codegen.merge.properties,
org.eclipse.emf.codegen.util
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.common;bundle-version="[2.22.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)";visibility:=reexport,
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
org.eclipse.jdt.core;bundle-version="[3.6.0,4.0.0)",
org.eclipse.jdt.launching;bundle-version="[3.5.0,4.0.0)",
diff --git a/plugins/org.eclipse.emf.codegen/about.mappings b/plugins/org.eclipse.emf.codegen/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.codegen/about.mappings
+++ b/plugins/org.eclipse.emf.codegen/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.codegen/pom.xml b/plugins/org.eclipse.emf.codegen/pom.xml
index 3cc69da..c04f2e0 100644
--- a/plugins/org.eclipse.emf.codegen/pom.xml
+++ b/plugins/org.eclipse.emf.codegen/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.codegen</artifactId>
- <version>2.22.0-SNAPSHOT</version>
+ <version>2.23.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.common.ui/META-INF/MANIFEST.MF
index f6a9f44..ed168b1 100644
--- a/plugins/org.eclipse.emf.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.common.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.common.ui;singleton:=true
-Bundle-Version: 2.20.0.qualifier
+Bundle-Version: 2.21.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.common.ui.CommonUIPlugin$Implementation
Bundle-Vendor: %providerName
@@ -17,7 +17,7 @@
org.eclipse.emf.common.ui.wizard
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.ui;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
- org.eclipse.emf.common;bundle-version="[2.24.0,3.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)",
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";resolution:=optional,
org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)";resolution:=optional,
org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)";resolution:=optional
diff --git a/plugins/org.eclipse.emf.common.ui/about.mappings b/plugins/org.eclipse.emf.common.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.common.ui/about.mappings
+++ b/plugins/org.eclipse.emf.common.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.common.ui/pom.xml b/plugins/org.eclipse.emf.common.ui/pom.xml
index 23a1856..b7cb1b1 100644
--- a/plugins/org.eclipse.emf.common.ui/pom.xml
+++ b/plugins/org.eclipse.emf.common.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.common.ui</artifactId>
- <version>2.20.0-SNAPSHOT</version>
+ <version>2.21.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.common/META-INF/MANIFEST.MF
index 2f032c6..1711c14 100644
--- a/plugins/org.eclipse.emf.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.common/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.common;singleton:=true
-Bundle-Version: 2.27.0.qualifier
+Bundle-Version: 2.28.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.common.CommonPlugin$Implementation$Activator
Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.emf.common/about.mappings b/plugins/org.eclipse.emf.common/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.common/about.mappings
+++ b/plugins/org.eclipse.emf.common/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.common/pom.xml b/plugins/org.eclipse.emf.common/pom.xml
index b8437f7..22e658d 100644
--- a/plugins/org.eclipse.emf.common/pom.xml
+++ b/plugins/org.eclipse.emf.common/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.common</artifactId>
- <version>2.27.0-SNAPSHOT</version>
+ <version>2.28.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.converter/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.converter/META-INF/MANIFEST.MF
index b53ee90..435eada 100644
--- a/plugins/org.eclipse.emf.converter/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.converter/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.converter; singleton:=true
-Bundle-Version: 2.11.0.qualifier
+Bundle-Version: 2.12.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.converter.ConverterPlugin$Implementation
Bundle-Vendor: %providerName
@@ -14,9 +14,9 @@
org.eclipse.emf.converter.ui.contribution.base,
org.eclipse.emf.converter.util
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.codegen.ecore;bundle-version="[2.31.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.codegen.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";resolution:=optional,
- org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.31.0,3.0.0)";resolution:=optional
+ org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.33.0,3.0.0)";resolution:=optional
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.converter
diff --git a/plugins/org.eclipse.emf.converter/about.mappings b/plugins/org.eclipse.emf.converter/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.converter/about.mappings
+++ b/plugins/org.eclipse.emf.converter/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.converter/pom.xml b/plugins/org.eclipse.emf.converter/pom.xml
index 5e83b62..a03c8a1 100644
--- a/plugins/org.eclipse.emf.converter/pom.xml
+++ b/plugins/org.eclipse.emf.converter/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.converter</artifactId>
- <version>2.11.0-SNAPSHOT</version>
+ <version>2.12.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.databinding.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.databinding.edit/META-INF/MANIFEST.MF
index e482d68..ade057a 100644
--- a/plugins/org.eclipse.emf.databinding.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.databinding.edit/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.databinding.edit;singleton:=true
-Bundle-Version: 1.7.0.qualifier
+Bundle-Version: 1.8.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.databinding.edit.DataBindingEditPlugin$Implementation
Bundle-Vendor: %providerName
@@ -11,8 +11,8 @@
Export-Package: org.eclipse.emf.databinding.edit,
org.eclipse.emf.databinding.edit.internal;x-internal:=true
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.databinding;bundle-version="[1.5.0,2.0.0)";visibility:=reexport,
- org.eclipse.emf.edit;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.databinding;bundle-version="[1.7.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.databinding.edit/about.mappings b/plugins/org.eclipse.emf.databinding.edit/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.databinding.edit/about.mappings
+++ b/plugins/org.eclipse.emf.databinding.edit/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.databinding.edit/pom.xml b/plugins/org.eclipse.emf.databinding.edit/pom.xml
index 1be4563..d44f768 100644
--- a/plugins/org.eclipse.emf.databinding.edit/pom.xml
+++ b/plugins/org.eclipse.emf.databinding.edit/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.databinding.edit</artifactId>
- <version>1.7.0-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.databinding/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.databinding/META-INF/MANIFEST.MF
index 82a2855..fdd6832 100644
--- a/plugins/org.eclipse.emf.databinding/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.databinding/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.databinding; singleton:=true
-Bundle-Version: 1.6.0.qualifier
+Bundle-Version: 1.7.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.databinding.DataBindingPlugin$Implementation
Bundle-Vendor: %providerName
@@ -11,7 +11,7 @@
Export-Package: org.eclipse.emf.databinding,
org.eclipse.emf.databinding.internal;x-friends:="org.eclipse.emf.databinding.edit"
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.ecore;bundle-version="[2.27.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)"
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.databinding/about.mappings b/plugins/org.eclipse.emf.databinding/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.databinding/about.mappings
+++ b/plugins/org.eclipse.emf.databinding/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.databinding/pom.xml b/plugins/org.eclipse.emf.databinding/pom.xml
index 9e37ddb..2253e18 100644
--- a/plugins/org.eclipse.emf.databinding/pom.xml
+++ b/plugins/org.eclipse.emf.databinding/pom.xml
@@ -11,7 +11,7 @@
</parent>
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.databinding</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.ecore.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecore.edit/META-INF/MANIFEST.MF
index 154cae8..1fc1f53 100644
--- a/plugins/org.eclipse.emf.ecore.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.ecore.edit/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.ecore.edit;singleton:=true
-Bundle-Version: 2.13.0.qualifier
+Bundle-Version: 2.14.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.ecore.provider.EcoreEditPlugin$Implementation$Activator
Bundle-Vendor: %providerName
@@ -11,8 +11,8 @@
Export-Package: org.eclipse.emf.ecore.provider,
org.eclipse.emf.ecore.provider.annotation
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
- org.eclipse.emf.ecore;bundle-version="[2.19.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.edit;bundle-version="[2.15.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.18.0,3.0.0)";visibility:=reexport
Import-Package: org.osgi.framework;version="[1.5.0,2.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.ecore.edit/about.mappings b/plugins/org.eclipse.emf.ecore.edit/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.ecore.edit/about.mappings
+++ b/plugins/org.eclipse.emf.ecore.edit/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.ecore.edit/pom.xml b/plugins/org.eclipse.emf.ecore.edit/pom.xml
index 3dd09b2..be94c1d 100644
--- a/plugins/org.eclipse.emf.ecore.edit/pom.xml
+++ b/plugins/org.eclipse.emf.ecore.edit/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.ecore.edit</artifactId>
- <version>2.13.0-SNAPSHOT</version>
+ <version>2.14.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.ecore.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecore.editor/META-INF/MANIFEST.MF
index d2d7f36..7b31bb1 100644
--- a/plugins/org.eclipse.emf.ecore.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.ecore.editor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.ecore.editor;singleton:=true
-Bundle-Version: 2.17.0.qualifier
+Bundle-Version: 2.18.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.ecore.presentation.EcoreEditorPlugin$Implementation
Bundle-Vendor: %providerName
@@ -13,9 +13,9 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore.xmi;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore.edit;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.edit.ui;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.17.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.14.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit.ui;bundle-version="[2.23.0,3.0.0)";visibility:=reexport,
org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.ecore.editor/about.mappings b/plugins/org.eclipse.emf.ecore.editor/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.ecore.editor/about.mappings
+++ b/plugins/org.eclipse.emf.ecore.editor/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.ecore.editor/pom.xml b/plugins/org.eclipse.emf.ecore.editor/pom.xml
index 29a65a2..7d884b5 100644
--- a/plugins/org.eclipse.emf.ecore.editor/pom.xml
+++ b/plugins/org.eclipse.emf.ecore.editor/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.ecore.editor</artifactId>
- <version>2.17.0-SNAPSHOT</version>
+ <version>2.18.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.ecore.xcore.gif b/plugins/org.eclipse.emf.ecore.xcore.gif
deleted file mode 100644
index f5e49e0..0000000
--- a/plugins/org.eclipse.emf.ecore.xcore.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.emf.ecore.xcore.lib/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecore.xcore.lib/META-INF/MANIFEST.MF
index 4b9fad5..5646f07 100644
--- a/plugins/org.eclipse.emf.ecore.xcore.lib/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.ecore.xcore.lib/META-INF/MANIFEST.MF
@@ -4,11 +4,11 @@
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-SymbolicName: org.eclipse.emf.ecore.xcore.lib;singleton:=true
-Bundle-Version: 1.6.0.qualifier
+Bundle-Version: 1.7.0.qualifier
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.24.0,3.0.0)";resolution:=optional,
- org.eclipse.emf.common;bundle-version="[2.22.0,3.0.0)",
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";resolution:=optional,
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)",
org.eclipse.xtext.xbase.lib;bundle-version="[2.18.0,3.0.0)"
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.emf.ecore.xcore.lib
diff --git a/plugins/org.eclipse.emf.ecore.xcore.lib/about.mappings b/plugins/org.eclipse.emf.ecore.xcore.lib/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.ecore.xcore.lib/about.mappings
+++ b/plugins/org.eclipse.emf.ecore.xcore.lib/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.ecore.xcore.lib/pom.xml b/plugins/org.eclipse.emf.ecore.xcore.lib/pom.xml
index 0453758..867e622 100644
--- a/plugins/org.eclipse.emf.ecore.xcore.lib/pom.xml
+++ b/plugins/org.eclipse.emf.ecore.xcore.lib/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.ecore.xcore.lib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.ecore.xcore.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecore.xcore.ui/META-INF/MANIFEST.MF
index c533654..2dcba9f 100644
--- a/plugins/org.eclipse.emf.ecore.xcore.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.ecore.xcore.ui/META-INF/MANIFEST.MF
@@ -20,9 +20,9 @@
org.eclipse.xtext.xbase.lib;bundle-version="[2.18.0,3.0.0)",
org.eclipse.xtext.common.types.ui;bundle-version="[2.18.0,3.0.0)",
org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.emf.ecore.edit;bundle-version="[2.13.0,3.0.0)",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.14.0,3.0.0)",
org.eclipse.emf.codegen.ecore;bundle-version="[2.33.0,3.0.0)",
- org.eclipse.emf.ecore.editor;bundle-version="[2.17.0,3.0.0)",
+ org.eclipse.emf.ecore.editor;bundle-version="[2.18.0,3.0.0)",
org.eclipse.jdt.core;bundle-version="[3.6.0,4.0.0)",
org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.33.0,3.0.0)",
org.eclipse.emf.codegen.ecore.xtext.ui;bundle-version="[1.4.0,2.0.0)",
diff --git a/plugins/org.eclipse.emf.ecore.xcore.ui/about.mappings b/plugins/org.eclipse.emf.ecore.xcore.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.ecore.xcore.ui/about.mappings
+++ b/plugins/org.eclipse.emf.ecore.xcore.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF
index 5d516ca..5573208 100644
--- a/plugins/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@
org.eclipse.xtext.xbase.lib;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.xtext.ecore;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore.xcore.lib;bundle-version="[1.6.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xcore.lib;bundle-version="[1.7.0,2.0.0)";visibility:=reexport,
org.eclipse.emf.codegen.ecore.xtext;bundle-version="[1.6.0,2.0.0)";visibility:=reexport,
org.eclipse.emf.codegen.ecore;bundle-version="[2.33.0,3.0.0)",
org.objectweb.asm;bundle-version="[5.0.0,11.0.0)";resolution:=optional
diff --git a/plugins/org.eclipse.emf.ecore.xcore/about.mappings b/plugins/org.eclipse.emf.ecore.xcore/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.ecore.xcore/about.mappings
+++ b/plugins/org.eclipse.emf.ecore.xcore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.ecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecore/META-INF/MANIFEST.MF
index c4bce60..d1536e5 100644
--- a/plugins/org.eclipse.emf.ecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.ecore/META-INF/MANIFEST.MF
@@ -22,7 +22,7 @@
org.eclipse.emf.ecore.xml.type.internal,
org.eclipse.emf.ecore.xml.type.util
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
- org.eclipse.emf.common;bundle-version="[2.27.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)";visibility:=reexport,
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";resolution:=optional
Import-Package: javax.crypto,
javax.crypto.spec,
diff --git a/plugins/org.eclipse.emf.ecore/about.mappings b/plugins/org.eclipse.emf.ecore/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.ecore/about.mappings
+++ b/plugins/org.eclipse.emf.ecore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.edit.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edit.ui/META-INF/MANIFEST.MF
index 66730a1..90ac3e7 100644
--- a/plugins/org.eclipse.emf.edit.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edit.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.edit.ui;singleton:=true
-Bundle-Version: 2.22.0.qualifier
+Bundle-Version: 2.23.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.edit.ui.EMFEditUIPlugin$Implementation
Bundle-Vendor: %providerName
@@ -18,8 +18,8 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.ui.views;bundle-version="[3.5.0,4.0.0)";visibility:=reexport,
org.eclipse.ui.workbench;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
- org.eclipse.emf.edit;bundle-version="[2.17.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.common.ui;bundle-version="[2.20.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.common.ui;bundle-version="[2.21.0,3.0.0)";visibility:=reexport,
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";resolution:=optional,
org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)";resolution:=optional,
org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)";resolution:=optional,
diff --git a/plugins/org.eclipse.emf.edit.ui/about.mappings b/plugins/org.eclipse.emf.edit.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.edit.ui/about.mappings
+++ b/plugins/org.eclipse.emf.edit.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.edit.ui/pom.xml b/plugins/org.eclipse.emf.edit.ui/pom.xml
index 0faeed2..87dca67 100644
--- a/plugins/org.eclipse.emf.edit.ui/pom.xml
+++ b/plugins/org.eclipse.emf.edit.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.edit.ui</artifactId>
- <version>2.22.0-SNAPSHOT</version>
+ <version>2.23.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edit/META-INF/MANIFEST.MF
index aa77825..ec71b1c 100644
--- a/plugins/org.eclipse.emf.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edit/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.edit; singleton:=true
-Bundle-Version: 2.17.0.qualifier
+Bundle-Version: 2.18.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.edit.EMFEditPlugin$Implementation$Activator
Bundle-Vendor: %providerName
@@ -18,8 +18,8 @@
org.eclipse.emf.edit.tree.provider,
org.eclipse.emf.edit.tree.util
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
- org.eclipse.emf.common;bundle-version="[2.24.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore;bundle-version="[2.26.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
org.eclipse.emf.ecore.change;bundle-version="[2.14.0,3.0.0)";resolution:=optional;visibility:=reexport;x-installation:=greedy
Import-Package: org.osgi.framework;version="[1.5.0,2.0.0)"
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.edit/about.mappings b/plugins/org.eclipse.emf.edit/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.edit/about.mappings
+++ b/plugins/org.eclipse.emf.edit/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.edit/pom.xml b/plugins/org.eclipse.emf.edit/pom.xml
index 2afba44..c8a247d 100644
--- a/plugins/org.eclipse.emf.edit/pom.xml
+++ b/plugins/org.eclipse.emf.edit/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.edit</artifactId>
- <version>2.17.0-SNAPSHOT</version>
+ <version>2.18.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.example.installer/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.example.installer/META-INF/MANIFEST.MF
index a2a48cc..8382e6e 100644
--- a/plugins/org.eclipse.emf.example.installer/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.example.installer/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
Bundle-Version: 1.11.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Require-Bundle: org.eclipse.emf.common.ui;bundle-version="[2.20.0,3.0.0)",
+Require-Bundle: org.eclipse.emf.common.ui;bundle-version="[2.21.0,3.0.0)",
org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.gwt.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.gwt.common/META-INF/MANIFEST.MF
index ee220ab..a039894 100644
--- a/plugins/org.eclipse.emf.gwt.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.gwt.common/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.gwt.common;singleton:=true
-Bundle-Version: 2.14.0.qualifier
+Bundle-Version: 2.15.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.emf.gwt.common/about.mappings b/plugins/org.eclipse.emf.gwt.common/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.gwt.common/about.mappings
+++ b/plugins/org.eclipse.emf.gwt.common/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.gwt.common/pom.xml b/plugins/org.eclipse.emf.gwt.common/pom.xml
index 36b22f0..0a891b6 100644
--- a/plugins/org.eclipse.emf.gwt.common/pom.xml
+++ b/plugins/org.eclipse.emf.gwt.common/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.gwt.common</artifactId>
- <version>2.14.0-SNAPSHOT</version>
+ <version>2.15.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.gwt.ecore.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.gwt.ecore.edit/META-INF/MANIFEST.MF
index 3a37f59..5fe1460 100644
--- a/plugins/org.eclipse.emf.gwt.ecore.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.gwt.ecore.edit/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.gwt.ecore.edit;singleton:=true
-Bundle-Version: 2.12.0.qualifier
+Bundle-Version: 2.13.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.eclipse.emf.ecore.provider
-Require-Bundle: org.eclipse.emf.gwt.ecore;bundle-version="[2.15.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.gwt.edit;bundle-version="[2.11.0,3.0.0)";visibility:=reexport
+Require-Bundle: org.eclipse.emf.gwt.ecore;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.gwt.edit;bundle-version="[2.12.0,3.0.0)";visibility:=reexport
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.gwt.ecore.edit
diff --git a/plugins/org.eclipse.emf.gwt.ecore.edit/about.mappings b/plugins/org.eclipse.emf.gwt.ecore.edit/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.gwt.ecore.edit/about.mappings
+++ b/plugins/org.eclipse.emf.gwt.ecore.edit/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.gwt.ecore.edit/pom.xml b/plugins/org.eclipse.emf.gwt.ecore.edit/pom.xml
index 6b82276..aa75d63 100644
--- a/plugins/org.eclipse.emf.gwt.ecore.edit/pom.xml
+++ b/plugins/org.eclipse.emf.gwt.ecore.edit/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.gwt.ecore.edit</artifactId>
- <version>2.12.0-SNAPSHOT</version>
+ <version>2.13.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.gwt.ecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.gwt.ecore/META-INF/MANIFEST.MF
index 467d59f..87a88c5 100644
--- a/plugins/org.eclipse.emf.gwt.ecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.gwt.ecore/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.gwt.ecore;singleton:=true
-Bundle-Version: 2.15.0.qualifier
+Bundle-Version: 2.16.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -21,7 +21,7 @@
org.eclipse.emf.ecore.xml.type.internal,
org.eclipse.emf.ecore.xml.type.util,
org.eclipse.emf.server.ecore.resource
-Require-Bundle: org.eclipse.emf.gwt.common;bundle-version="[2.14.0,3.0.0)";visibility:=reexport
+Require-Bundle: org.eclipse.emf.gwt.common;bundle-version="[2.15.0,3.0.0)";visibility:=reexport
Eclipse-BuddyPolicy: dependent
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.gwt.ecore/about.mappings b/plugins/org.eclipse.emf.gwt.ecore/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.gwt.ecore/about.mappings
+++ b/plugins/org.eclipse.emf.gwt.ecore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.gwt.ecore/pom.xml b/plugins/org.eclipse.emf.gwt.ecore/pom.xml
index 85762f7..0f23989 100644
--- a/plugins/org.eclipse.emf.gwt.ecore/pom.xml
+++ b/plugins/org.eclipse.emf.gwt.ecore/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.gwt.ecore</artifactId>
- <version>2.15.0-SNAPSHOT</version>
+ <version>2.16.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.gwt.edit.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.gwt.edit.ui/META-INF/MANIFEST.MF
index 27f6a87..dbaf4dd 100644
--- a/plugins/org.eclipse.emf.gwt.edit.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.gwt.edit.ui/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.gwt.edit.ui;singleton:=true
-Bundle-Version: 2.11.0.qualifier
+Bundle-Version: 2.12.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.eclipse.emf.edit.ui
-Require-Bundle: org.eclipse.emf.gwt.edit;bundle-version="[2.11.0,3.0.0)";visibility:=reexport
+Require-Bundle: org.eclipse.emf.gwt.edit;bundle-version="[2.12.0,3.0.0)";visibility:=reexport
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.gwt.edit.ui
diff --git a/plugins/org.eclipse.emf.gwt.edit.ui/about.mappings b/plugins/org.eclipse.emf.gwt.edit.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.gwt.edit.ui/about.mappings
+++ b/plugins/org.eclipse.emf.gwt.edit.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.gwt.edit.ui/pom.xml b/plugins/org.eclipse.emf.gwt.edit.ui/pom.xml
index 725b6b7..3215f7e 100644
--- a/plugins/org.eclipse.emf.gwt.edit.ui/pom.xml
+++ b/plugins/org.eclipse.emf.gwt.edit.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.gwt.edit.ui</artifactId>
- <version>2.11.0-SNAPSHOT</version>
+ <version>2.12.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.gwt.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.gwt.edit/META-INF/MANIFEST.MF
index 2b502c7..2cf0e4d 100644
--- a/plugins/org.eclipse.emf.gwt.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.gwt.edit/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.gwt.edit;singleton:=true
-Bundle-Version: 2.11.0.qualifier
+Bundle-Version: 2.12.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -16,8 +16,8 @@
org.eclipse.emf.edit.tree.impl,
org.eclipse.emf.edit.tree.provider,
org.eclipse.emf.edit.tree.util
-Require-Bundle: org.eclipse.emf.gwt.common;bundle-version="[2.14.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.gwt.ecore;bundle-version="[2.15.0,3.0.0)";visibility:=reexport,
+Require-Bundle: org.eclipse.emf.gwt.common;bundle-version="[2.15.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.gwt.ecore;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
org.eclipse.emf.gwt.ecore.change;bundle-version="[2.11.0,3.0.0)";resolution:=optional;visibility:=reexport;x-installation:=greedy
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.gwt.edit/about.mappings b/plugins/org.eclipse.emf.gwt.edit/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.gwt.edit/about.mappings
+++ b/plugins/org.eclipse.emf.gwt.edit/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.gwt.edit/pom.xml b/plugins/org.eclipse.emf.gwt.edit/pom.xml
index 35a4a06..4d0ddb1 100644
--- a/plugins/org.eclipse.emf.gwt.edit/pom.xml
+++ b/plugins/org.eclipse.emf.gwt.edit/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.gwt.edit</artifactId>
- <version>2.11.0-SNAPSHOT</version>
+ <version>2.12.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.gwt/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.gwt/META-INF/MANIFEST.MF
index 50f5413..cbd6b55 100644
--- a/plugins/org.eclipse.emf.gwt/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.gwt/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.gwt;singleton:=true
-Bundle-Version: 2.9.0.qualifier
+Bundle-Version: 2.10.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.gwt/about.mappings b/plugins/org.eclipse.emf.gwt/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.gwt/about.mappings
+++ b/plugins/org.eclipse.emf.gwt/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.gwt/pom.xml b/plugins/org.eclipse.emf.gwt/pom.xml
index 1978d15..8d0ffbc 100644
--- a/plugins/org.eclipse.emf.gwt/pom.xml
+++ b/plugins/org.eclipse.emf.gwt/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.gwt</artifactId>
- <version>2.9.0-SNAPSHOT</version>
+ <version>2.10.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.mapping.ecore.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.mapping.ecore.editor/META-INF/MANIFEST.MF
index 31cb9af..a9f36cc 100644
--- a/plugins/org.eclipse.emf.mapping.ecore.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.mapping.ecore.editor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.mapping.ecore.editor;singleton:=true
-Bundle-Version: 2.8.0.qualifier
+Bundle-Version: 2.9.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.mapping.ecore.editor/about.mappings b/plugins/org.eclipse.emf.mapping.ecore.editor/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.mapping.ecore.editor/about.mappings
+++ b/plugins/org.eclipse.emf.mapping.ecore.editor/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.mapping.ecore.editor/pom.xml b/plugins/org.eclipse.emf.mapping.ecore.editor/pom.xml
index cde995e..e313140 100644
--- a/plugins/org.eclipse.emf.mapping.ecore.editor/pom.xml
+++ b/plugins/org.eclipse.emf.mapping.ecore.editor/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.mapping.ecore.editor</artifactId>
- <version>2.8.0-SNAPSHOT</version>
+ <version>2.9.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.mapping.ecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.mapping.ecore/META-INF/MANIFEST.MF
index 5bc369a..c7ffb6c 100644
--- a/plugins/org.eclipse.emf.mapping.ecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.mapping.ecore/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.mapping.ecore;singleton:=true
-Bundle-Version: 2.8.0.qualifier
+Bundle-Version: 2.9.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.mapping.ecore/about.mappings b/plugins/org.eclipse.emf.mapping.ecore/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.mapping.ecore/about.mappings
+++ b/plugins/org.eclipse.emf.mapping.ecore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.mapping.ecore/pom.xml b/plugins/org.eclipse.emf.mapping.ecore/pom.xml
index 815ca00..c96f161 100644
--- a/plugins/org.eclipse.emf.mapping.ecore/pom.xml
+++ b/plugins/org.eclipse.emf.mapping.ecore/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.mapping.ecore</artifactId>
- <version>2.8.0-SNAPSHOT</version>
+ <version>2.9.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.mapping.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.mapping.ui/META-INF/MANIFEST.MF
index 2e9b3e7..152d98f 100644
--- a/plugins/org.eclipse.emf.mapping.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.mapping.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.mapping.ui;singleton:=true
-Bundle-Version: 2.10.0.qualifier
+Bundle-Version: 2.11.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.mapping.presentation.MappingUIPlugin
Bundle-Vendor: %providerName
@@ -13,10 +13,10 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
- org.eclipse.emf.mapping;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.edit.ui;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore;bundle-version="[2.16.0,3.0.0)",
- org.eclipse.emf.common;bundle-version="[2.15.0,3.0.0)"
+ org.eclipse.emf.mapping;bundle-version="[2.13.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit.ui;bundle-version="[2.23.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.mapping.ui
diff --git a/plugins/org.eclipse.emf.mapping.ui/about.mappings b/plugins/org.eclipse.emf.mapping.ui/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.mapping.ui/about.mappings
+++ b/plugins/org.eclipse.emf.mapping.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.mapping.ui/pom.xml b/plugins/org.eclipse.emf.mapping.ui/pom.xml
index 16e2144..2d8bdd9 100644
--- a/plugins/org.eclipse.emf.mapping.ui/pom.xml
+++ b/plugins/org.eclipse.emf.mapping.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.mapping.ui</artifactId>
- <version>2.10.0-SNAPSHOT</version>
+ <version>2.11.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.classpath b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.classpath
new file mode 100644
index 0000000..196d49a
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.gitignore b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.gitignore
new file mode 100644
index 0000000..3f8f9e7
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.gitignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+*.jar
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.project b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.project
new file mode 100644
index 0000000..c5b6bcc
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.project
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.mapping.xsd2ecore.editor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..952be83
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..52ced9b
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.mapping.xsd2ecore.editor; singleton:=true
+Bundle-Version: 2.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.emf.mapping.xsd2ecore.presentation
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.emf.mapping.ui;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.mapping.xsd2ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.xsd.edit;bundle-version="[2.10.0,3.0.0)";visibility:=reexport
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.mapping.xsd2ecore.editor
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/about.html b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/build.properties b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/build.properties
new file mode 100644
index 0000000..3391d39
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/build.properties
@@ -0,0 +1,11 @@
+bin.includes = icons/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ META-INF/
+src.includes = about.html
+source.. = src/
+output.. = bin/
+exclude.. = **/doc-files/**
+
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/ctool16/NewXSD2Ecore.gif b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/ctool16/NewXSD2Ecore.gif
new file mode 100644
index 0000000..40c53b7
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/ctool16/NewXSD2Ecore.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/obj16/XSD2EcoreModelFile.gif b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/obj16/XSD2EcoreModelFile.gif
new file mode 100644
index 0000000..6915504
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/obj16/XSD2EcoreModelFile.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/wizban/NewXSD2Ecore.gif b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/wizban/NewXSD2Ecore.gif
new file mode 100644
index 0000000..bb27fd1
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/icons/full/wizban/NewXSD2Ecore.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/plugin.properties b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/plugin.properties
new file mode 100644
index 0000000..d56b57b
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/plugin.properties
@@ -0,0 +1,59 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD to Ecore Mapping Editor
+providerName = Eclipse Modeling Project
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_XSD2EcoreModelWizard_label = XSD to Ecore Model
+_UI_XSD2EcoreModelWizard_description = Create a new XSD to Ecore model
+
+_UI_XSD2EcoreEditorFilenameDefaultBase = My
+_UI_XSD2EcoreEditorFilenameExtensions = xsd2ecore
+
+_WARN_FilenameExtension = The filename must end in ".{0}"
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_Ecore_label = Ecore
+_UI_XMLSchema_label = XML Schema
+
+_UI_EMFModelCreationWizard_label = Example EMF Model Creation Wizards
+_UI_XSDToEcoreModelEditor_label = XSD to Ecore Model Editor
+
+_UI_XSDToEcoreModelEditor_menuitem = &XSD to Ecore Model Editor
+_UI_RemoveMapping_menu_item = &Remove Mapping
+_UI_RemoveMapping_tooltip = Remove the mapping associated with the selected objects.
+_UI_MatchMappingByType_menu_item = Match Mapping by &Type
+_UI_MatchMappingByType_tooltip = Create child mappings automatically by type.
+_UI_MatchMappingByName_menu_item = Match Mapping by &Name
+_UI_MatchMappingByName_tooltip = Create child mappings automatically by name.
+_UI_CreateOneSideMapping_menu_item = Create &One-sided Mapping
+_UI_CreateOneSideMapping_tooltip = Create a new mapping for the selected object.
+_UI_CreateMapping_menu_item = Create &Mapping
+_UI_CreateMapping_tooltip = Create a new mapping between the selected objects.
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/plugin.xml b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/plugin.xml
new file mode 100644
index 0000000..daadd1b
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/plugin.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.ui.editors">
+ <editor
+ id="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreEditorID"
+ name="%_UI_XSDToEcoreModelEditor_label"
+ icon="icons/full/obj16/XSD2EcoreModelFile.gif"
+ class="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreEditor"
+ contributorClass="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreActionBarContributor">
+ <contentTypeBinding contentTypeId="org.eclipse.emf.mapping.xsd2ecore"/>
+ </editor>
+ </extension>
+
+ <extension point="org.eclipse.ui.editorActions">
+ <editorContribution
+ id="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreContributionID"
+ targetID="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreEditorID">
+ <menu
+ id="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreMenuID"
+ label="%_UI_XSDToEcoreModelEditor_menuitem"
+ path="additions">
+ <separator name="settings"/>
+ <separator name="actions"/>
+ <separator name="global-actions"/>
+ <separator name="additions"/>
+ <separator name="additions-end"/>
+ </menu>
+ <action
+ id="org.eclipse.emf.mapping.action.TypeMatchMappingActionID"
+ label="%_UI_MatchMappingByType_menu_item"
+ menubarPath="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreMenuID/actions"
+ toolbarPath="Normal/mapping-additions"
+ icon="platform:/plugin/org.eclipse.emf.mapping/icons/full/ctool16/CreateNoneToOneMapping.gif"
+ tooltip="%_UI_MatchMappingByType_tooltip"
+ class="org.eclipse.emf.mapping.action.TypeMatchMappingAction"/>
+ <action
+ id="org.eclipse.emf.mapping.action.NameMatchMappingActionID"
+ label="%_UI_MatchMappingByName_menu_item"
+ menubarPath="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreMenuID/actions"
+ toolbarPath="Normal/mapping-additions"
+ icon="platform:/plugin/org.eclipse.emf.mapping/icons/full/ctool16/CreateNoneToOneMapping.gif"
+ tooltip="%_UI_MatchMappingByName_tooltip"
+ class="org.eclipse.emf.mapping.action.NameMatchMappingAction"/>
+ <action
+ id="org.eclipse.emf.mapping.action.CreateOneSidedMappingActionID"
+ label="%_UI_CreateOneSideMapping_menu_item"
+ menubarPath="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreMenuID/actions"
+ toolbarPath="Normal/mapping-additions"
+ icon="platform:/plugin/org.eclipse.emf.mapping/icons/full/ctool16/CreateNoneToOneMapping.gif"
+ tooltip="%_UI_CreateOneSideMapping_tooltip"
+ class="org.eclipse.emf.mapping.action.CreateOneSidedMappingAction"/>
+ <action
+ id="org.eclipse.emf.mapping.action.CreateMappingActionID"
+ label="%_UI_CreateMapping_menu_item"
+ menubarPath="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreMenuID/actions"
+ toolbarPath="Normal/mapping-additions"
+ icon="platform:/plugin/org.eclipse.emf.mapping/icons/full/ctool16/CreateNoneToOneMapping.gif"
+ tooltip="%_UI_CreateMapping_tooltip"
+ class="org.eclipse.emf.mapping.action.CreateMappingAction"/>
+ <action
+ id="org.eclipse.emf.mapping.action.RemoveMappingActionID"
+ label="%_UI_RemoveMapping_menu_item"
+ menubarPath="org.eclipse.emf.mapping.xsd2ecore.presentation.XSD2EcoreMenuID/actions"
+ toolbarPath="Normal/mapping-additions"
+ icon="platform:/plugin/org.eclipse.emf.mapping/icons/full/ctool16/RemoveOneToOneMapping.gif"
+ tooltip="%_UI_RemoveMapping_tooltip"
+ class="org.eclipse.emf.mapping.action.RemoveMappingAction"/>
+ </editorContribution>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/pom.xml b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/pom.xml
new file mode 100644
index 0000000..13804bf
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.mapping.xsd2ecore.editor</artifactId>
+ <version>2.9.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreActionBarContributor.java b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreActionBarContributor.java
new file mode 100644
index 0000000..6565ec0
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreActionBarContributor.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.presentation;
+
+
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+
+/**
+ * This is the action bar contributor for the XSD2Ecore model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSD2EcoreActionBarContributor
+ extends EditingDomainActionBarContributor
+{
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreActionBarContributor()
+ {
+ super();
+ }
+
+ /**
+ * This adds Separators for editor additions to the tool bar.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager)
+ {
+ toolBarManager.add(new Separator("xsd2ecore-settings"));
+ toolBarManager.add(new Separator("xsd2ecore-additions"));
+ }
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreEditor.java b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreEditor.java
new file mode 100644
index 0000000..7935508
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreEditor.java
@@ -0,0 +1,232 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.presentation;
+
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.ui.part.FileEditorInput;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.command.InitializeCopyCommand;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.mapping.MappingRoot;
+import org.eclipse.emf.mapping.command.InitializeCopyOverrideCommand;
+import org.eclipse.emf.mapping.domain.AdapterFactoryMappingDomain;
+import org.eclipse.emf.mapping.domain.MappingDomain;
+import org.eclipse.emf.mapping.domain.PluginAdapterFactoryMappingDomain;
+import org.eclipse.emf.mapping.presentation.MappingEditor;
+import org.eclipse.emf.mapping.provider.MappingItemProviderAdapterFactory;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreFactory;
+import org.eclipse.emf.mapping.xsd2ecore.provider.XSD2EcoreItemProviderAdapterFactory;
+
+import org.eclipse.xsd.provider.XSDItemProviderAdapterFactory;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+
+
+/**
+ * This is an example of a mapper model editor.
+ */
+public class XSD2EcoreEditor extends MappingEditor
+{
+ public XSD2EcoreEditor()
+ {
+ topLabel = XSD2EcoreEditorPlugin.INSTANCE.getString("_UI_XMLSchema_label");
+ bottomLabel = XSD2EcoreEditorPlugin.INSTANCE.getString("_UI_Ecore_label");
+ }
+
+ public static class MyInitializeCopyOverrideCommand extends InitializeCopyOverrideCommand
+ {
+ /**
+ * Constructor for MyInitializeCopyOverrideCommand.
+ * @param domain
+ * @param initializeCommand
+ */
+ public MyInitializeCopyOverrideCommand(MappingDomain domain, InitializeCopyCommand initializeCommand)
+ {
+ super(domain, initializeCommand);
+ }
+
+ /**
+ * @see org.eclipse.emf.common.command.Command#execute()
+ */
+ @Override
+ public void execute()
+ {
+ super.execute();
+ }
+ }
+
+ public static class MyMappingDomain extends PluginAdapterFactoryMappingDomain
+ {
+ /**
+ * Constructor for MyMappingDomain.
+ * @param mappingDomainAdapterFactory
+ * @param topDomainAdapterFactory
+ * @param bottomDomainAdapterFactory
+ * @param commandStack
+ * @param mappingDomainKey
+ */
+ public MyMappingDomain
+ (AdapterFactory mappingDomainAdapterFactory,
+ AdapterFactory topDomainAdapterFactory,
+ AdapterFactory bottomDomainAdapterFactory,
+ CommandStack commandStack,
+ String mappingDomainKey)
+ {
+ super
+ (mappingDomainAdapterFactory,
+ topDomainAdapterFactory,
+ bottomDomainAdapterFactory,
+ commandStack,
+ mappingDomainKey);
+ }
+
+ @Override
+ protected Command createInitializeCopyOverrideCommand(InitializeCopyCommand initializeCopyCommand)
+ {
+ // If the owner and the copy are of the same type, we can proceed with the command, i.e. no override.
+ // If not, we will skip this command by returning a do-nothing override.
+ //
+ if (!isSameEditingDomainAdapterFactory)
+ {
+ return new MyInitializeCopyOverrideCommand(this, initializeCopyCommand);
+ }
+
+ return null;
+ }
+ }
+
+ @Override
+ protected AdapterFactoryMappingDomain createMappingDomain()
+ {
+ AdapterFactory mappingAdapterFactory =
+ new ComposedAdapterFactory(
+ new AdapterFactory[]
+ {
+ new ResourceItemProviderAdapterFactory(),
+ new MappingItemProviderAdapterFactory(),
+ new XSD2EcoreItemProviderAdapterFactory()
+ });
+
+ // This is a test case for the persistent command stack implementation.
+ //
+ CommandStack commandStack = new BasicCommandStack();
+
+ // This is a test case for cross domain code.
+ // It creates two instances of the factory.
+ //
+ AdapterFactoryMappingDomain mappingDomain;
+ mappingDomain =
+ new MyMappingDomain
+ (mappingAdapterFactory,
+ new XSDItemProviderAdapterFactory(),
+ new EcoreItemProviderAdapterFactory(),
+ commandStack,
+ null);
+
+/*
+ mappingDomain.setMappingEnablementFlags
+ (MappingDomain.ENABLE_MULTIPLE_INPUTS |
+ MappingDomain.ENABLE_MULTIPLE_INPUT_MAPPINGS |
+ MappingDomain.ENABLE_EMPTY_INPUTS);
+*/
+
+ mappingDomain.getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put("wsdl", new XSDResourceFactoryImpl());
+
+ return mappingDomain;
+ }
+
+ /**
+ * @see org.eclipse.emf.mapping.presentation.MappingEditor#handleMissingModelFile()
+ */
+ @Override
+ protected void handleMissingModelFile()
+ {
+ try
+ {
+ IFile mappingModelFile =
+ modelFile.getFile().getParent().getFile
+ (new Path(new Path(modelFile.getName()).removeFileExtension().toOSString() + ".xsd2ecore"));
+
+ EObject originalRootObject = (mappingDomain.getResourceSet().getResources().iterator().next()).getContents().get(0);
+
+ // Switch over.
+ //
+ modelFile = new FileEditorInput(mappingModelFile);
+
+ Resource mappingModelResource = null;
+ if (mappingModelFile.exists())
+ {
+ Resource resource = mappingDomain.loadResource(getURIFromFile(modelFile.getFile()));
+ mappingRoot = (MappingRoot) resource.getContents().get(0);
+ }
+ else
+ {
+ // Get the resource factory for this type of file name.
+ //
+ mappingModelResource =
+ mappingDomain.getResourceSet().createResource(URI.createFileURI(modelFile.getFile().getFullPath().toString()));
+
+ // Add the initial model object to the extent.
+ //
+ mappingRoot = XSD2EcoreFactory.eINSTANCE.createXSD2EcoreMappingRoot();
+
+ mappingModelResource.getContents().add(mappingRoot);
+
+ mappingDomain.getResourceSet().getResources().add(mappingModelResource);
+
+ mappingRoot.getInputs().add(originalRootObject);
+
+ IFile outputModelFile =
+ modelFile.getFile().getParent().getFile
+ (new Path(new Path(modelFile.getName()).removeFileExtension().toOSString() + ".ecore"));
+
+ Resource outputResource = null;
+
+ if (outputModelFile.exists())
+ {
+ outputResource = mappingDomain.loadResource(getURIFromFile(outputModelFile));
+ }
+ else
+ {
+ // Get the resource factory for this type of file name.
+ //
+ outputResource = mappingDomain.getResourceSet().createResource(URI.createURI(getURIFromFile(outputModelFile)));
+
+ EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
+
+ outputResource.getContents().add(ePackage);
+
+ mappingRoot.getOutputs().addAll(outputResource.getContents());
+ }
+
+ doSave(null);
+ }
+ mappingRoot.setDomain(mappingDomain);
+ mappingRoot.setTopToBottom(true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreEditorPlugin.java b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreEditorPlugin.java
new file mode 100644
index 0000000..fbf9bee
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore.editor/src/org/eclipse/emf/mapping/xsd2ecore/presentation/XSD2EcoreEditorPlugin.java
@@ -0,0 +1,109 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.presentation;
+
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+import org.eclipse.emf.mapping.MappingPlugin;
+
+
+/**
+ * This is the central singleton for the XSD2Ecore editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class XSD2EcoreEditorPlugin extends EMFPlugin
+{
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final XSD2EcoreEditorPlugin INSTANCE = new XSD2EcoreEditorPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreEditorPlugin()
+ {
+ super
+ (new ResourceLocator []
+ {
+ MappingPlugin.INSTANCE,
+ EcoreEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin
+ {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/.classpath b/plugins/org.eclipse.emf.mapping.xsd2ecore/.classpath
new file mode 100644
index 0000000..196d49a
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/.gitignore b/plugins/org.eclipse.emf.mapping.xsd2ecore/.gitignore
new file mode 100644
index 0000000..3f8f9e7
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/.gitignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+*.jar
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/.project b/plugins/org.eclipse.emf.mapping.xsd2ecore/.project
new file mode 100644
index 0000000..0094a07
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/.project
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.mapping.xsd2ecore</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.mapping.xsd2ecore/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..952be83
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.mapping.xsd2ecore/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e37f2fd
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.mapping.xsd2ecore; singleton:=true
+Bundle-Version: 2.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.emf.mapping.xsd2ecore,
+ org.eclipse.emf.mapping.xsd2ecore.impl,
+ org.eclipse.emf.mapping.xsd2ecore.provider,
+ org.eclipse.emf.mapping.xsd2ecore.util
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.13.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.mapping;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
+ org.eclipse.xsd;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
+ org.eclipse.xsd.edit;bundle-version="[2.11.0,3.0.0)";visibility:=reexport
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.mapping.xsd2ecore
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/about.html b/plugins/org.eclipse.emf.mapping.xsd2ecore/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/build.properties b/plugins/org.eclipse.emf.mapping.xsd2ecore/build.properties
new file mode 100644
index 0000000..5d0f44b
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/build.properties
@@ -0,0 +1,11 @@
+bin.includes = plugin.xml,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ model/,\
+ META-INF/
+src.includes = about.html
+source.. = src/
+output.. = bin/
+exclude.. = **/doc-files/**
+
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.ecore b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.ecore
new file mode 100644
index 0000000..5e0a3e9
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.ecore
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="xsd2ecore"
+ nsURI="http://www.eclipse.org/emf/2002/XSD2Ecore" nsPrefix="xsd2ecore">
+ <eClassifiers xsi:type="ecore:EClass" name="XSD2EcoreMappingRoot" eSuperTypes="../../org.eclipse.emf.mapping/model/Mapping.ecore#//MappingRoot"/>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.genmodel b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.genmodel
new file mode 100644
index 0000000..6bf0f5e
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.genmodel
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.mapping.xsd2ecore/src"
+ creationCommands="false" editDirectory="/org.eclipse.emf.mapping.xsd2ecore/src"
+ editorDirectory="" modelPluginID="org.eclipse.emf.mapping.xsd2ecore" runtimeJar="true"
+ modelName="XSD2Ecore" editPluginClass="org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePlugin"
+ updateClasspath="false" testsDirectory="" importerID="org.eclipse.emf.importer.rose"
+ complianceLevel="5.0" language="en" usedGenPackages="../../org.eclipse.emf.mapping/model/Mapping.genmodel#//mapping ../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
+ <foreignModel>XSD2Ecore.mdl</foreignModel>
+ <foreignModel>VABASE_PLUGINS_PATH</foreignModel>
+ <foreignModel>../..</foreignModel>
+ <genPackages prefix="XSD2Ecore" basePackage="org.eclipse.emf.mapping" resource="XMI"
+ disposableProviderFactory="true" generateModelWizard="false" contentTypeIdentifier="org.eclipse.emf.mapping.xsd2ecore"
+ ecorePackage="XSD2Ecore.ecore#/">
+ <genClasses image="false" ecoreClass="XSD2Ecore.ecore#//XSD2EcoreMappingRoot"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.mdl b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.mdl
new file mode 100644
index 0000000..f9dc58b
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/XSD2Ecore.mdl
@@ -0,0 +1,239 @@
+
+(object Petal
+ version 42
+ _written "Rose 4.5.8163.3"
+ charSet 0)
+
+(object Design "Logical View"
+ is_unit TRUE
+ is_loaded TRUE
+ defaults (object defaults
+ rightMargin 0.250000
+ leftMargin 0.250000
+ topMargin 0.250000
+ bottomMargin 0.500000
+ pageOverlap 0.250000
+ clipIconLabels TRUE
+ autoResize TRUE
+ snapToGrid TRUE
+ gridX 16
+ gridY 16
+ defaultFont (object Font
+ size 10
+ face "Arial"
+ bold FALSE
+ italics FALSE
+ underline FALSE
+ strike FALSE
+ color 0
+ default_color TRUE)
+ showMessageNum 1
+ showClassOfObject TRUE
+ notation "Unified")
+ root_usecase_package (object Class_Category "Use Case View"
+ quid "38B2EE06037C"
+ exportControl "Public"
+ global TRUE
+ logical_models (list unit_reference_list)
+ logical_presentations (list unit_reference_list
+ (object UseCaseDiagram "Main"
+ quid "38B2EE0603AA"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ root_category (object Class_Category "Logical View"
+ quid "38B2EE06037B"
+ exportControl "Public"
+ global TRUE
+ subsystem "Component View"
+ quidu "38B2EE06037D"
+ logical_models (list unit_reference_list
+ (object Class_Category "mapping"
+ is_unit TRUE
+ is_loaded FALSE
+ file_name "$VABASE_PLUGINS_PATH\\org.eclipse.emf.mapping\\model\\org.eclipse.emf.Mapping.cat"
+ quid "374AA9C803A4")
+ (object Class_Category "ecore"
+ is_unit TRUE
+ is_loaded FALSE
+ file_name "$VABASE_PLUGINS_PATH\\org.eclipse.emf.ecore\\model\\org.eclipse.emf.Ecore.cat"
+ quid "39A5ED04004E")
+ (object Class_Category "xsd2ecore"
+ is_unit TRUE
+ is_loaded FALSE
+ file_name "$VABASE_PLUGINS_PATH\\org.eclipse.emf.mapping.xsd2ecore\\model\\org.eclipse.emf.mapping.XSD2Ecore.cat"
+ quid "3D9E0D68011C"))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "Main"
+ quid "38B2EE060399"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object NoteView @1
+ location (832, 608)
+ label (object ItemLabel
+ Parent_View @1
+ location (204, 508)
+ fill_color 13434879
+ nlines 4
+ max_width 1221
+ label
+|A Rose PATH MAP must be set to locate the subunits.
+|The variable VABASE_PLUGINS_PATH should be set to point to the root dir of the Foundation components build.
+ )
+ line_color 3342489
+ fill_color 13434879
+ width 1281
+ height 213)
+ (object CategoryView "Logical View::xsd2ecore" @2
+ location (352, 272)
+ label (object ItemLabel
+ Parent_View @2
+ location (208, 188)
+ fill_color 13434879
+ nlines 2
+ max_width 288
+ justify 0
+ label "xsd2ecore")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3D9E0D68011C"
+ width 300
+ height 180)))))
+ root_subsystem (object SubSystem "Component View"
+ quid "38B2EE06037D"
+ physical_models (list unit_reference_list)
+ physical_presentations (list unit_reference_list
+ (object Module_Diagram "Main"
+ quid "38B2EE0603A9"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ process_structure (object Processes
+ quid "38B2EE06037E"
+ ProcsNDevs (list
+ (object Process_Diagram "Deployment View"
+ quid "38B2EE060380"
+ title "Deployment View"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ properties (object Properties
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "default__Category"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "packageName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "classifierName"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "operationName"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "attributeName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isID"
+ value FALSE)))
+ (object Attribute
+ tool "Ecore"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "referenceName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value TRUE))))
+ quid "38B2EE06037F"))
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/model/org.eclipse.emf.mapping.XSD2Ecore.cat b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/org.eclipse.emf.mapping.XSD2Ecore.cat
new file mode 100644
index 0000000..5faf195
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/model/org.eclipse.emf.mapping.XSD2Ecore.cat
@@ -0,0 +1,99 @@
+
+(object Petal
+ version 42
+ _written "Rose 4.5.8163.3"
+ charSet 0)
+
+(object Class_Category "xsd2ecore"
+ is_unit TRUE
+ is_loaded TRUE
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "XSD2Ecore")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "org.eclipse.emf.mapping")
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "xsd2ecore")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "http://www.eclipse.org/emf/2002/XSD2Ecore"))
+ quid "3D9E0D68011C"
+ exportControl "Public"
+ logical_models (list unit_reference_list
+ (object Class "XSD2EcoreMappingRoot"
+ quid "3D9E0DC4033E"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3D9E0DD3010E"
+ supplier "Logical View::mapping::MappingRoot"
+ quidu "38BEA7F701B6"))))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "XSD to Ecore Hierarchy"
+ quid "3D9E0D780290"
+ title "XSD to Ecore Hierarchy"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::mapping::MappingRoot" @1
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (384, 176)
+ label (object ItemLabel
+ Parent_View @1
+ location (248, 126)
+ fill_color 13434879
+ nlines 1
+ max_width 272
+ justify 0
+ label "MappingRoot")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "38BEA7F701B6"
+ width 290
+ height 124
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd2ecore::XSD2EcoreMappingRoot" @2
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (432, 784)
+ label (object ItemLabel
+ Parent_View @2
+ location (194, 733)
+ fill_color 13434879
+ nlines 1
+ max_width 476
+ justify 0
+ label "XSD2EcoreMappingRoot")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3D9E0DC4033E"
+ width 494
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @3
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D9E0DD3010E"
+ client @2
+ supplier @1
+ line_style 3
+ origin_attachment (381, 721)
+ terminal_attachment (381, 238))))))
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/plugin.properties b/plugins/org.eclipse.emf.mapping.xsd2ecore/plugin.properties
new file mode 100644
index 0000000..b1a3c96
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/plugin.properties
@@ -0,0 +1,24 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD to Ecore Mapping
+providerName = Eclipse Modeling Project
+
+_UI_Unknown_feature = Unspecified
+_UI_XSD2EcoreMappingRoot_type = Mapping Root
+_UI_Unknown_type = Object
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Unknown_datatype= Value
+
+_UI_XSD2Ecore_content_type = XSD to Ecore Mapping File
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/plugin.xml b/plugins/org.eclipse.emf.mapping.xsd2ecore/plugin.xml
new file mode 100644
index 0000000..98866b3
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/plugin.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://www.eclipse.org/emf/2002/XSD2Ecore"
+ class="org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage"
+ genModel="model/XSD2Ecore.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ type="xsd2ecore"
+ class="org.eclipse.emf.mapping.xsd2ecore.util.XSD2EcoreResourceFactoryImpl"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.content_parser">
+ <parser
+ contentTypeIdentifier="org.eclipse.emf.mapping.xsd2ecore"
+ class="org.eclipse.emf.mapping.xsd2ecore.util.XSD2EcoreResourceFactoryImpl"/>
+ </extension>
+
+ <extension point="org.eclipse.core.contenttype.contentTypes">
+ <content-type
+ base-type="org.eclipse.emf.ecore.xmi"
+ file-extensions="xsd2ecore"
+ id="org.eclipse.emf.mapping.xsd2ecore"
+ name="%_UI_XSD2Ecore_content_type"
+ priority="normal">
+ <describer class="org.eclipse.emf.ecore.xmi.impl.RootXMLContentHandlerImpl$Describer">
+ <parameter name="namespace" value="http://www.eclipse.org/emf/2002/XSD2Ecore"/>
+ <parameter name="kind" value="xmi"/>
+ </describer>
+ </content-type>
+ </extension>
+
+ <extension point="org.eclipse.team.core.fileTypes">
+ <fileTypes extension="xsd2ecore" type="text"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <factory
+ uri="http://www.eclipse.org/emf/2002/XSD2Ecore"
+ class="org.eclipse.emf.mapping.xsd2ecore.provider.XSD2EcoreItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/pom.xml b/plugins/org.eclipse.emf.mapping.xsd2ecore/pom.xml
new file mode 100644
index 0000000..c1ccdc5
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.mapping.xsd2ecore</artifactId>
+ <version>2.9.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreFactory.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreFactory.java
new file mode 100644
index 0000000..d9ccc40
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreFactory.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore;
+
+
+import org.eclipse.emf.ecore.EFactory;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage
+ * @generated
+ */
+public interface XSD2EcoreFactory extends EFactory{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ XSD2EcoreFactory eINSTANCE = org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcoreFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Mapping Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Mapping Root</em>'.
+ * @generated
+ */
+ XSD2EcoreMappingRoot createXSD2EcoreMappingRoot();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ XSD2EcorePackage getXSD2EcorePackage();
+
+} //XSD2EcoreFactory
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreMapper.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreMapper.java
new file mode 100644
index 0000000..571942e
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreMapper.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore;
+
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.mapping.Mapping;
+import org.eclipse.emf.mapping.MappingRoot;
+import org.eclipse.emf.mapping.domain.PluginAdapterFactoryMappingDomain;
+import org.eclipse.emf.mapping.provider.MappingItemProviderAdapterFactory;
+
+import org.eclipse.xsd.ecore.MapBuilder.Mapper;
+import org.eclipse.xsd.provider.XSDItemProviderAdapterFactory;
+
+
+public class XSD2EcoreMapper implements Mapper
+{
+ protected MappingRoot mappingRoot;
+ protected boolean topToBottom = true;
+
+ public XSD2EcoreMapper()
+ {
+ super();
+ }
+
+ public EObject getRoot()
+ {
+ return getMappingRoot();
+ }
+
+ public MappingRoot getMappingRoot()
+ {
+ if (mappingRoot == null)
+ {
+ mappingRoot = XSD2EcoreFactory.eINSTANCE.createXSD2EcoreMappingRoot();
+ AdapterFactory xsdAdapterFactory = new XSDItemProviderAdapterFactory();
+ AdapterFactory ecoreAdapterFactory = new EcoreItemProviderAdapterFactory();
+ AdapterFactory composedAdapterFactory =
+ new ComposedAdapterFactory
+ (new AdapterFactory[]
+ {
+ new ResourceItemProviderAdapterFactory(),
+ new MappingItemProviderAdapterFactory(),
+ new XSDItemProviderAdapterFactory(),
+ new EcoreItemProviderAdapterFactory()
+ });
+
+ mappingRoot.setDomain
+ (new PluginAdapterFactoryMappingDomain
+ (composedAdapterFactory,
+ xsdAdapterFactory,
+ ecoreAdapterFactory,
+ null,
+ null));
+
+ mappingRoot.setTopToBottom(topToBottom);
+ }
+
+ return mappingRoot;
+ }
+
+ public void map(Collection<? extends EObject> inputs, Collection<? extends EObject> outputs)
+ {
+ Mapping mapping =
+ topToBottom ?
+ getMappingRoot().createMapping(inputs, outputs) :
+ getMappingRoot().createMapping(outputs, inputs);
+ Mapping parent = mappingRoot.getParentMapping(mapping.getMappedObjects());
+ parent.getNested().add(mapping);
+ for (Iterator<Mapping> i = parent.getNested().iterator(); i.hasNext(); )
+ {
+ Mapping otherMapping = i.next();
+ if (otherMapping != mapping && mappingRoot.getParentMapping(otherMapping.getMappedObjects()) == mapping)
+ {
+ i.remove();
+ mapping.getNested().add(otherMapping);
+ }
+ }
+ }
+
+ public void addInput(EObject input)
+ {
+ if (input instanceof EPackage)
+ {
+ topToBottom = false;
+ }
+
+ getMappingRoot().getInputs().add(input);
+ }
+
+ public void addOutput(EObject output)
+ {
+ getMappingRoot().getOutputs().add(output);
+ }
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreMappingRoot.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreMappingRoot.java
new file mode 100644
index 0000000..e9763fd
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcoreMappingRoot.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore;
+
+import org.eclipse.emf.mapping.MappingRoot;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mapping Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage#getXSD2EcoreMappingRoot()
+ * @model
+ * @generated
+ */
+public interface XSD2EcoreMappingRoot extends MappingRoot
+{
+ // No additional methods.
+} // XSD2EcoreMappingRoot
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcorePackage.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcorePackage.java
new file mode 100644
index 0000000..fbe139a
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcorePackage.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore;
+
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.mapping.MappingPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface XSD2EcorePackage extends EPackage{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "xsd2ecore";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/emf/2002/XSD2Ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "xsd2ecore";
+
+ /**
+ * The package content type ID.
+ * <!-- begin-user-doc -->
+ * @since 2.4
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eCONTENT_TYPE = "org.eclipse.emf.mapping.xsd2ecore";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ XSD2EcorePackage eINSTANCE = org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcorePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcoreMappingRootImpl <em>Mapping Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcoreMappingRootImpl
+ * @see org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcorePackageImpl#getXSD2EcoreMappingRoot()
+ * @generated
+ */
+ int XSD2_ECORE_MAPPING_ROOT = 0;
+
+ /**
+ * The feature id for the '<em><b>Helper</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__HELPER = MappingPackage.MAPPING_ROOT__HELPER;
+
+ /**
+ * The feature id for the '<em><b>Nested</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__NESTED = MappingPackage.MAPPING_ROOT__NESTED;
+
+ /**
+ * The feature id for the '<em><b>Nested In</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__NESTED_IN = MappingPackage.MAPPING_ROOT__NESTED_IN;
+
+ /**
+ * The feature id for the '<em><b>Inputs</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__INPUTS = MappingPackage.MAPPING_ROOT__INPUTS;
+
+ /**
+ * The feature id for the '<em><b>Outputs</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__OUTPUTS = MappingPackage.MAPPING_ROOT__OUTPUTS;
+
+ /**
+ * The feature id for the '<em><b>Type Mapping</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__TYPE_MAPPING = MappingPackage.MAPPING_ROOT__TYPE_MAPPING;
+
+ /**
+ * The feature id for the '<em><b>Output Read Only</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__OUTPUT_READ_ONLY = MappingPackage.MAPPING_ROOT__OUTPUT_READ_ONLY;
+
+ /**
+ * The feature id for the '<em><b>Top To Bottom</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__TOP_TO_BOTTOM = MappingPackage.MAPPING_ROOT__TOP_TO_BOTTOM;
+
+ /**
+ * The feature id for the '<em><b>Command Stack</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT__COMMAND_STACK = MappingPackage.MAPPING_ROOT__COMMAND_STACK;
+
+ /**
+ * The number of structural features of the '<em>Mapping Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD2_ECORE_MAPPING_ROOT_FEATURE_COUNT = MappingPackage.MAPPING_ROOT_FEATURE_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot <em>Mapping Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Mapping Root</em>'.
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot
+ * @generated
+ */
+ EClass getXSD2EcoreMappingRoot();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ XSD2EcoreFactory getXSD2EcoreFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcoreMappingRootImpl <em>Mapping Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcoreMappingRootImpl
+ * @see org.eclipse.emf.mapping.xsd2ecore.impl.XSD2EcorePackageImpl#getXSD2EcoreMappingRoot()
+ * @generated
+ */
+ EClass XSD2_ECORE_MAPPING_ROOT = eINSTANCE.getXSD2EcoreMappingRoot();
+
+ }
+
+} //XSD2EcorePackage
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcorePlugin.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcorePlugin.java
new file mode 100644
index 0000000..ca17a76
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/XSD2EcorePlugin.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore;
+
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+import org.eclipse.emf.mapping.MappingPlugin;
+
+
+/**
+ * This is the central singleton for the XSD2Ecore edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class XSD2EcorePlugin extends EMFPlugin
+{
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final XSD2EcorePlugin INSTANCE = new XSD2EcorePlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcorePlugin()
+ {
+ super
+ (new ResourceLocator []
+ {
+ MappingPlugin.INSTANCE,
+ EcoreEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin
+ {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcoreFactoryImpl.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcoreFactoryImpl.java
new file mode 100644
index 0000000..94205bf
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcoreFactoryImpl.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.mapping.xsd2ecore.*;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSD2EcoreFactoryImpl extends EFactoryImpl implements XSD2EcoreFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static XSD2EcoreFactory init()
+ {
+ try
+ {
+ XSD2EcoreFactory theXSD2EcoreFactory = (XSD2EcoreFactory)EPackage.Registry.INSTANCE.getEFactory(XSD2EcorePackage.eNS_URI);
+ if (theXSD2EcoreFactory != null)
+ {
+ return theXSD2EcoreFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new XSD2EcoreFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case XSD2EcorePackage.XSD2_ECORE_MAPPING_ROOT: return createXSD2EcoreMappingRoot();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreMappingRoot createXSD2EcoreMappingRoot()
+ {
+ XSD2EcoreMappingRootImpl xsd2EcoreMappingRoot = new XSD2EcoreMappingRootImpl();
+ return xsd2EcoreMappingRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcorePackage getXSD2EcorePackage()
+ {
+ return (XSD2EcorePackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static XSD2EcorePackage getPackage()
+ {
+ return XSD2EcorePackage.eINSTANCE;
+ }
+
+} //XSD2EcoreFactoryImpl
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcoreMappingRootImpl.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcoreMappingRootImpl.java
new file mode 100644
index 0000000..222e8fe
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcoreMappingRootImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.mapping.impl.MappingRootImpl;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mapping Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class XSD2EcoreMappingRootImpl extends MappingRootImpl implements XSD2EcoreMappingRoot
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSD2EcoreMappingRootImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSD2EcorePackage.Literals.XSD2_ECORE_MAPPING_ROOT;
+ }
+
+} //XSD2EcoreMappingRootImpl
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcorePackageImpl.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcorePackageImpl.java
new file mode 100644
index 0000000..896b8c0
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/impl/XSD2EcorePackageImpl.java
@@ -0,0 +1,189 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.mapping.MappingPackage;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreFactory;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSD2EcorePackageImpl extends EPackageImpl implements XSD2EcorePackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsd2EcoreMappingRootEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private XSD2EcorePackageImpl()
+ {
+ super(eNS_URI, XSD2EcoreFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link XSD2EcorePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static XSD2EcorePackage init()
+ {
+ if (isInited) return (XSD2EcorePackage)EPackage.Registry.INSTANCE.getEPackage(XSD2EcorePackage.eNS_URI);
+
+ // Obtain or create and register package
+ XSD2EcorePackageImpl theXSD2EcorePackage = (XSD2EcorePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof XSD2EcorePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new XSD2EcorePackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ MappingPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theXSD2EcorePackage.createPackageContents();
+
+ // Initialize created meta-data
+ theXSD2EcorePackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theXSD2EcorePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(XSD2EcorePackage.eNS_URI, theXSD2EcorePackage);
+ return theXSD2EcorePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSD2EcoreMappingRoot()
+ {
+ return xsd2EcoreMappingRootEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreFactory getXSD2EcoreFactory()
+ {
+ return (XSD2EcoreFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ xsd2EcoreMappingRootEClass = createEClass(XSD2_ECORE_MAPPING_ROOT);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ MappingPackage theMappingPackage = (MappingPackage)EPackage.Registry.INSTANCE.getEPackage(MappingPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ xsd2EcoreMappingRootEClass.getESuperTypes().add(theMappingPackage.getMappingRoot());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(xsd2EcoreMappingRootEClass, XSD2EcoreMappingRoot.class, "XSD2EcoreMappingRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //XSD2EcorePackageImpl
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/provider/XSD2EcoreItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/provider/XSD2EcoreItemProviderAdapterFactory.java
new file mode 100644
index 0000000..d094805
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/provider/XSD2EcoreItemProviderAdapterFactory.java
@@ -0,0 +1,223 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.mapping.xsd2ecore.util.XSD2EcoreAdapterFactory;
+
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSD2EcoreItemProviderAdapterFactory extends XSD2EcoreAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable
+{
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreItemProviderAdapterFactory()
+ {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSD2EcoreMappingRootItemProvider xsd2EcoreMappingRootItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createXSD2EcoreMappingRootAdapter()
+ {
+ if (xsd2EcoreMappingRootItemProvider == null)
+ {
+ xsd2EcoreMappingRootItemProvider = new XSD2EcoreMappingRootItemProvider(this);
+ }
+
+ return xsd2EcoreMappingRootItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory()
+ {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
+ {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type)
+ {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type)
+ {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type)
+ {
+ if (isFactoryForType(type))
+ {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter)))
+ {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener)
+ {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener)
+ {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification)
+ {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null)
+ {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose()
+ {
+ if (xsd2EcoreMappingRootItemProvider != null) xsd2EcoreMappingRootItemProvider.dispose();
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/provider/XSD2EcoreMappingRootItemProvider.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/provider/XSD2EcoreMappingRootItemProvider.java
new file mode 100644
index 0000000..56885ca
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/provider/XSD2EcoreMappingRootItemProvider.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.mapping.provider.MappingRootItemProvider;
+import org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePlugin;
+
+// import org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSD2EcoreMappingRootItemProvider
+ extends MappingRootItemProvider
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreMappingRootItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object)
+ {
+ return super.getText(object);
+ // XSD2EcoreMappingRoot xsD2EcoreMappingRoot = (XSD2EcoreMappingRoot)object;
+ // return "Mapping Root " + xsD2EcoreMappingRoot.isOutputReadOnly();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification)
+ {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator()
+ {
+ return XSD2EcorePlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreAdapterFactory.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreAdapterFactory.java
new file mode 100644
index 0000000..f836a1b
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreAdapterFactory.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.mapping.Mapping;
+import org.eclipse.emf.mapping.MappingRoot;
+import org.eclipse.emf.mapping.xsd2ecore.*;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage
+ * @generated
+ */
+public class XSD2EcoreAdapterFactory extends AdapterFactoryImpl
+{
+
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static XSD2EcorePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = XSD2EcorePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSD2EcoreSwitch<Adapter> modelSwitch =
+ new XSD2EcoreSwitch<Adapter>()
+ {
+ @Override
+ public Adapter caseXSD2EcoreMappingRoot(XSD2EcoreMappingRoot object)
+ {
+ return createXSD2EcoreMappingRootAdapter();
+ }
+ @Override
+ public Adapter caseMapping(Mapping object)
+ {
+ return createMappingAdapter();
+ }
+ @Override
+ public Adapter caseMappingRoot(MappingRoot object)
+ {
+ return createMappingRootAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object)
+ {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target)
+ {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot <em>Mapping Root</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMappingRoot
+ * @generated
+ */
+ public Adapter createXSD2EcoreMappingRootAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.mapping.Mapping <em>Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.mapping.Mapping
+ * @generated
+ */
+ public Adapter createMappingAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.mapping.MappingRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.mapping.MappingRoot
+ * @generated
+ */
+ public Adapter createMappingRootAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter()
+ {
+ return null;
+ }
+
+} //XSD2EcoreAdapterFactory
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreResourceFactoryImpl.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreResourceFactoryImpl.java
new file mode 100644
index 0000000..bb6899e
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreResourceFactoryImpl.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.util;
+
+
+import java.util.Locale;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.util.XSD2EcoreResourceImpl
+ * @generated
+ */
+public class XSD2EcoreResourceFactoryImpl extends ResourceFactoryImpl
+{
+ protected static final boolean USE_ASCII = Locale.getDefault().getLanguage().equals("en");
+
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreResourceFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Resource createResource(URI uri)
+ {
+ XSD2EcoreResourceImpl result = new XSD2EcoreResourceImpl(uri);
+
+ if (!USE_ASCII)
+ {
+ result.setEncoding("UTF-8");
+ }
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_LINE_WIDTH, 80);
+
+ return result;
+ }
+} //XSD2EcoreResourceFactoryImpl
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreResourceImpl.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreResourceImpl.java
new file mode 100644
index 0000000..8f274b6
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreResourceImpl.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.util;
+
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.util.XSD2EcoreResourceFactoryImpl
+ * @generated
+ */
+public class XSD2EcoreResourceImpl extends XMIResourceImpl
+{
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public XSD2EcoreResourceImpl(URI uri)
+ {
+ super(uri);
+ }
+
+} //XSD2EcoreResourceFactoryImpl
diff --git a/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreSwitch.java b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreSwitch.java
new file mode 100644
index 0000000..51463e9
--- /dev/null
+++ b/plugins/org.eclipse.emf.mapping.xsd2ecore/src/org/eclipse/emf/mapping/xsd2ecore/util/XSD2EcoreSwitch.java
@@ -0,0 +1,162 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.emf.mapping.xsd2ecore.util;
+
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.mapping.Mapping;
+import org.eclipse.emf.mapping.MappingRoot;
+import org.eclipse.emf.mapping.xsd2ecore.*;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.mapping.xsd2ecore.XSD2EcorePackage
+ * @generated
+ */
+public class XSD2EcoreSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static XSD2EcorePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSD2EcoreSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = XSD2EcorePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage)
+ {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case XSD2EcorePackage.XSD2_ECORE_MAPPING_ROOT:
+ {
+ XSD2EcoreMappingRoot xsd2EcoreMappingRoot = (XSD2EcoreMappingRoot)theEObject;
+ T result = caseXSD2EcoreMappingRoot(xsd2EcoreMappingRoot);
+ if (result == null) result = caseMappingRoot(xsd2EcoreMappingRoot);
+ if (result == null) result = caseMapping(xsd2EcoreMappingRoot);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Mapping Root</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Mapping Root</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSD2EcoreMappingRoot(XSD2EcoreMappingRoot object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Mapping</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMapping(Mapping object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Root</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Root</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMappingRoot(MappingRoot object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} //XSD2EcoreSwitch
diff --git a/plugins/org.eclipse.emf.mapping/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.mapping/META-INF/MANIFEST.MF
index 8cc3d1b..9276e96 100644
--- a/plugins/org.eclipse.emf.mapping/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.mapping/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.mapping;singleton:=true
-Bundle-Version: 2.12.0.qualifier
+Bundle-Version: 2.13.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.mapping.MappingPlugin$Implementation$Activator
Bundle-Vendor: %providerName
@@ -15,9 +15,9 @@
org.eclipse.emf.mapping.provider,
org.eclipse.emf.mapping.util
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
- org.eclipse.emf.ecore;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.edit;bundle-version="[2.14.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore.edit;bundle-version="[2.11.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.14.0,3.0.0)";visibility:=reexport
Import-Package: org.osgi.framework;version="[1.5.0,2.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.mapping/about.mappings b/plugins/org.eclipse.emf.mapping/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf.mapping/about.mappings
+++ b/plugins/org.eclipse.emf.mapping/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.mapping/pom.xml b/plugins/org.eclipse.emf.mapping/pom.xml
index 707ca2c..df08fe7 100644
--- a/plugins/org.eclipse.emf.mapping/pom.xml
+++ b/plugins/org.eclipse.emf.mapping/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.mapping</artifactId>
- <version>2.12.0-SNAPSHOT</version>
+ <version>2.13.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.oda.ecore.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.oda.ecore.ui/META-INF/MANIFEST.MF
index 2ce0b5d..91738c5 100644
--- a/plugins/org.eclipse.emf.oda.ecore.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.oda.ecore.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.oda.ecore.ui; singleton:=true
-Bundle-Version: 1.5.0.qualifier
+Bundle-Version: 1.6.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.oda.ecore.ui.ODAEcoreUIPlugin$Implementation
Bundle-Vendor: %providerName
@@ -12,9 +12,9 @@
org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)",
org.eclipse.datatools.connectivity.oda.design.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.emf.edit.ui;bundle-version="[2.16.0,3.0.0)",
- org.eclipse.emf.ecore.edit;bundle-version="[2.12.0,3.0.0)",
- org.eclipse.emf.oda.ecore;bundle-version="[1.4.0,2.0.0)";visibility:=reexport
+ org.eclipse.emf.edit.ui;bundle-version="[2.23.0,3.0.0)",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.14.0,3.0.0)",
+ org.eclipse.emf.oda.ecore;bundle-version="[1.6.0,2.0.0)";visibility:=reexport
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.emf.oda.ecore.ui,
diff --git a/plugins/org.eclipse.emf.oda.ecore.ui/about.mappings b/plugins/org.eclipse.emf.oda.ecore.ui/about.mappings
index f9d94ab..cf26020 100755
--- a/plugins/org.eclipse.emf.oda.ecore.ui/about.mappings
+++ b/plugins/org.eclipse.emf.oda.ecore.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.oda.ecore.ui/pom.xml b/plugins/org.eclipse.emf.oda.ecore.ui/pom.xml
index 65fe400..9890f38 100644
--- a/plugins/org.eclipse.emf.oda.ecore.ui/pom.xml
+++ b/plugins/org.eclipse.emf.oda.ecore.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.oda.ecore.ui</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>1.6.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.oda.ecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.oda.ecore/META-INF/MANIFEST.MF
index 6d34cd3..f46ad55 100644
--- a/plugins/org.eclipse.emf.oda.ecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.oda.ecore/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.oda.ecore; singleton:=true
-Bundle-Version: 1.5.0.qualifier
+Bundle-Version: 1.6.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.oda.ecore.ODAEcorePlugin$Implementation
Bundle-Vendor: %providerName
@@ -14,7 +14,7 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.datatools.connectivity.oda;bundle-version="[3.3.0,4.0.0)",
org.eclipse.datatools.connectivity.oda.profile;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.emf.ecore;bundle-version="[2.23.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.oda.ecore
diff --git a/plugins/org.eclipse.emf.oda.ecore/about.mappings b/plugins/org.eclipse.emf.oda.ecore/about.mappings
index f9d94ab..cf26020 100755
--- a/plugins/org.eclipse.emf.oda.ecore/about.mappings
+++ b/plugins/org.eclipse.emf.oda.ecore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.oda.ecore/pom.xml b/plugins/org.eclipse.emf.oda.ecore/pom.xml
index c3fae80..c010922 100644
--- a/plugins/org.eclipse.emf.oda.ecore/pom.xml
+++ b/plugins/org.eclipse.emf.oda.ecore/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.oda.ecore</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>1.6.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.oda/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.oda/META-INF/MANIFEST.MF
index fc2a5ad..eaadb87 100755
--- a/plugins/org.eclipse.emf.oda/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.oda/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.oda;singleton:=true
-Bundle-Version: 1.4.0.qualifier
+Bundle-Version: 1.5.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.oda/about.mappings b/plugins/org.eclipse.emf.oda/about.mappings
index f9d94ab..cf26020 100755
--- a/plugins/org.eclipse.emf.oda/about.mappings
+++ b/plugins/org.eclipse.emf.oda/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.oda/pom.xml b/plugins/org.eclipse.emf.oda/pom.xml
index 72f9805..6786f59 100644
--- a/plugins/org.eclipse.emf.oda/pom.xml
+++ b/plugins/org.eclipse.emf.oda/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.oda</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.rap.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.rap.common.ui/META-INF/MANIFEST.MF
index d32c636..a09585a 100755
--- a/plugins/org.eclipse.emf.rap.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.rap.common.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.rap.common.ui;singleton:=true
-Bundle-Version: 2.11.0.qualifier
+Bundle-Version: 2.12.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.common.ui.CommonUIPlugin$Implementation
Bundle-Vendor: %providerName
@@ -16,7 +16,7 @@
org.eclipse.emf.common.ui.viewer
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.rap.ui;bundle-version="[1.3.0,5.0.0)",
- org.eclipse.emf.common;bundle-version="[2.14.0,3.0.0)"
+ org.eclipse.emf.common;bundle-version="[2.28.0,3.0.0)"
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.rap.common.ui
diff --git a/plugins/org.eclipse.emf.rap.common.ui/about.mappings b/plugins/org.eclipse.emf.rap.common.ui/about.mappings
index f9d94ab..cf26020 100755
--- a/plugins/org.eclipse.emf.rap.common.ui/about.mappings
+++ b/plugins/org.eclipse.emf.rap.common.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.rap.common.ui/pom.xml b/plugins/org.eclipse.emf.rap.common.ui/pom.xml
index 50c5e09..7680eca 100644
--- a/plugins/org.eclipse.emf.rap.common.ui/pom.xml
+++ b/plugins/org.eclipse.emf.rap.common.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.rap.common.ui</artifactId>
- <version>2.11.0-SNAPSHOT</version>
+ <version>2.12.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.rap.edit.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.rap.edit.ui/META-INF/MANIFEST.MF
index b3ee659..aa858fc 100755
--- a/plugins/org.eclipse.emf.rap.edit.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.rap.edit.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.rap.edit.ui;singleton:=true
-Bundle-Version: 2.12.0.qualifier
+Bundle-Version: 2.13.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.emf.edit.ui.EMFEditUIPlugin$Implementation
Bundle-Vendor: %providerName
@@ -19,8 +19,8 @@
org.eclipse.rap.ui;bundle-version="[1.3.0,5.0.0)",
org.eclipse.rap.ui.views;bundle-version="[1.3.0,5.0.0)",
org.eclipse.rap.ui.workbench;bundle-version="[1.3.0,5.0.0)",
- org.eclipse.emf.edit;bundle-version="[2.16.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.rap.common.ui;bundle-version="[2.11.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.edit;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.rap.common.ui;bundle-version="[2.12.0,3.0.0)";visibility:=reexport
Eclipse-LazyStart: true
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.emf.rap.edit.ui
diff --git a/plugins/org.eclipse.emf.rap.edit.ui/about.mappings b/plugins/org.eclipse.emf.rap.edit.ui/about.mappings
index f9d94ab..cf26020 100755
--- a/plugins/org.eclipse.emf.rap.edit.ui/about.mappings
+++ b/plugins/org.eclipse.emf.rap.edit.ui/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.rap.edit.ui/pom.xml b/plugins/org.eclipse.emf.rap.edit.ui/pom.xml
index c54ac0b..4ac5adb 100644
--- a/plugins/org.eclipse.emf.rap.edit.ui/pom.xml
+++ b/plugins/org.eclipse.emf.rap.edit.ui/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.rap.edit.ui</artifactId>
- <version>2.12.0-SNAPSHOT</version>
+ <version>2.13.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.rap/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.rap/META-INF/MANIFEST.MF
index 606c3ba..894b9c5 100755
--- a/plugins/org.eclipse.emf.rap/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.rap/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.rap;singleton:=true
-Bundle-Version: 2.8.0.qualifier
+Bundle-Version: 2.9.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf.rap/about.mappings b/plugins/org.eclipse.emf.rap/about.mappings
index f9d94ab..cf26020 100755
--- a/plugins/org.eclipse.emf.rap/about.mappings
+++ b/plugins/org.eclipse.emf.rap/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf.rap/pom.xml b/plugins/org.eclipse.emf.rap/pom.xml
index 22c0c70..f533927 100644
--- a/plugins/org.eclipse.emf.rap/pom.xml
+++ b/plugins/org.eclipse.emf.rap/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.rap</artifactId>
- <version>2.8.0-SNAPSHOT</version>
+ <version>2.9.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.emf/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf/META-INF/MANIFEST.MF
index cd2f2f6..41d6a74 100644
--- a/plugins/org.eclipse.emf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf;singleton:=true
-Bundle-Version: 2.8.0.qualifier
+Bundle-Version: 2.9.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.emf/about.mappings b/plugins/org.eclipse.emf/about.mappings
index f9d94ab..cf26020 100644
--- a/plugins/org.eclipse.emf/about.mappings
+++ b/plugins/org.eclipse.emf/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.emf/pom.xml b/plugins/org.eclipse.emf/pom.xml
index 15e7afc..d0dc627 100644
--- a/plugins/org.eclipse.emf/pom.xml
+++ b/plugins/org.eclipse.emf/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf</artifactId>
- <version>2.8.0-SNAPSHOT</version>
+ <version>2.9.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.xsd.ecore.converter/.project b/plugins/org.eclipse.xsd.ecore.converter/.project
new file mode 100644
index 0000000..b504df6
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.ecore.converter</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.ecore.converter/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.ecore.converter/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c0ddb94
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.ecore.converter;singleton:=true
+Bundle-Version: 2.9.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.xsd.ecore.converter/about.html b/plugins/org.eclipse.xsd.ecore.converter/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.converter/about.ini b/plugins/org.eclipse.xsd.ecore.converter/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.xsd.ecore.converter/about.mappings b/plugins/org.eclipse.xsd.ecore.converter/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.xsd.ecore.converter/about.properties b/plugins/org.eclipse.xsd.ecore.converter/about.properties
new file mode 100644
index 0000000..bce315c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Ecore Converter
+
+featureText=XSD Ecore Converter\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/plugins/org.eclipse.xsd.ecore.converter/build.properties b/plugins/org.eclipse.xsd.ecore.converter/build.properties
new file mode 100644
index 0000000..d363fd3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ plugin.properties,\
+ modeling32.png,\
+ META-INF/
+src.includes = about.html
diff --git a/plugins/org.eclipse.xsd.ecore.converter/modeling32.png b/plugins/org.eclipse.xsd.ecore.converter/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.xsd.ecore.converter/plugin.properties b/plugins/org.eclipse.xsd.ecore.converter/plugin.properties
new file mode 100644
index 0000000..0d17458
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/plugin.properties
@@ -0,0 +1,15 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName=XSD Ecore Converter
+providerName=Eclipse Modeling Project
diff --git a/plugins/org.eclipse.xsd.ecore.converter/pom.xml b/plugins/org.eclipse.xsd.ecore.converter/pom.xml
new file mode 100644
index 0000000..d63cbf7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.converter/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.ecore.converter</artifactId>
+ <version>2.9.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/.classpath b/plugins/org.eclipse.xsd.ecore.exporter/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/.gitignore b/plugins/org.eclipse.xsd.ecore.exporter/.gitignore
new file mode 100644
index 0000000..4c49b59
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/.gitignore
@@ -0,0 +1,6 @@
+bin
+bin.tasks
+build.xml
+ant_tasks
+temp.folder
+*.jar
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/.project b/plugins/org.eclipse.xsd.ecore.exporter/.project
new file mode 100644
index 0000000..33c1e77
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/.project
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.ecore.exporter</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.xsd.ecore.exporter/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..952be83
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.ecore.exporter/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9bf4b16
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.ecore.exporter; singleton:=true
+Bundle-Version: 2.7.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.xsd.ecore.exporter.XSDExporterPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.xsd.ecore.exporter,
+ org.eclipse.xsd.ecore.exporter.ui
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.xsd;bundle-version="[2.15.0,3.0.0)",
+ org.eclipse.emf.exporter;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.14.0,3.0.0)";resolution:=optional,
+ org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)";resolution:=optional
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.xsd.ecore.exporter
+
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/about.html b/plugins/org.eclipse.xsd.ecore.exporter/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/build.properties b/plugins/org.eclipse.xsd.ecore.exporter/build.properties
new file mode 100644
index 0000000..1a64fd8
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/build.properties
@@ -0,0 +1,11 @@
+bin.includes = about.html,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ icons/,\
+ META-INF/
+src.includes = about.html
+source.. = src/
+output.. = bin/
+exclude.. = **/doc-files/**
+
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/icons/XSDModelFile.gif b/plugins/org.eclipse.xsd.ecore.exporter/icons/XSDModelFile.gif
new file mode 100644
index 0000000..13dcfce
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/icons/XSDModelFile.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/plugin.properties b/plugins/org.eclipse.xsd.ecore.exporter/plugin.properties
new file mode 100644
index 0000000..8e71d3e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/plugin.properties
@@ -0,0 +1,24 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Ecore Exporter
+providerName = Eclipse Modeling Project
+
+_UI_XSDExporter_label = XML Schema
+_UI_XSDExporter_description = Export the model to XML Schema
+
+_UI_XMIExporter_label = XML Schema for XMI
+_UI_XMIExporter_description = Export the model to XML Schema for XMI
+
+_UI_XSDImport_title = XML Schema Export
+_UI_InvalidArtifactFileNameExtension_message = The artifact file name must end in '.xsd'
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/plugin.xml b/plugins/org.eclipse.xsd.ecore.exporter/plugin.xml
new file mode 100644
index 0000000..ff86f1d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.emf.exporter.modelExporterDescriptors">
+ <modelExporterDescriptor id="org.eclipse.xsd.ecore.exporter" name="%_UI_XSDExporter_label"
+ icon="icons/XSDModelFile.gif" description="%_UI_XSDExporter_description" wizard="org.eclipse.xsd.ecore.exporter.ui.XSDExporterWizard" />
+ <modelExporterDescriptor id="org.eclipse.xsd.ecore.exporter.xmi" name="%_UI_XMIExporter_label"
+ icon="icons/XSDModelFile.gif" description="%_UI_XMIExporter_description" wizard="org.eclipse.xsd.ecore.exporter.ui.XMIExporterWizard" />
+ </extension>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/pom.xml b/plugins/org.eclipse.xsd.ecore.exporter/pom.xml
new file mode 100644
index 0000000..848a90d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.ecore.exporter</artifactId>
+ <version>2.7.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XMIExporter.java b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XMIExporter.java
new file mode 100644
index 0000000..618d544
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XMIExporter.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2005-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.exporter;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeValidator;
+
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.ecore.EcoreXMISchemaBuilder;
+import org.eclipse.xsd.ecore.EcoreXMLSchemaBuilder;
+
+/**
+ * @since 2.2.0
+ */
+public class XMIExporter extends XSDExporter
+{
+ @Override
+ public String getID()
+ {
+ return "org.eclipse.xsd.ecore.exporter.xmi";
+ }
+
+ @Override
+ protected String getDefaultArtifactLocation(EPackage ePackage)
+ {
+ return getDefaultArtifactFileName(ePackage) + "XMI.xsd";
+ }
+
+ @Override
+ protected XSDSchema getSchema(EPackage ePackage)
+ {
+ if (mapBuilder == null)
+ {
+ mapBuilder = new EcoreXMISchemaBuilder();
+ }
+ return
+ (XSDSchema)((EcoreXMISchemaBuilder)mapBuilder).generate
+ (ePackage,
+ new EcoreXMLSchemaBuilder.QNameMap()
+ {
+ ExtendedMetaData extendedMetaData = genModel.getExtendedMetaData();
+
+ public String getName(ENamedElement element)
+ {
+ if (element instanceof EStructuralFeature)
+ {
+ String name = extendedMetaData.getName((EStructuralFeature)element);
+ if (XMLTypeValidator.INSTANCE.validateNCName(name, null, null))
+ {
+ return name;
+ }
+ }
+ else if (element instanceof EClassifier)
+ {
+ String name = extendedMetaData.getName((EClassifier)element);
+ if (XMLTypeValidator.INSTANCE.validateNCName(name, null, null))
+ {
+ return name;
+ }
+ }
+ return element.getName();
+ }
+ }).iterator().next();
+ }
+
+ @Override
+ protected String computeSchemaLocation(XSDSchemaDirective xsdSchemaDirective, URI artifactURI)
+ {
+ if (artifactURI != null)
+ {
+ return artifactURI.toString();
+ }
+ else if ("XMI.xsd".equals(xsdSchemaDirective.getSchemaLocation()) &&
+ xsdSchemaDirective instanceof XSDImport &&
+ ExtendedMetaData.XMI_URI.equals(((XSDImport)xsdSchemaDirective).getNamespace()) &&
+ !EcorePackage.eNS_URI.equals(xsdSchemaDirective.getSchema().getTargetNamespace()))
+ {
+ return "platform:/plugin/org.eclipse.emf.ecore/model/XMI.xsd";
+ }
+ else if (EcorePackage.eNS_URI.equals(xsdSchemaDirective.getSchemaLocation()))
+ {
+ return "platform:/plugin/org.eclipse.emf.ecore/model/EcoreXMI.xsd";
+ }
+ else
+ {
+ return xsdSchemaDirective.getSchemaLocation();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XSDExporter.java b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XSDExporter.java
new file mode 100644
index 0000000..432c0bf
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XSDExporter.java
@@ -0,0 +1,165 @@
+/**
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.exporter;
+
+import java.util.Map;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.Monitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.exporter.ModelExporter;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.ecore.EcoreSchemaBuilder;
+import org.eclipse.xsd.ecore.MapBuilder;
+
+/**
+ * @since 2.2.0
+ */
+public class XSDExporter extends ModelExporter
+{
+ protected MapBuilder mapBuilder;
+
+ @Override
+ public String getID()
+ {
+ return "org.eclipse.xsd.ecore.exporter";
+ }
+
+ @Override
+ public void dispose()
+ {
+ mapBuilder = null;
+ super.dispose();
+ }
+
+ @Override
+ protected String getDefaultArtifactLocation(EPackage ePackage)
+ {
+ return getDefaultArtifactFileName(ePackage) + ".xsd";
+ }
+
+ @Override
+ protected String doCheckEPackageArtifactLocation(String location, String packageName)
+ {
+ if (!location.endsWith(".xsd"))
+ {
+ return XSDExporterPlugin.INSTANCE.getString("_UI_InvalidArtifactFileNameExtension_message");
+ }
+ return super.doCheckEPackageArtifactLocation(location, packageName);
+ }
+
+ protected XSDSchema getSchema(EPackage ePackage)
+ {
+ if (mapBuilder == null)
+ {
+ mapBuilder = new EcoreSchemaBuilder(genModel.getExtendedMetaData())
+ {
+ @Override
+ protected String getQualifiedPackageName(EPackage ePackage)
+ {
+ return genModel.findGenPackage(ePackage).getQualifiedPackageName();
+ }
+ };
+ }
+ return ((EcoreSchemaBuilder)mapBuilder).getSchema(ePackage);
+ }
+
+ @Override
+ protected Diagnostic doExport(Monitor monitor, ModelExporter.ExportData exportData) throws Exception
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ for (Map.Entry<GenPackage, URI> entry : exportData.genPackageToArtifactURI.entrySet())
+ {
+ GenPackage genPackage = entry.getKey();
+ EPackage ePackage = genPackage.getEcorePackage();
+ URI schemaLocationURI = entry.getValue();
+ XSDSchema xsdSchema = getSchema(ePackage);
+ for (Object content : xsdSchema.getContents())
+ {
+ if (content instanceof XSDImport)
+ {
+ XSDImport xsdImport = (XSDImport)content;
+ EPackage referencedEPackage = genModel.getExtendedMetaData().getPackage(xsdImport.getNamespace());
+ if (referencedEPackage != null)
+ {
+ GenPackage referencedGenPackage = genModel.findGenPackage(referencedEPackage);
+ URI artifactURI = getReferencedGenPackageArtifactURI(exportData, referencedGenPackage);
+ URI importLocationURI = URI.createURI(computeSchemaLocation(xsdImport, artifactURI));
+ if (schemaLocationURI.isPlatformResource() == importLocationURI.isPlatformResource() &&
+ schemaLocationURI.isPlatformPlugin() == importLocationURI.isPlatformPlugin())
+ {
+ importLocationURI = importLocationURI.deresolve(schemaLocationURI, true, true, false);
+ }
+ xsdImport.setSchemaLocation(importLocationURI.toString());
+ }
+ }
+ else if (!(content instanceof XSDAnnotation))
+ {
+ break;
+ }
+ }
+
+ Resource resource = resourceSet.createResource(schemaLocationURI);
+ resource.getContents().add(xsdSchema);
+ resource.save(null);
+ }
+
+ return Diagnostic.OK_INSTANCE;
+ }
+
+ protected URI getReferencedGenPackageArtifactURI(ModelExporter.ExportData exportData, GenPackage genPackage)
+ {
+ URI artifactURI = exportData.referencedGenPackagesToArtifactURI.get(genPackage);
+ if (artifactURI == null)
+ {
+ artifactURI = exportData.genPackageToArtifactURI.get(genPackage);
+ if (artifactURI == null)
+ {
+ for (Map.Entry<GenPackage, URI> entry : exportData.referencedGenPackagesToArtifactURI.entrySet())
+ {
+ GenPackage referencedGenPackage = entry.getKey();
+ if (genPackage.getNSURI().equals(referencedGenPackage.getNSURI())
+ && genPackage.getEcorePackage().getName().equals(referencedGenPackage.getEcorePackage().getName()))
+ {
+ artifactURI = entry.getValue();
+ }
+ }
+ }
+ }
+ return artifactURI;
+ }
+
+ protected String computeSchemaLocation(XSDSchemaDirective xsdSchemaDirective, URI artifactURI)
+ {
+ if (artifactURI != null)
+ {
+ return artifactURI.toString();
+ }
+ else if (EcorePackage.eNS_URI.equals(xsdSchemaDirective.getSchemaLocation()))
+ {
+ return "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.xsd";
+ }
+ else
+ {
+ return xsdSchemaDirective.getSchemaLocation();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XSDExporterPlugin.java b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XSDExporterPlugin.java
new file mode 100644
index 0000000..894849d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/XSDExporterPlugin.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.exporter;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.exporter.ExporterPlugin;
+
+
+/**
+ * The <b>Plugin</b> for the XSD.CodeGen library.
+ * @since 2.2.0
+ */
+public final class XSDExporterPlugin extends EMFPlugin
+{
+ /**
+ * The singleton instance of the plugin.
+ */
+ public static final XSDExporterPlugin INSTANCE = new XSDExporterPlugin();
+
+ /**
+ * The one instance of this class.
+ */
+ private static Implementation plugin;
+
+ /**
+ * Creates the singleton instance.
+ */
+ private XSDExporterPlugin()
+ {
+ super(new ResourceLocator [] { ExporterPlugin.INSTANCE });
+ }
+
+ /*
+ * Javadoc copied from base class.
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * @return the singleton instance.
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ */
+ public static class Implementation extends EclipsePlugin
+ {
+ /**
+ * Creates an instance.
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/ui/XMIExporterWizard.java b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/ui/XMIExporterWizard.java
new file mode 100644
index 0000000..d4830a5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/ui/XMIExporterWizard.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2005-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.exporter.ui;
+
+import org.eclipse.emf.converter.ModelConverter;
+import org.eclipse.xsd.ecore.exporter.XMIExporter;
+
+/**
+ * @since 2.2.0
+ */
+public class XMIExporterWizard extends XSDExporterWizard
+{
+ public XMIExporterWizard()
+ {
+ super();
+ }
+
+ @Override
+ protected ModelConverter createModelConverter()
+ {
+ return new XMIExporter();
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/ui/XSDExporterWizard.java b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/ui/XSDExporterWizard.java
new file mode 100644
index 0000000..550e4e0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.exporter/src/org/eclipse/xsd/ecore/exporter/ui/XSDExporterWizard.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2005-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.exporter.ui;
+
+import org.eclipse.emf.converter.ModelConverter;
+import org.eclipse.emf.exporter.ui.contribution.base.ModelExporterDirectoryURIPage;
+import org.eclipse.emf.exporter.ui.contribution.base.ModelExporterOptionsPage;
+import org.eclipse.emf.exporter.ui.contribution.base.ModelExporterPackagePage;
+import org.eclipse.emf.exporter.ui.contribution.base.ModelExporterWizard;
+
+import org.eclipse.xsd.ecore.exporter.XSDExporter;
+import org.eclipse.xsd.ecore.exporter.XSDExporterPlugin;
+
+/**
+ * @since 2.2.0
+ */
+public class XSDExporterWizard extends ModelExporterWizard
+{
+ public XSDExporterWizard()
+ {
+ super();
+ }
+
+ @Override
+ protected ModelConverter createModelConverter()
+ {
+ return new XSDExporter();
+ }
+
+ @Override
+ public void addPages()
+ {
+ ModelExporterDirectoryURIPage directoryURIPage = new ModelExporterDirectoryURIPage(getModelExporter(), "XSDExporterBaseLocationPage");
+ directoryURIPage.setTitle(XSDExporterPlugin.INSTANCE.getString("_UI_XSDImport_title"));
+ addPage(directoryURIPage);
+
+ ModelExporterPackagePage packagePage = new ModelExporterPackagePage(getModelExporter(), "XSDExporterGenModelDetailPage");
+ packagePage.setTitle(XSDExporterPlugin.INSTANCE.getString("_UI_XSDImport_title"));
+ packagePage.setShowReferencedGenModels(true);
+ addPage(packagePage);
+
+ ModelExporterOptionsPage optionsPage = new ModelExporterOptionsPage(getModelExporter(), "XSDExporterOptionsPage");
+ optionsPage.setTitle(XSDExporterPlugin.INSTANCE.getString("_UI_XSDImport_title"));
+ addPage(optionsPage);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.classpath b/plugins/org.eclipse.xsd.ecore.importer/.classpath
new file mode 100644
index 0000000..5fcb035
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" output="bin.tasks" path="tasks"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/copyExample.ant b/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/copyExample.ant
new file mode 100644
index 0000000..756ba03
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/copyExample.ant
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<project name="copyExample" default="main" basedir="../..">
+
+ <property name="test" value="org.eclipse.emf.test.tools" />
+ <import file="../../../tests/${test}/copyExampleLib.ant" optional="true" />
+ <basename file="${build.project}" property="project" />
+
+ <target name="main">
+ <copyExample project="${project}" />
+ </target>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/org.eclipse.xsd.ecore.importer.build.ant_tasks.launch b/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/org.eclipse.xsd.ecore.importer.build.ant_tasks.launch
new file mode 100644
index 0000000..24c0c2a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/org.eclipse.xsd.ecore.importer.build.ant_tasks.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_CLEAN_TARGETS" value="build.jars,clean.jars,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<booleanAttribute key="org.eclipse.ant.uiSET_INPUTHANDLER" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/org.eclipse.xsd.ecore.importer/ant_tasks" type="2"/> </resources>}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"/>
+<booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.xsd.ecore.importer"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/org.eclipse.xsd.ecore.importer/ant_tasks/xsd.ecore.importer.tasks.jar" type="1"/> <item path="/org.eclipse.xsd.ecore.importer/bin.tasks" type="2"/> </resources>}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.xsd.ecore.importer/build.ant_tasks.ant}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="incremental,auto,clean"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/org.eclipse.xsd.ecore.importer.test.launch b/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/org.eclipse.xsd.ecore.importer.test.launch
new file mode 100644
index 0000000..6b07235
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.externalToolBuilders/org.eclipse.xsd.ecore.importer.test.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<booleanAttribute key="org.eclipse.ant.uiSET_INPUTHANDLER" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/org.eclipse.emf.test.tools/examples/org.eclipse.xsd.ecore.importer" type="2"/> </resources>}"/>
+<booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.xsd.ecore.importer"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/org.eclipse.emf.test.tools/examples/org.eclipse.xsd.ecore.importer" type="2"/> <item path="/org.eclipse.xsd.ecore.importer/examples" type="2"/> </resources>}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${project_loc:/org.eclipse.xsd.ecore.importer}/.externalToolBuilders/copyExample.ant"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="incremental,auto,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.project=${project_loc:/org.eclipse.xsd.ecore.importer}"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.gitignore b/plugins/org.eclipse.xsd.ecore.importer/.gitignore
new file mode 100644
index 0000000..00ae2ff
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.gitignore
@@ -0,0 +1,2 @@
+bin
+bin.tasks
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.project b/plugins/org.eclipse.xsd.ecore.importer/.project
new file mode 100644
index 0000000..18e822d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.project
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.ecore.importer</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/org.eclipse.xsd.ecore.importer.build.ant_tasks.launch</value>
+ </dictionary>
+ <dictionary>
+ <key>incclean</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>auto,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/org.eclipse.xsd.ecore.importer.test.launch</value>
+ </dictionary>
+ <dictionary>
+ <key>incclean</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.xsd.ecore.importer/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..952be83
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.xsd.ecore.importer/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.xsd.ecore.importer/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..c0ede4b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,3 @@
+compilers.p.build.output.library=2
+compilers.p.build.source.library=2
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.xsd.ecore.importer/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.ecore.importer/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3d222c8
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.ecore.importer; singleton:=true
+Bundle-Version: 2.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.xsd.ecore.importer.XSDImporterPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.xsd.ecore.importer,
+ org.eclipse.xsd.ecore.importer.taskdefs,
+ org.eclipse.xsd.ecore.importer.ui
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.xsd;bundle-version="[2.15.0,3.0.0)",
+ org.eclipse.emf.importer;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.mapping.xsd2ecore;bundle-version="[2.8.0,3.0.0)";resolution:=optional,
+ org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.14.0,3.0.0)";resolution:=optional,
+ org.apache.ant;bundle-version="[1.7.0,2.0.0)";resolution:=optional,
+ org.eclipse.emf.ant;bundle-version="[2.9.0,3.0.0)";resolution:=optional
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.xsd.ecore.importer
diff --git a/plugins/org.eclipse.xsd.ecore.importer/about.html b/plugins/org.eclipse.xsd.ecore.importer/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/ant_tasks/.gitignore b/plugins/org.eclipse.xsd.ecore.importer/ant_tasks/.gitignore
new file mode 100644
index 0000000..4914595
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/ant_tasks/.gitignore
@@ -0,0 +1 @@
+xsd.ecore.importer.tasks.jar
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/build.ant_tasks.ant b/plugins/org.eclipse.xsd.ecore.importer/build.ant_tasks.ant
new file mode 100644
index 0000000..c3d61f3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/build.ant_tasks.ant
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="org.eclipse.xsd.ecore.importer" default="build.jars" basedir=".">
+ <property name="jar.name" value="xsd.ecore.importer.tasks"/>
+ <target name="build.jars">
+ <jar destfile="ant_tasks/${jar.name}.jar">
+ <fileset dir="bin.tasks">
+ <include name="**/*.class"/>
+ </fileset>
+ </jar>
+ </target>
+ <target name="clean.jars">
+ <delete file="ant_tasks/${jar.name}.jar" failonerror="false"/>
+ </target>
+</project>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/build.properties b/plugins/org.eclipse.xsd.ecore.importer/build.properties
new file mode 100644
index 0000000..f35d699
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/build.properties
@@ -0,0 +1,19 @@
+bin.includes = about.html,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ icons/,\
+ ant_tasks/xsd.ecore.importer.tasks.jar,\
+ META-INF/
+src.includes = about.html,\
+ examples/,\
+ readme.html
+jars.compile.order = .,\
+ ant_tasks/xsd.ecore.importer.tasks.jar
+source.. = src/
+output.. = bin/
+source.ant_tasks/xsd.ecore.importer.tasks.jar = tasks/
+output.ant_tasks/xsd.ecore.importer.tasks.jar = bin.tasks/
+extra.ant_tasks/xsd.ecore.importer.tasks.jar = platform:/plugin/org.eclipse.emf.ant/ant_tasks/emf.ant.tasks.jar
+exclude.. = **/doc-files/**
+exclude.ant_tasks/xsd.ecore.importer.tasks.jar = **/doc-files/**
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/examples/library/build/codeGenFromMultipleXSD.xml b/plugins/org.eclipse.xsd.ecore.importer/examples/library/build/codeGenFromMultipleXSD.xml
new file mode 100644
index 0000000..c199f1e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/examples/library/build/codeGenFromMultipleXSD.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="codegen" basedir="..">
+ <dirname property="antfile.dir" file="${ant.file}"/>
+
+ <!-- Global properties -->
+ <property name="main.directory" location="${antfile.dir}/.."/>
+ <property name="output.directory" location="${main.directory}"/>
+ <property name="source.directory" value="src"/>
+ <property name="genJDKLevel" value="5.0"/>
+
+ <target name="codegen">
+
+ <!-- A macrodef makes it easier to generate code for multiple models in one script. -->
+ <macrodef name="multipleXSDs2Java">
+ <attribute name="genModelName"/>
+ <element name="settings"/>
+ <sequential>
+ <emf.XSD2Java
+ genModel="${output.directory}/emf/@{genModelName}.genmodel"
+ modelProject="${output.directory}"
+ modelProjectFragmentPath="${source.directory}"
+ modelPluginID="@{genModelName}.model"
+ copyright="This is my code."
+ jdkLevel="${genJDKLevel}">
+ <settings/>
+ </emf.XSD2Java>
+ </sequential>
+ </macrodef>
+
+ <!-- Generating the code for the library model -->
+ <multipleXSDs2Java genModelName="library">
+ <settings>
+ <model file="${main.directory}/model/libraryPart1.xsd"/>
+ <model file="${main.directory}/model/libraryPart2.xsd"/>
+ <arg line="-packages http://www.example.eclipse.org/Library1"/>
+ <arg line="-packages http://www.example.eclipse.org/Library2"/>
+ <arg line="-packageMap http://www.example.eclipse.org/Library1 org.examples.library.elements"/>
+ <arg line="-packageMap http://www.example.eclipse.org/Library2 org.examples.library"/>
+ </settings>
+ </multipleXSDs2Java>
+
+ </target>
+</project>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/examples/library/build/codeGenFromXSD.xml b/plugins/org.eclipse.xsd.ecore.importer/examples/library/build/codeGenFromXSD.xml
new file mode 100644
index 0000000..f55b426
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/examples/library/build/codeGenFromXSD.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="codegen" basedir="..">
+ <dirname property="antfile.dir" file="${ant.file}"/>
+
+ <!-- Global properties -->
+ <property name="main.directory" location="${antfile.dir}/.."/>
+ <property name="ouput.directory" location="${antfile.dir}/.."/>
+ <property name="source.directory" value="src"/>
+ <property name="genJDKLevel" value="5.0"/>
+
+ <target name="codegen">
+
+ <!-- A macrodef makes it easier to generate code for multiple models in one script. -->
+ <macrodef name="xsd2Java">
+ <attribute name="modelName"/>
+ <element name="settings"/>
+ <sequential>
+ <emf.XSD2Java
+ model="${main.directory}/model/@{modelName}.xsd"
+ genModel="${ouput.directory}/emf/@{modelName}.genmodel"
+ modelProject="${ouput.directory}"
+ modelProjectFragmentPath="${source.directory}"
+ copyright="This is my code."
+ jdkLevel="${genJDKLevel}">
+ <settings/>
+ </emf.XSD2Java>
+ </sequential>
+ </macrodef>
+
+ <!-- Generating the code for the library model -->
+ <xsd2Java modelName="library">
+ <settings>
+ <arg line="-packages http://www.example.eclipse.org/Library"/>
+ <arg line="-packageMap http://www.example.eclipse.org/Library org.examples.library"/>
+ </settings>
+ </xsd2Java>
+
+ </target>
+</project>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/library.xsd b/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/library.xsd
new file mode 100644
index 0000000..35de6e3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/library.xsd
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.example.eclipse.org/Library"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:lib="http://www.example.eclipse.org/Library"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:complexType name="Book">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string"/>
+ <xsd:element name="pages" type="xsd:int"/>
+ <xsd:element name="category" type="lib:BookCategory"/>
+ <xsd:element name="author" type="xsd:anyURI"
+ ecore:reference="lib:Writer" ecore:opposite="books"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Writer">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="books"
+ type="xsd:anyURI" ecore:reference="lib:Book" ecore:opposite="author"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Library">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0"
+ name="writers" type="lib:Writer"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0"
+ name="books" type="lib:Book"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="BookCategory">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Mystery"/>
+ <xsd:enumeration value="ScienceFiction"/>
+ <xsd:enumeration value="Biography"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/libraryPart1.xsd b/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/libraryPart1.xsd
new file mode 100644
index 0000000..1e33a88
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/libraryPart1.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.example.eclipse.org/Library1"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:lib1="http://www.example.eclipse.org/Library1"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:complexType name="Book">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string"/>
+ <xsd:element name="pages" type="xsd:int"/>
+ <xsd:element name="category" type="lib1:BookCategory"/>
+ <xsd:element name="author" type="xsd:anyURI"
+ ecore:reference="lib1:Writer" ecore:opposite="books"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Writer">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="books"
+ type="xsd:anyURI" ecore:reference="lib1:Book" ecore:opposite="author"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="BookCategory">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Mystery"/>
+ <xsd:enumeration value="ScienceFiction"/>
+ <xsd:enumeration value="Biography"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/libraryPart2.xsd b/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/libraryPart2.xsd
new file mode 100644
index 0000000..fdfe6af
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/examples/library/model/libraryPart2.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.example.eclipse.org/Library2"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:lib1="http://www.example.eclipse.org/Library1"
+ xmlns:lib2="http://www.example.eclipse.org/Library2"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:import namespace="http://www.example.eclipse.org/Library1"
+ schemaLocation="libraryPart1.xsd"/>
+
+ <xsd:complexType name="Library">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0"
+ name="writers" type="lib1:Writer"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0"
+ name="books" type="lib1:Book"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/icons/full/obj16/XSDModelFile.gif b/plugins/org.eclipse.xsd.ecore.importer/icons/full/obj16/XSDModelFile.gif
new file mode 100644
index 0000000..13dcfce
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/icons/full/obj16/XSDModelFile.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.ecore.importer/plugin.properties b/plugins/org.eclipse.xsd.ecore.importer/plugin.properties
new file mode 100644
index 0000000..831fc0b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/plugin.properties
@@ -0,0 +1,31 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Ecore Importer
+providerName = Eclipse Modeling Project
+
+_UI_XSDImporter_label = XML Schema
+_UI_XSDModelImporter_description = Create the Ecore model based on XML Schema or WSDL
+
+_UI_XSDImport_title = XML Schema Import
+_UI_XSDImportFile_description = Specify one or more '.xsd' or '.wsdl' URIs and try to load them
+_UI_XSDImportNewProject_description = Specify one or more '.xsd' or '.wsdl' URIs, try to load them, and choose a file name for the generator model
+
+_UI_Create_XML_Schema_to_Ecore_Map = Create XML Schema to Ecore &Map
+_UI_Create_XML_Schema_to_Ecore_Map_message = Creating an XML Schema to Ecore map is very time consuming for relatively large schemas. The map is purely informational and is not required to produce an Ecore model.
+_UI_Sort_Attributes = &Sort Attributes Alphabetically
+
+_UI_ErrorsWereDetectedXMLSchema_message = Problems were detected while validating and converting the XML Schemas
+_UI_SpecifyAValidXMLSchema_message = Specify a valid XML Schema and try loading again
+
+_UI_Mapping_message = Mapping {0}
diff --git a/plugins/org.eclipse.xsd.ecore.importer/plugin.xml b/plugins/org.eclipse.xsd.ecore.importer/plugin.xml
new file mode 100644
index 0000000..4b8a745
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/plugin.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension id="XSD2GenModel" point="org.eclipse.core.runtime.applications">
+ <application>
+ <run class="org.eclipse.xsd.ecore.importer.XSDImporterApplication" />
+ </application>
+ </extension>
+
+ <extension point="org.eclipse.emf.importer.modelImporterDescriptors">
+ <modelImporterDescriptor id="org.eclipse.xsd.ecore.importer" name="%_UI_XSDImporter_label" icon="icons/full/obj16/XSDModelFile.gif" extensions="xsd,wsdl" description="%_UI_XSDModelImporter_description" wizard="org.eclipse.xsd.ecore.importer.ui.XSDImporterWizard" />
+ </extension>
+
+ <extension point="org.eclipse.ant.core.extraClasspathEntries">
+ <extraClasspathEntry library="ant_tasks/xsd.ecore.importer.tasks.jar" />
+ </extension>
+
+ <extension point="org.eclipse.ant.core.antTasks">
+ <antTask library="ant_tasks/xsd.ecore.importer.tasks.jar" name="emf.XSD2Java" headless="true" class="org.eclipse.xsd.ecore.importer.taskdefs.XSDGeneratorTask" />
+ </extension>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/pom.xml b/plugins/org.eclipse.xsd.ecore.importer/pom.xml
new file mode 100644
index 0000000..5322f8a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.ecore.importer</artifactId>
+ <version>2.9.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.ecore.importer/readme.html b/plugins/org.eclipse.xsd.ecore.importer/readme.html
new file mode 100644
index 0000000..b1e06f5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/readme.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>org.eclipse.xsd.ecore.importer Read Me</title>
+</head>
+<body lang="EN-US">
+<h3>Introduction</h3>
+<p>This document describes how you can use scripts to generate code from XML Schema (xsd) files. The
+script can be either a regular shell script that invokes <a href="#headlessApplication">Eclipse headless
+applications</a> or an Ant script that invokes the <a href="#antTasks">task</a> provided by this plugin.</p>
+
+<h3><a name="overallComments">Overall Comments</a></h3>
+<ul>
+<li>If you didn't extract this plugin from CVS, the "examples" directory mentioned
+in this document is available in the XSD source plugin
+(org.eclipse.xsd.source_<i><version></i>/src/org.eclipse.xsd.ecore.importer_<i><version></i>).
+<br/><br/></li>
+<li>Before running your build scripts or the examples provided here, make sure you have the 2
+jar files required by this plugin ("xsd.ecore.importer.jar" and
+"xsd.ecore.importer.tasks.jar") and also the 2 jar files required by the <tt>org.eclipse.emf.ant</tt>
+plugin ("emf.ant.jar" and "emf.ant.tasks.jar"). If necessary, Eclipse
+can generate them for you. All you need to do is to run the Ant script created by PDE when you right click on the manifest file
+and select "PDE Tools>Create Ant Build File".
+<br/><br/></li>
+<li>Although the applications and task mentioned here must be executed by Eclipse (usually in headless mode), they can
+work on files located in any directory. In other words, your models, templates and other files don't need
+to be in the "plugins" directory nor in the workspace.
+<br/><br/></li>
+<li>In order to preserve the original state of this plugin's "examples" directory, you
+should copy it to a different location and run the Ant scripts from there.
+<br/><br/></li>
+<li>Starting a new JVM process and invoking Eclipse are expensive operations. Your build will
+perform better if you are able to group the steps that require Eclipse in a few scripts
+(one script would be ideal). This is probably a reason to use Ant instead of invoking the
+applications - you can generate code for multiple models using one single Ant script.
+<br/><br/></li>
+<li>The "examples/library" directory contains xsd file, and shell and Ant scripts
+to generate their code.
+</li>
+</ul>
+
+<h3><a name="headlessApplication">XSD and Generator Applications</a></h3>
+<p>The application provided by this plugin generates the ecore and genmodel files from models defined
+using XSD files.</p>
+<table border="1" cellpadding="2" cellspacing="0"
+summary="Lists the details about the XSD application.">
+ <tr><td colspan="2">XSD application details</td></tr>
+ <tr><td>ID</td><td><tt>org.eclipse.xsd.ecore.importer.XSD2GenModel</tt></td></tr>
+ <tr><td>Class</td><td><tt>org.eclipse.xsd.ecore.importer.XSDImporterApplication</tt></td></tr>
+</table>
+<p>To generate the actual Java code you will need to use a second application, provided by
+the "org.eclipse.emf.codegen.ecore" plugin.</p>
+<table border="1" cellpadding="2" cellspacing="0"
+summary="Lists the details about the Generator application.">
+ <tr><td colspan="2">Generator application details</td></tr>
+ <tr><td>ID</td><td><tt>org.eclipse.emf.codegen.ecore.Generator</tt></td></tr>
+ <tr><td>Class</td><td><tt>org.eclipse.emf.codegen.ecore.Generator</tt></td></tr>
+</table>
+<p>In order to run these or any other Eclipse application, you need to execute the following
+command (without the line breaks):</p>
+<p>
+eclipse
+<br/> -noSplash
+<br/> -data <i><full path to a workspace - ideally an empty directory></i>
+<br/> -application <i><application ID></i>
+<br/> <i><application arguments></i>
+</p>
+<p>In Windows you should execute <i>eclipsec</i> instead of <i>eclipse</i> in order to have
+access to the application's console output.</p>
+<p>The directory "examples/library/build" has shell scripts that generate the code for
+the model provided. If you have any questions after reading and experimenting with it, look at the
+applications's javadoc for more details. Also, check the application's class
+"getUsage()" method for the list of possible arguments.</p>
+
+
+<h3><a name="antTasks">XSD Ant Task</a></h3>
+<p>The XSD task details are:</p>
+<table border="1" cellpadding="2" cellspacing="0"
+summary="Lists the details about the XSD task.">
+ <tr><td>Name</td><td><tt>emf.XSD2Java</tt></td></tr>
+ <tr><td>Class</td><td><tt>org.eclipse.xsd.ecore.importer.taskdefs.XSDGeneratorTask</tt></td></tr>
+</table>
+<p>This is the usual command line to run an Ant script using a headless Eclipse instance (remove the line breaks):</p>
+<p>
+eclipse
+<br/> -noSplash
+<br/> -data <i><full path to a workspace - ideally an empty directory></i>
+<br/> -application org.eclipse.ant.core.antRunner
+<br/> -buildfile <i><full path to your script></i>
+</p>
+<p>In Windows you should execute <i>eclipsec</i> instead of <i>eclipse</i> in order to have
+access to the Ant build script console output.</p>
+<p>You can also use the Eclipse UI to execute an Ant script containing an EMF task. This can be
+done by right-clicking the script and selecting
+<i>Run As > Ant Build... > JRE > "Run in the same JRE as the workspace"</i>.</p>
+<p>The directory "examples/library/build" has an Ant script that generate the code for
+the model provided. The task's javadoc has lots of information you may find useful.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporter.java b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporter.java
new file mode 100644
index 0000000..8362331
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporter.java
@@ -0,0 +1,442 @@
+/**
+ * Copyright (c) 2005-2012 IBM Corporation and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Platform;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenAnnotation;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenResourceKind;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticException;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.Monitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.converter.ConverterPlugin;
+import org.eclipse.emf.converter.util.ConverterUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.importer.ModelImporter;
+
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.ecore.XSDEcoreBuilder;
+
+
+public class XSDImporter extends ModelImporter
+{
+ /**
+ * @since 2.9
+ */
+ protected static final String SORT_ATTRIBUTES_KEY = "sortAttributes";
+
+ /**
+ * @since 2.9
+ */
+ protected static final String CREATE_MAP_KEY = "createMap";
+
+ public static class MapHelper
+ {
+ /**
+ * @since 2.9
+ */
+ protected Monitor monitor;
+
+ public MapHelper()
+ {
+ }
+
+ /**
+ * @since 2.9
+ */
+ public MapHelper(Monitor monitor)
+ {
+ this.monitor = monitor;
+ }
+
+ public void setNewMapper(XSDEcoreBuilder ecoreBuilder)
+ {
+ try
+ {
+ // The builder provides access to the resource set used to load the root schemas...
+ //
+ final Builder builder = ecoreBuilder instanceof Builder ? (Builder)ecoreBuilder : null;
+ org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMapper mapper =
+ new org.eclipse.emf.mapping.xsd2ecore.XSD2EcoreMapper()
+ {
+ boolean initialized;
+ int mappings;
+ int count;
+
+ @Override
+ public void map(Collection<? extends EObject> inputs, Collection<? extends EObject> outputs)
+ {
+ if (monitor != null)
+ {
+ // The first time we create a mapping...
+ //
+ if (!initialized)
+ {
+ initialized = true;
+
+ // If there isn't a builder, we don't know how many mappings we'll create.
+ // But this should never be the case.
+ //
+ if (builder == null)
+ {
+ mappings = 1;
+
+ }
+ else
+ {
+ // Count the number of objects for which we expect to create mappings.
+ //
+ for (Iterator<?> i = builder.resourceSet.getAllContents(); i.hasNext(); )
+ {
+ Object object = i.next();
+ if (object instanceof XSDSchema ||
+ object instanceof XSDTypeDefinition ||
+ object instanceof XSDFeature ||
+ object instanceof XSDEnumerationFacet)
+ {
+ ++mappings;
+ }
+ }
+ }
+
+ // Use this as the estimated number of work items in the task.
+ //
+ monitor.beginTask("", mappings);
+ }
+ monitor.worked(1);
+ if (count++ % 100 == 0)
+ {
+ monitor.subTask(XSDImporterPlugin.INSTANCE.getString("_UI_Mapping_message", new Object [] { EcoreUtil.getURI(inputs.iterator().next()).trimFragment() }));
+ if (monitor.isCanceled())
+ {
+ throw new OperationCanceledException();
+ }
+ }
+ }
+ super.map(inputs, outputs);
+ }
+ };
+ ecoreBuilder.setMapper(mapper);
+ }
+ catch (Exception e)
+ {
+ XSDImporterPlugin.INSTANCE.log(e);
+ }
+ }
+ }
+
+ protected boolean createEcoreMap;
+
+ protected EObject mappingRoot;
+
+ /**
+ * @since 2.9
+ */
+ protected boolean sortAttributes = true;
+
+ @Override
+ public void dispose()
+ {
+ mappingRoot = null;
+ super.dispose();
+ }
+
+ @Override
+ public String getID()
+ {
+ return "org.eclipse.xsd.ecore.importer";
+ }
+
+ public boolean canCreateEcoreMap()
+ {
+ return Platform.getBundle("org.eclipse.emf.mapping.xsd2ecore") != null;
+ }
+
+ public void setCreateEcoreMap(boolean createEcoreMap)
+ {
+ this.createEcoreMap = createEcoreMap;
+ }
+
+ public boolean createEcoreMap()
+ {
+ return createEcoreMap && canCreateEcoreMap();
+ }
+
+ /**
+ * @since 2.9
+ */
+ public void setSortAttributes(boolean sortAttributes)
+ {
+ this.sortAttributes = sortAttributes;
+ }
+
+ /**
+ * @since 2.9
+ */
+ public boolean sortAttributes()
+ {
+ return sortAttributes;
+ }
+
+ public void setMappingRoot(EObject mappingRoot)
+ {
+ this.mappingRoot = mappingRoot;
+ }
+
+ public EObject getMappingRoot()
+ {
+ return mappingRoot;
+ }
+
+ /**
+ * An XSDEcoreBuilder that respects the {@link XSDImporter#sortAttributes} setting.
+ * @since 2.9
+ */
+ protected class Builder extends XSDEcoreBuilder
+ {
+ public ResourceSet resourceSet;
+
+ @Override
+ protected ResourceSet createResourceSet()
+ {
+ return resourceSet = super.createResourceSet();
+ }
+
+ @Override
+ protected boolean useSortedAttributes()
+ {
+ return sortAttributes;
+ }
+ }
+
+ @Override
+ protected Diagnostic doComputeEPackages(Monitor monitor) throws Exception
+ {
+ BasicDiagnostic basicDiagnostic = null;
+
+ List<URI> locationURIs = getModelLocationURIs();
+ if (locationURIs.isEmpty())
+ {
+ basicDiagnostic = new BasicDiagnostic(
+ Diagnostic.ERROR,
+ ConverterPlugin.ID,
+ ConverterUtil.ACTION_DIALOG_NONE | ConverterUtil.ACTION_MESSAGE_SET_ERROR,
+ XSDImporterPlugin.INSTANCE.getString("_UI_SpecifyAValidXMLSchema_message"),
+ null);
+ }
+ else
+ {
+ setMappingRoot(null);
+
+ XSDEcoreBuilder ecoreBuilder = new Builder();
+
+ if (createEcoreMap())
+ {
+ new MapHelper(monitor).setNewMapper(ecoreBuilder);
+ }
+ else
+ {
+ // If we're creating mappings, defer task size to the mapper's estimation of the number of mappings that need to be created.
+ //
+ monitor.beginTask("", 2);
+ monitor.subTask(XSDImporterPlugin.INSTANCE.getString("_UI_Loading_message", new Object [] { locationURIs }));
+ }
+
+ @SuppressWarnings("unchecked")
+ List<Object> result = (List<Object>)(List<?>)(Collection<?>)ecoreBuilder.generate(locationURIs);
+
+ Object lastElement = removeNonEPackageFromTheEnd(result);
+ if (lastElement instanceof List<?>)
+ {
+ @SuppressWarnings("unchecked")
+ List<List<?>> diagnostics = (List<List<?>>)(List<?>)lastElement;
+ if (!diagnostics.isEmpty())
+ {
+ BasicDiagnostic diagnostic = new BasicDiagnostic(
+ ConverterPlugin.ID,
+ ConverterUtil.ACTION_MESSAGE_NONE,
+ XSDImporterPlugin.INSTANCE.getString("_UI_ErrorsWereDetectedXMLSchema_message"),
+ null);
+
+ for (List<?> information : diagnostics)
+ {
+ diagnostic.add(new BasicDiagnostic(
+ "fatal".equals(information.get(0)) || "error".equals(information.get(0)) ? Diagnostic.ERROR : "warning".equals(information.get(0)) ? Diagnostic.WARNING : Diagnostic.INFO,
+ XSDImporterPlugin.getPlugin().getBundle().getSymbolicName(),
+ 0,
+ (String)information.get(1),
+ null));
+ }
+ basicDiagnostic = diagnostic;
+ }
+
+ lastElement = removeNonEPackageFromTheEnd(result);
+ }
+
+ if (lastElement instanceof EObject)
+ {
+ setMappingRoot((EObject)lastElement);
+ }
+
+ @SuppressWarnings("unchecked")
+ List<EPackage> ePackages = (List<EPackage>)(List<?>)result;
+ getEPackages().addAll(ePackages);
+ }
+
+ if (basicDiagnostic == null)
+ {
+ return Diagnostic.OK_INSTANCE;
+ }
+ else
+ {
+ return basicDiagnostic;
+ }
+ }
+
+ protected Object removeNonEPackageFromTheEnd(List<Object> list)
+ {
+ int lastIndex = list.size() - 1;
+ if (lastIndex >= 0 && !(list.get(lastIndex) instanceof EPackage))
+ {
+ return list.remove(lastIndex);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ @Override
+ protected void adjustGenPackageDuringTraverse(GenPackage genPackage)
+ {
+ genPackage.setResource(GenResourceKind.XML_LITERAL);
+ }
+
+ @Override
+ protected void adjustGenModel(Monitor monitor)
+ {
+ super.adjustGenModel(monitor);
+
+ IPath genModelFileFullPath = getGenModelPath();
+ URI genModelURI = createFileURI(genModelFileFullPath.toString());
+
+ GenModel genModel = getGenModel();
+ EList<String> foreignModel = genModel.getForeignModel();
+ for (URI uri : getModelLocationURIs())
+ {
+ foreignModel.add(makeRelative(uri, genModelURI).toString());
+ }
+
+ if (getMappingRoot() != null)
+ {
+ IPath mappingPath = genModelFileFullPath.removeFileExtension().addFileExtension("xsd2ecore");
+ URI mappingModelURI = createFileURI(mappingPath.toString());
+ Resource mappingModelResource = getGenModelResourceSet().createResource(mappingModelURI);
+ mappingModelResource.getContents().add(getMappingRoot());
+ }
+ }
+
+ @Override
+ public void prepareGenModelAndEPackages(Monitor monitor)
+ {
+ super.prepareGenModelAndEPackages(monitor);
+
+ GenModel genModel = getGenModel();
+
+ GenAnnotation annotation = genModel.getGenAnnotation(getConverterGenAnnotationSource());
+ if (!sortAttributes())
+ {
+ if (annotation == null)
+ {
+ annotation = genModel.createGenAnnotation();
+ annotation.setSource(getConverterGenAnnotationSource());
+ }
+ annotation.getDetails().put(SORT_ATTRIBUTES_KEY, "false");
+ genModel.getGenAnnotations().add(annotation);
+ }
+ else if (annotation != null)
+ {
+ annotation.getDetails().removeKey(SORT_ATTRIBUTES_KEY);
+ }
+
+ if (getMappingRoot() != null)
+ {
+ if (annotation == null)
+ {
+ annotation = genModel.createGenAnnotation();
+ annotation.setSource(getConverterGenAnnotationSource());
+ genModel.getGenAnnotations().add(annotation);
+ }
+ annotation.getDetails().put(CREATE_MAP_KEY, "true");
+ }
+ else if (annotation != null)
+ {
+ annotation.getDetails().removeKey(CREATE_MAP_KEY);
+ }
+
+ if (annotation != null && annotation.getDetails().isEmpty())
+ {
+ genModel.getGenAnnotations().remove(annotation);
+ }
+ }
+
+ @Override
+ protected List<Resource> computeResourcesToBeSaved()
+ {
+ List<Resource> resources = super.computeResourcesToBeSaved();
+ if (getMappingRoot() != null)
+ {
+ resources.add(getMappingRoot().eResource());
+ }
+ return resources;
+ }
+
+ @Override
+ protected void handleOriginalGenModel() throws DiagnosticException
+ {
+ GenModel originalGenModel = getOriginalGenModel();
+ URI genModelURI = originalGenModel.eResource().getURI();
+ StringBuffer text = new StringBuffer();
+ for (String value : originalGenModel.getForeignModel())
+ {
+ if (value.endsWith(".xsd") || value.endsWith(".wsdl"))
+ {
+ text.append(makeAbsolute(URI.createURI(value), genModelURI).toString());
+ text.append(" ");
+ }
+ }
+ GenAnnotation annotation = originalGenModel.getGenAnnotation(getConverterGenAnnotationSource());
+ if (annotation != null)
+ {
+ setSortAttributes(!"false".equals(annotation.getDetails().get(SORT_ATTRIBUTES_KEY)));
+ setCreateEcoreMap("true".equals(annotation.getDetails().get(CREATE_MAP_KEY)));
+ }
+ setModelLocation(text.toString().trim());
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporterApplication.java b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporterApplication.java
new file mode 100644
index 0000000..754e0cc
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporterApplication.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2005-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.codegen.util.CodeGenUtil;
+import org.eclipse.emf.common.util.Monitor;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.importer.ModelImporter;
+import org.eclipse.emf.importer.ModelImporterApplication;
+
+
+public class XSDImporterApplication extends ModelImporterApplication
+{
+ protected Map<String, String> nsURIToPackageName;
+ protected Set<String> packages;
+
+ @Override
+ protected ModelImporter createModelImporter()
+ {
+ return new XSDImporter();
+ }
+
+ @Override
+ protected StringBuffer getUsage()
+ {
+ StringBuffer result = new StringBuffer();
+ appendLine(result, "Usage: { <model.xsd> | <model.wsdl> }+ [ <model.genmodel> [ -reload ] ] <OPTION>");
+ appendLine(result, "<OPTION> ::= [ <PROJECT-OPTION> ] [ <PACKAGE-MAP> ] [ <PACKAGES> ]");
+ appendLine(result, " { <REF-GEN-MODEL> }*");
+ appendLine(result, " [ <TEMPLATE-PATH> ] [ <MODEL-PLUGIN-ID> ] [ <COPYRIGHT> ]");
+ appendLine(result, " [ <SDO> ] [ <QUIET> ]");
+ appendLine(result, "<PROJECT-OPTION> ::= <MODEL-PROJECT> [ <EDIT-PROJECT> ] [ <EDITOR-PROJECT> ]");
+ appendLine(result, " [ <TESTS-PROJECT> ]");
+ appendLine(result, "<MODEL-PROJECT> ::= -modelProject <model-directory> <fragment-path>");
+ appendLine(result, "<EDIT-PROJECT> ::= -editProject <edit-directory> <fragment-path>");
+ appendLine(result, "<EDITOR-PROJECT> ::= -editorProject <editor-directory> <fragment-path>");
+ appendLine(result, "<TESTS-PROJECT> ::= -testsProject <tests-directory> <fragment-path>");
+ appendLine(result, "<PACKAGE-MAP> ::= -packageMap { <nsURI> <qualified-package-name> }+");
+ appendLine(result, "<PACKAGES> ::= -packages { <nsURI> }+");
+ appendLine(result, "<REF-GEN-MODEL> ::= -refGenModel <model.genmodel> { <nsURI> }+");
+ appendLine(result, "<TEMPLATE-PATH> ::= -templatePath <template-directory>");
+ appendLine(result, "<MODEL-PLUGIN-ID> ::= -modelPluginID <plugin-ID>");
+ appendLine(result, "<COPYRIGHT> ::= -copyright <copyright-string>");
+ appendLine(result, "<JDK-LEVEL> ::= -jdkLevel <jdk level: 1.4 5.0 6.0>");
+ appendLine(result, "<IMPORT-ORGANIZING> ::= -sdo");
+ appendLine(result, "<VALIDATE-MODEL> ::= -validateModel <true|false>");
+ appendLine(result, "<SDO> ::= -sdo");
+ appendLine(result, "<QUIET> ::= -quiet");
+ appendLine(result, "");
+ appendLine(result, "Specifying no -packages is the same as specifying them all");
+ appendLine(result, "Use ##local to represent the null nsURI");
+ appendLine(result, "");
+ appendLine(result, "For example:");
+ appendLine(result, "");
+ appendLine(result, " xsd2genmodel");
+ appendLine(result, " example.xsd");
+ appendLine(result, " result/model/Example.genmodel");
+ appendLine(result, " -modelProject result src");
+ appendLine(result, " -editProject result.edit src");
+ appendLine(result, " -editorProject result.editor src");
+ appendLine(result, " -packages http://www.example.com/Example1");
+ return result;
+ }
+
+ @Override
+ protected int processArgument(String[] arguments, int index)
+ {
+ if (arguments[index].equalsIgnoreCase("-packagemap"))
+ {
+ if (nsURIToPackageName == null)
+ {
+ nsURIToPackageName = new HashMap<String, String>();
+ }
+
+ do
+ {
+ String nsURI = interpretNsURI(arguments[++index]);
+ nsURIToPackageName.put(nsURI, arguments[++index]);
+ }
+ while (index + 1 < arguments.length && !arguments[index + 1].startsWith("-"));
+ }
+ else if (arguments[index].equalsIgnoreCase("-packages"))
+ {
+ if (packages == null)
+ {
+ packages = new HashSet<String>();
+ }
+
+ do
+ {
+ packages.add(interpretNsURI(arguments[++index]));
+ }
+ while (index + 1 < arguments.length && !arguments[index + 1].startsWith("-"));
+ }
+ else
+ {
+ return super.processArgument(arguments, index);
+ }
+ return index + 1;
+ }
+
+ protected String interpretNsURI(String nsURI)
+ {
+ return "##local".equals(nsURI) ? null : nsURI;
+ }
+
+ @Override
+ protected void adjustEPackages(Monitor monitor)
+ {
+ try
+ {
+ monitor.beginTask("", 2);
+
+ super.adjustEPackages(CodeGenUtil.createMonitor(monitor, 1));
+
+ for (EPackage ePackage : getModelImporter().getEPackages())
+ {
+ String nsURI = ExtendedMetaData.INSTANCE.getNamespace(ePackage);
+ if (nsURIToPackageName != null)
+ {
+ String packageName = nsURIToPackageName.get(nsURI);
+ if (packageName != null)
+ {
+ ePackage.setName(packageName);
+ }
+ }
+
+ handleQualifiedEPackageName(ePackage);
+ boolean isNotReferencedEPackage = packages == null || packages.isEmpty() || packages.contains(nsURI);
+ handleEPackage(ePackage, isNotReferencedEPackage);
+ }
+
+ getModelImporter().adjustEPackages(CodeGenUtil.createMonitor(monitor, 1));
+ }
+ finally
+ {
+ monitor.done();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporterPlugin.java b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporterPlugin.java
new file mode 100644
index 0000000..198aad0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/XSDImporterPlugin.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.importer.ImporterPlugin;
+
+
+/**
+ * The <b>Plugin</b> for the XSD.CodeGen library.
+ * @since 2.1.0
+ */
+public final class XSDImporterPlugin extends EMFPlugin
+{
+ /**
+ * The singleton instance of the plugin.
+ */
+ public static final XSDImporterPlugin INSTANCE = new XSDImporterPlugin();
+
+ /**
+ * The one instance of this class.
+ */
+ private static Implementation plugin;
+
+ /**
+ * Creates the singleton instance.
+ */
+ private XSDImporterPlugin()
+ {
+ super(new ResourceLocator [] { ImporterPlugin.INSTANCE });
+ }
+
+ /*
+ * Javadoc copied from base class.
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * @return the singleton instance.
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ */
+ public static class Implementation extends EclipsePlugin
+ {
+ /**
+ * Creates an instance.
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDDetailPage.java b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDDetailPage.java
new file mode 100644
index 0000000..e411b6c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDDetailPage.java
@@ -0,0 +1,133 @@
+/**
+ * Copyright (c) 2005-2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer.ui;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+
+import org.eclipse.emf.importer.ModelImporter;
+import org.eclipse.emf.importer.ui.contribution.base.ModelImporterDetailPage;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.xsd.ecore.importer.XSDImporter;
+import org.eclipse.xsd.ecore.importer.XSDImporterPlugin;
+
+
+/**
+ * @since 2.1.0
+ */
+public class XSDDetailPage extends ModelImporterDetailPage
+{
+ protected Button createMapButton;
+
+ /**
+ * @since 2.9
+ */
+ protected Button sortAttributesButton;
+
+ public XSDDetailPage(ModelImporter modelImporter, String pageName)
+ {
+ super(modelImporter, pageName);
+
+ setTitle(XSDImporterPlugin.INSTANCE.getString("_UI_XSDImport_title"));
+ setDescription(XSDImporterPlugin.INSTANCE.getString(showGenModel() ?
+ "_UI_XSDImportNewProject_description": "_UI_XSDImportFile_description" ));
+ }
+
+ @Override
+ public void dispose()
+ {
+ if (createMapButton != null)
+ {
+ createMapButton.removeListener(SWT.Selection, this);
+ createMapButton = null;
+ }
+ if (sortAttributesButton != null)
+ {
+ sortAttributesButton.removeListener(SWT.Selection, this);
+ sortAttributesButton = null;
+ }
+
+ super.dispose();
+ }
+
+ public XSDImporter getXSDImporter()
+ {
+ return (XSDImporter)getModelImporter();
+ }
+
+ @Override
+ protected void addDetailControl(Composite parent)
+ {
+ XSDImporter xsdImporter = getXSDImporter();
+ if (xsdImporter.canCreateEcoreMap())
+ {
+ createMapButton = new Button(parent, SWT.CHECK);
+ if (xsdImporter.createEcoreMap())
+ {
+ createMapButton.setSelection(true);
+ }
+ createMapButton.setText(XSDImporterPlugin.INSTANCE.getString("_UI_Create_XML_Schema_to_Ecore_Map"));
+ {
+ GridData data = new GridData();
+ data.horizontalSpan = 1;
+ createMapButton.setLayoutData(data);
+ }
+ createMapButton.addListener(SWT.Selection, this);
+ }
+
+ sortAttributesButton = new Button(parent, SWT.CHECK);
+ if (xsdImporter.sortAttributes())
+ {
+ sortAttributesButton.setSelection(true);
+ }
+ sortAttributesButton.setText(XSDImporterPlugin.INSTANCE.getString("_UI_Sort_Attributes"));
+ {
+ GridData data = new GridData();
+ data.horizontalSpan = 1;
+ sortAttributesButton.setLayoutData(data);
+ }
+ sortAttributesButton.addListener(SWT.Selection, this);
+ }
+
+ @Override
+ protected void doHandleEvent(Event event)
+ {
+ if (event.type == SWT.Selection && (event.widget == createMapButton || event.widget == sortAttributesButton))
+ {
+ if (event.widget == createMapButton)
+ {
+ boolean enabled = createMapButton.getSelection();
+ if (enabled)
+ {
+ MessageDialog.openWarning(getContainer().getShell(), XSDImporterPlugin.INSTANCE.getString("_UI_Create_XML_Schema_to_Ecore_Map").replace("&", ""), XSDImporterPlugin.INSTANCE.getString("_UI_Create_XML_Schema_to_Ecore_Map_message"));
+ }
+ getXSDImporter().setCreateEcoreMap(createMapButton.getSelection());
+ }
+ else
+ {
+ getXSDImporter().setSortAttributes(sortAttributesButton.getSelection());
+ }
+ if (uriText.getText().trim().length() > 0)
+ {
+ refreshModel();
+ getContainer().updateButtons();
+ }
+ }
+ else
+ {
+ super.doHandleEvent(event);
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDImporterWizard.java b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDImporterWizard.java
new file mode 100644
index 0000000..2c8972e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDImporterWizard.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2005-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer.ui;
+
+import org.eclipse.emf.converter.ModelConverter;
+import org.eclipse.emf.importer.ui.contribution.base.ModelImporterWizard;
+
+import org.eclipse.xsd.ecore.importer.XSDImporter;
+
+
+/**
+ * @since 2.1.0
+ */
+public class XSDImporterWizard extends ModelImporterWizard
+{
+ @Override
+ protected ModelConverter createModelConverter()
+ {
+ return new XSDImporter();
+ }
+
+ @Override
+ public void addPages()
+ {
+ XSDDetailPage detailPage = new XSDDetailPage(getModelImporter(), "XSDModel");
+ addPage(detailPage);
+
+ XSDPackagePage packagePage = new XSDPackagePage(getModelImporter(), "XSDPackages");
+ packagePage.setShowReferencedGenModels(true);
+ addPage(packagePage);
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDPackagePage.java b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDPackagePage.java
new file mode 100644
index 0000000..96e62ae
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/src/org/eclipse/xsd/ecore/importer/ui/XSDPackagePage.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer.ui;
+
+import org.eclipse.emf.importer.ModelImporter;
+import org.eclipse.emf.importer.ui.contribution.base.ModelImporterPackagePage;
+
+/**
+ * @since 2.3.0
+ */
+public class XSDPackagePage extends ModelImporterPackagePage
+{
+ /**
+ * @param modelImporter
+ * @param pageName
+ */
+ public XSDPackagePage(ModelImporter modelImporter, String pageName)
+ {
+ super(modelImporter, pageName);
+ }
+
+ @Override
+ protected boolean supportsNestedPackages()
+ {
+ return true;
+ }
+}
diff --git a/plugins/org.eclipse.xsd.ecore.importer/tasks/org/eclipse/xsd/ecore/importer/taskdefs/XSDGeneratorTask.java b/plugins/org.eclipse.xsd.ecore.importer/tasks/org/eclipse/xsd/ecore/importer/taskdefs/XSDGeneratorTask.java
new file mode 100644
index 0000000..e90c005
--- /dev/null
+++ b/plugins/org.eclipse.xsd.ecore.importer/tasks/org/eclipse/xsd/ecore/importer/taskdefs/XSDGeneratorTask.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2004-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore.importer.taskdefs;
+
+import org.eclipse.emf.ant.taskdefs.codegen.ecore.GeneratorTask;
+
+import org.eclipse.xsd.ecore.importer.XSDImporterApplication;
+
+
+/**
+ * <p>
+ * Generates source code from models specified in <b>XML Schema</b> files. Exposes some
+ * functionalities available on the {@link XSDImporterApplication}
+ * class - check its <tt>printUsage()</tt> method for detailed information on the arguments
+ * you can use with this task.
+ * </p>
+ * <p>
+ * This task is supposed to be executed by a Eclipse driver with the
+ * <b>org.eclipse.emf.ant</b> plugin. It is neither necessary to use Ant's task
+ * <tt>TaskDef</tt> to declare this task in a script nor to change the Ant's runtime
+ * classpath.
+ * </p>
+ * <p>
+ * The following command line will start a headless Eclipse instance and run the specified
+ * Ant script.
+ * </p>
+ * <p>
+ * <i>eclipseDir</i>/eclipse
+ * -noSplash
+ * -data <i>worspaceDir</i>
+ * -application org.eclipse.ant.core.antRunner
+ * -buildfile <i>antScript</i>
+ * </p>
+ * <p>In Windows you should execute <i>eclipsec</i> instead of <i>eclipse</i> in order to have
+ * access to the Ant build script console output.</p>
+ * <p>You can also use the Eclipse UI to execute an Ant script containing this task by right-clicking the script and selecting
+ * <i>Run As > Ant Build... > JRE > "Run in the same JRE as the workspace"</i>.</p>
+ *
+ * <p>
+ * Usage example:
+ * </p>
+ * <pre>
+ * <emf.XSD2Java model="c:/lib/model/lib.xsd"
+ * genModel="c:/lib/emf/lib.genmodel"
+ * modelProject="c:/lib"
+ * modelProjectFragmentPath="src"
+ * modelPluginID="emf.lib.example">
+ * <arg line="-packages http://www.example.eclipse.org/Library"/>
+ * </emf.XSD2Java>
+ * </pre>
+ * <pre>
+ * <emf.XSD2Java genModel="c:/lib/emf/lib.genmodel"
+ * modelProject="c:/lib"
+ * modelProjectFragmentPath="src">
+ * <arg line="-packages http://www.example.eclipse.org/Library"/>
+ * <model uri="http://www.example.eclipse.org/library.xsd"/>
+ * <model file="c:/common.xsd"/>
+ * </emf.XSD2Java>
+ * </pre>
+ *
+ * @since 2.1.0
+ */
+public class XSDGeneratorTask extends GeneratorTask
+{
+ @Override
+ protected void createGenModel(String[] arguments) throws Exception
+ {
+ new XSDImporterApplication().run(getProgressMonitor(), arguments);
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.edit/.classpath b/plugins/org.eclipse.xsd.edit/.classpath
new file mode 100644
index 0000000..196d49a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.xsd.edit/.gitignore b/plugins/org.eclipse.xsd.edit/.gitignore
new file mode 100644
index 0000000..3f8f9e7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/.gitignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+*.jar
diff --git a/plugins/org.eclipse.xsd.edit/.project b/plugins/org.eclipse.xsd.edit/.project
new file mode 100644
index 0000000..04bf3ea
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/.project
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.edit</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.xsd.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..952be83
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c6d1205
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.edit; singleton:=true
+Bundle-Version: 2.12.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.xsd.provider.XSDEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.xsd.provider
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
+ org.eclipse.emf.edit;bundle-version="[2.18.0,3.0.0)";visibility:=reexport,
+ org.eclipse.xsd;bundle-version="[2.19.0,3.0.0)";visibility:=reexport
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.xsd.edit
diff --git a/plugins/org.eclipse.xsd.edit/about.html b/plugins/org.eclipse.xsd.edit/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.edit/about.ini b/plugins/org.eclipse.xsd.edit/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.xsd.edit/about.mappings b/plugins/org.eclipse.xsd.edit/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.xsd.edit/about.properties b/plugins/org.eclipse.xsd.edit/about.properties
new file mode 100644
index 0000000..ca9fd14
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Edit
+
+featureText=XSD Edit\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/plugins/org.eclipse.xsd.edit/build.properties b/plugins/org.eclipse.xsd.edit/build.properties
new file mode 100644
index 0000000..95d5780
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/build.properties
@@ -0,0 +1,14 @@
+bin.includes = plugin.xml,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ modeling32.png,\
+ .,\
+ plugin.properties,\
+ icons/,\
+ about.html,\
+ META-INF/
+src.includes = about.html
+source.. = src/
+output.. = bin/
+exclude.. = **/doc-files/**
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAnnotation.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAnnotation.gif
new file mode 100644
index 0000000..d2108c0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAnnotation.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeDeclaration.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeDeclaration.gif
new file mode 100644
index 0000000..e65b1ed
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeDeclaration.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupDefinition.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupDefinition.gif
new file mode 100644
index 0000000..dbbe4b7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupDefinition.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupUnresolved.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupUnresolved.gif
new file mode 100644
index 0000000..098266a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupUnresolved.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupUse.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupUse.gif
new file mode 100644
index 0000000..5ab7209
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeGroupUse.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeUnresolved.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeUnresolved.gif
new file mode 100644
index 0000000..435db57
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeUnresolved.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeUse.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeUse.gif
new file mode 100644
index 0000000..f6a0506
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDAttributeUse.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDComplexTypeDefinition.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDComplexTypeDefinition.gif
new file mode 100644
index 0000000..358cbcb
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDComplexTypeDefinition.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDComplexTypeDefinitionUnresolved.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDComplexTypeDefinitionUnresolved.gif
new file mode 100644
index 0000000..e0d9fab
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDComplexTypeDefinitionUnresolved.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementDeclaration.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementDeclaration.gif
new file mode 100644
index 0000000..dd45f08
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementDeclaration.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementUnresolved.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementUnresolved.gif
new file mode 100644
index 0000000..70337af
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementUnresolved.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementUse.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementUse.gif
new file mode 100644
index 0000000..13b836d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDElementUse.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDEnumerationFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDEnumerationFacet.gif
new file mode 100644
index 0000000..11d7958
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDEnumerationFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDFractionDigitsFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDFractionDigitsFacet.gif
new file mode 100644
index 0000000..5e1dc80
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDFractionDigitsFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionKey.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionKey.gif
new file mode 100644
index 0000000..04032a9
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionKey.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionKeyReference.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionKeyReference.gif
new file mode 100644
index 0000000..a4c26e5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionKeyReference.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionUnique.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionUnique.gif
new file mode 100644
index 0000000..5a8a650
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDIdentityConstraintDefinitionUnique.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDImport.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDImport.gif
new file mode 100644
index 0000000..9e44ce5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDImport.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDInclude.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDInclude.gif
new file mode 100644
index 0000000..b26c527
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDInclude.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDLengthFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDLengthFacet.gif
new file mode 100644
index 0000000..45e075a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDLengthFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxExclusiveFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxExclusiveFacet.gif
new file mode 100644
index 0000000..ad69ced
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxExclusiveFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxInclusiveFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxInclusiveFacet.gif
new file mode 100644
index 0000000..2cc0086
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxInclusiveFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxLengthFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxLengthFacet.gif
new file mode 100644
index 0000000..193bba3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMaxLengthFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinExclusiveFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinExclusiveFacet.gif
new file mode 100644
index 0000000..dae30d5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinExclusiveFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinInclusiveFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinInclusiveFacet.gif
new file mode 100644
index 0000000..9827d05
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinInclusiveFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinLengthFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinLengthFacet.gif
new file mode 100644
index 0000000..aa3d1b5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDMinLengthFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupAll.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupAll.gif
new file mode 100644
index 0000000..3d0430f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupAll.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupChoice.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupChoice.gif
new file mode 100644
index 0000000..d13ba2e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupChoice.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupDefinition.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupDefinition.gif
new file mode 100644
index 0000000..7d1f4c2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupDefinition.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupSequence.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupSequence.gif
new file mode 100644
index 0000000..5f9658e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupSequence.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupUnresolved.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupUnresolved.gif
new file mode 100644
index 0000000..d2e6f32
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupUnresolved.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupUse.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupUse.gif
new file mode 100644
index 0000000..ce6adbb
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDModelGroupUse.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDNotationDeclaration.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDNotationDeclaration.gif
new file mode 100644
index 0000000..0d4e62f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDNotationDeclaration.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceN.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceN.gif
new file mode 100644
index 0000000..c8c757d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceN.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceNToM.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceNToM.gif
new file mode 100644
index 0000000..47cafac
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceNToM.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceNToUnbounded.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceNToUnbounded.gif
new file mode 100644
index 0000000..85afa8b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceNToUnbounded.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOne.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOne.gif
new file mode 100644
index 0000000..5b07371
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOne.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOneToN.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOneToN.gif
new file mode 100644
index 0000000..4f227aa
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOneToN.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOneToUnbounded.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOneToUnbounded.gif
new file mode 100644
index 0000000..88c05d4
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceOneToUnbounded.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZero.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZero.gif
new file mode 100644
index 0000000..fe041b2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZero.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToN.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToN.gif
new file mode 100644
index 0000000..93fb576
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToN.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToOne.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToOne.gif
new file mode 100644
index 0000000..402bb0f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToOne.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToUnbounded.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToUnbounded.gif
new file mode 100644
index 0000000..623dec0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDOccurrenceZeroToUnbounded.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDParticle.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDParticle.gif
new file mode 100644
index 0000000..50a4136
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDParticle.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDPatternFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDPatternFacet.gif
new file mode 100644
index 0000000..a113cf4
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDPatternFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDRedefine.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDRedefine.gif
new file mode 100644
index 0000000..1747782
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDRedefine.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSchema.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSchema.gif
new file mode 100644
index 0000000..3900f1b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSchema.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinition.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinition.gif
new file mode 100644
index 0000000..75f33c2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinition.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionAtomic.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionAtomic.gif
new file mode 100644
index 0000000..2e0e635
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionAtomic.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionList.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionList.gif
new file mode 100644
index 0000000..6a9441f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionList.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionUnion.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionUnion.gif
new file mode 100644
index 0000000..2dadf5f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionUnion.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionUnresolved.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionUnresolved.gif
new file mode 100644
index 0000000..380a39e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDSimpleTypeDefinitionUnresolved.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDTotalDigitsFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDTotalDigitsFacet.gif
new file mode 100644
index 0000000..899b03d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDTotalDigitsFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDTypeDefinition.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDTypeDefinition.gif
new file mode 100644
index 0000000..ba3a865
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDTypeDefinition.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWhiteSpaceFacet.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWhiteSpaceFacet.gif
new file mode 100644
index 0000000..c79bf78
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWhiteSpaceFacet.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWildcardAttribute.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWildcardAttribute.gif
new file mode 100644
index 0000000..8f36851
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWildcardAttribute.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWildcardElement.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWildcardElement.gif
new file mode 100644
index 0000000..cefbf40
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDWildcardElement.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDXPathDefinitionField.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDXPathDefinitionField.gif
new file mode 100644
index 0000000..ee9c49a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDXPathDefinitionField.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDXPathDefinitionSelector.gif b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDXPathDefinitionSelector.gif
new file mode 100644
index 0000000..7c7d39e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/icons/full/obj16/XSDXPathDefinitionSelector.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/modeling32.png b/plugins/org.eclipse.xsd.edit/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.xsd.edit/plugin.properties b/plugins/org.eclipse.xsd.edit/plugin.properties
new file mode 100644
index 0000000..c724d59
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/plugin.properties
@@ -0,0 +1,288 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Edit
+providerName = Eclipse Modeling Project
+
+_UI_CreateChild_description = Create a new {0} under the selected {1}
+_UI_CreateChild_tooltip = Create New {0} Under Selected {1}
+
+_UI_CreateSibling_description = Create a new {0} as a sibling of the selected {1}
+_UI_CreateSibling_tooltip = Create New {0} as Sibling of Selected {1}
+
+_UI_XSDAnnotation_type = Annotation
+_UI_XSDAttributeDeclaration_type = Attribute Declaration
+_UI_XSDAttributeGroupDefinition_type = Attribute Group Definition
+_UI_XSDAttributeUse_type = Attribute Use
+_UI_XSDBoundedFacet_type = Bounded Facet
+_UI_XSDCardinalityFacet_type = Cardinality Facet
+_UI_XSDComplexTypeDefinition_type = Complex Type Definition
+_UI_XSDDiagnostic_type = Diagnostic
+_UI_XSDElementDeclaration_type = Element Declaration
+_UI_XSDEnumerationFacet_type = Enumeration Facet
+_UI_XSDFractionDigitsFacet_type = Fraction Digits Facet
+_UI_XSDIdentityConstraintDefinition_type = Identity Constraint Definition
+_UI_XSDImport_type = Import
+_UI_XSDInclude_type = Include
+_UI_XSDLengthFacet_type = Length Facet
+_UI_XSDMaxExclusiveFacet_type = Max Exclusive Facet
+_UI_XSDMaxInclusiveFacet_type = Max Inclusive Facet
+_UI_XSDMaxLengthFacet_type = Max Length Facet
+_UI_XSDMinExclusiveFacet_type = Min Exclusive Facet
+_UI_XSDMinInclusiveFacet_type = Min Inclusive Facet
+_UI_XSDMinLengthFacet_type = Min Length Facet
+_UI_XSDModelGroupDefinition_type = Model Group Definition
+_UI_XSDModelGroup_type = Model Group
+_UI_XSDNotationDeclaration_type = Notation Declaration
+_UI_XSDNumericFacet_type = Numeric Facet
+_UI_XSDOrderedFacet_type = Ordered Facet
+_UI_XSDParticle_type = Particle
+_UI_XSDPatternFacet_type = Pattern Facet
+_UI_XSDRedefine_type = Redefine
+_UI_XSDSchema_type = Schema
+_UI_XSDSimpleTypeDefinition_type = Simple Type Definition
+_UI_XSDTotalDigitsFacet_type = Total Digits Facet
+_UI_XSDWhiteSpaceFacet_type = White Space Facet
+_UI_XSDWildcard_type = Wildcard
+_UI_XSDXPathDefinition_type = XPath Definition
+
+_UI_Unknown_type = Object
+
+_UI_XSDElementDeclaration_type_reference = Element Reference
+_UI_XSDAttributeDeclaration_type_reference = Attribute Reference
+_UI_XSDModelGroupDefinition_type_reference = Model Group Reference
+_UI_XSDAttributeGroupDefinition_type_reference = Attribute Group Reference
+
+_UI_XSDModelGroup_type_all = All Model Group
+_UI_XSDModelGroup_type_choice = Choice Model Group
+_UI_XSDModelGroup_type_sequence = Sequence Model Group
+
+_UI_XSDSimpleTypeDefinition_type_atomic = Atomic Simple Type Definition
+_UI_XSDSimpleTypeDefinition_type_list = List Simple Type Definition
+_UI_XSDSimpleTypeDefinition_type_union = Union Simple Type Definition
+
+_UI_XSDIdentityConstraintDefinition_type_key = Key Identity Constraint Definition
+_UI_XSDIdentityConstraintDefinition_type_keyref = Keyref Identity Constraint Definition
+_UI_XSDIdentityConstraintDefinition_type_unique = Unique Identity Constraint Definition
+
+_UI_XSDXPathDefinition_type_selector = Selector XPath Definition
+_UI_XSDXPathDefinition_type_field = Field XPath Definition
+
+_UI_XSDWildcard_type_attribute = Attribute Wildcard
+_UI_XSDWildcard_type_element = Element Wildcard
+
+_UI_XSDAnnotation_type_annotation = Type Annotation
+_UI_XSDAnnotation_type_contentAnnotation = Content Annotation
+_UI_XSDAnnotation_type_derivationAnnotation = Derivation Annotation
+
+_UI_XSDElementDeclaration_new_object = myElement
+_UI_XSDAttributeDeclaration_new_object = myAttribute
+_UI_XSDModelGroupDefinition_new_object = myModelGroup
+_UI_XSDAttributeGroupDefinition_new_object = myAttributeGroup
+_UI_XSDSimpleTypeDefinition_new_object = mySimpleType
+_UI_XSDComplexTypeDefinition_new_object = myComplexType
+_UI_XSDIdentityConstraintDefinition_new_object = myIdentityConstraint
+_UI_XSDNotationDeclaration_new_object = myNotation
+
+
+_UI_AbstractOfElement_description = Whether an instance of the element may appear a document
+_UI_AbstractOfType_description = Whether the type may be used to declare an element
+_UI_Abstract_label = Abstract
+_UI_AnnotationOfElement_description = The annotation of the element
+_UI_AnnotationOfAttributeGroup_description = The annotation of the attribute group definition
+_UI_AnnotationOfAttribute_description = The annotation of the attribute
+_UI_AnnotationOfFacet_description = The annotation of the facet
+_UI_AnnotationOfIdentityConstraint_description = The annotation of the identity constraint
+_UI_AnnotationOfImport_description = The annotation of the import
+_UI_AnnotationOfInclude_description = The annotation of the include
+_UI_AnnotationOfModelGroupDefinition_description = The annotation of the model group definition
+_UI_AnnotationOfModelGroup_description = The annotation of the model group
+_UI_AnnotationOfNotation_description = The annotation of the notation
+_UI_AnnotationOfType_description = The annotation of the type
+_UI_AnnotationOfWildcard_description = The annotation of the wildcard
+_UI_AnnotationURI_description = The annotation URI of the diagnostic
+_UI_AnnotationURI_label = Annotation URI
+_UI_Annotation_label = Annotation
+_UI_AttributeDeclaration_description = The attribute declaration being used
+_UI_AttributeDeclaration_label = Attribute Declaration
+_UI_AttributeFormDefault_description = The default value of attribute form for the schema
+_UI_AttributeFormDefault_label = Attribute Form Default
+_UI_AttributeWildcardOfAttributeGroup_description = The wildcard of the attribute group definition
+_UI_AttributeWildcardOfType_description = The attribute wildcard of the type
+_UI_AttributeWildcard_label = Attribute Wildcard
+_UI_BaseTypeDefinition_description = The base type definition of the type definition
+_UI_BaseTypeDefinition_label = Base Type Definition
+_UI_BlockDefault_description = The default value of block for the schema
+_UI_BlockDefault_label = Block Default
+_UI_BlockOfElement_description = The aspects that are blocked for the element declaration
+_UI_BlockOfType_description = The aspects that are blocked for the type definition
+_UI_Block_label = Block
+_UI_Bounded_description = The bounded fundamental facet of the type
+_UI_Bounded_label = Bounded
+_UI_Cardinality_description = The cardinality fundamental facet of the type
+_UI_Cardinality_label = Cardinality
+_UI_Column_description = The column of the diagnostic
+_UI_Column_label = Column
+_UI_Compositor_description = The style of composition of the model group
+_UI_Compositor_label = Compositor
+_UI_ConstraintOfAttributeUse_description = The style of constraint of the attribute use
+_UI_ConstraintOfAttribute_description = The style of constraint of the attribute
+_UI_ConstraintOfElement_description = The style of constraint of the element
+_UI_ConstraintOfFeature_description = The style of constraint of the feature
+_UI_Constraint_label = Constraint
+_UI_ContentTypeCategory_description = The style of content supported by the type
+_UI_ContentTypeCategory_label = Content Type Category
+_UI_ContentType_description = The content type supported by the type
+_UI_ContentType_label = Content Type
+_UI_DerivationMethod_description = The derivation method used with respect to the type's base type definition
+_UI_DerivationMethod_label = Derivation Method
+_UI_DisallowedSubstitutions_description = The substitutions that are not allowed for the element
+_UI_DisallowedSubstitutions_label = Disallowed Substitutions
+_UI_ElementFormDefault_description = The default value of element form for the schema
+_UI_ElementFormDefault_label = Element Form Default
+_UI_Element_description = The element associated with the component
+_UI_Element_label = Element
+_UI_FinalDefault_description = The default value of final for the schema
+_UI_FinalDefault_label = Final Default
+_UI_FinalOfElement_description = The aspects that are final for the element declaration
+_UI_FinalOfType_description = The aspects that are final for the type
+_UI_Final_description = The aspects that are final for the type definition
+_UI_Final_label = Final
+_UI_Fixed_description = Whether the facet's constraint is fixed
+_UI_Fixed_label = Fixed
+_UI_FormOfAttribute_description = The value of form for the attribute
+_UI_FormOfElement_description = The value of form for the element
+_UI_Form_label = Form
+_UI_IdentityConstraintCategory_description = The style of identity constraint
+_UI_IdentityConstraintCategory_label = Identity Constraint Category
+_UI_ItemTypeDefinition_description = The item type definition of the list type definition
+_UI_ItemTypeDefinition_label = Item Type Definition
+_UI_LexicalFinal_description = The aspects that are final for the type definition
+_UI_LexicalFinal_label = Lexical Final
+_UI_LexicalNamespaceConstraint_description = The lexical namespace constraints specified by the wildcard
+_UI_LexicalNamespaceConstraint_label = Lexical Namespace Constraint
+_UI_LexicalValueOfAttributeUse_description = The constrained value of the attribute use
+_UI_LexicalValueOfAttribute_description = The constrained value of the attribute
+_UI_LexicalValueOfElement_description = The constrained value of the element
+_UI_LexicalValueOfFacet_description = The lexical value of the facet
+_UI_LexicalValueOfFeature_description = The constrained value of the feature
+_UI_LexicalValue_label = Lexical Value
+_UI_Line_description = The line of the diagnostic
+_UI_Line_label = Line
+_UI_LocationURI_description = The location URI of the diagnostic
+_UI_LocationURI_label = Location URI
+_UI_MaxOccurs_description = The maximum number of occurrences of the particle
+_UI_MaxOccurs_label = Max Occurs
+_UI_Message_description = The message of the diagnostic
+_UI_Message_label = Message
+_UI_MinOccurs_description = The minimum number of occurrences of the particle
+_UI_MinOccurs_label = Min Occurs
+_UI_Mixed_description = Whether the content type is mixed
+_UI_Mixed_label = Mixed
+_UI_Name_description = The name of the component
+_UI_Name_label = Name
+_UI_NamespaceConstraintCategory_description = The namespace constraint category specified by the wildcard
+_UI_NamespaceConstraintCategory_label = Namespace Constraint Category
+_UI_NamespaceConstraint_description = The namespace constraints specified by the wildcard
+_UI_NamespaceConstraint_label = Namespace Constraint
+_UI_Namespace_description = The namespace of the import
+_UI_Namespace_label = Namespace
+_UI_Nillable_description = Whether the content of the element can be set to nill
+_UI_Nillable_label = Nillable
+_UI_Node_description = The node of the diagnostic
+_UI_Node_label = Node
+_UI_Numeric_description = The numeric fundamental facet of the type
+_UI_Numeric_label = Numeric
+_UI_Ordered_description = The ordered fundamental facet of the type
+_UI_Ordered_label = Ordered
+_UI_PrimitiveTypeDefinition_description = The primitive type definition of the type definition
+_UI_PrimitiveTypeDefinition_label = Primitive Type Definition
+_UI_ProcessContents_description = The style of content processing specified by the wildcard
+_UI_ProcessContents_label = Process Contents
+_UI_ProhibitedSubstitutions_description = The substitutions prohibited for the type
+_UI_ProhibitedSubstitutions_label = Prohibited Substitutions
+_UI_PublicIdentifier_description = The public identifier of the notation
+_UI_PublicIdentifier_label = Public Identifier
+_UI_ReferencedKey_description = The key referenced by the identity constraint
+_UI_ReferencedKey_label = Referenced Key
+_UI_Required_description = Whether the attribute use is required
+_UI_Required_label = Required
+_UI_ResolveAttributeDeclaration_description = The attribute declaration to which the attribute resolves
+_UI_ResolveAttributeDeclaration_label = Resolved Attribute Declaration
+_UI_ResolveElementDeclaration_label = Resolved Element Declaration
+_UI_ResolveElementDeclaration_description = The element declaration to which the element resolves
+_UI_ResolvedAttributeGroupDefinition_description = The attribute group definition to which the attribute group definition resolves
+_UI_ResolvedAttributeGroupDefinition_label = Resolved Attribute Group Definition
+_UI_ResolvedModelGroupDefinition_description = The model group definition to which the model group definition resolves
+_UI_ResolvedModelGroupDefinition_label = Resolved Model Group Definition
+_UI_SchemaLocationOfDirective_description = The location of the target schema
+_UI_SchemaLocationOfSchema_description = The location of the schema
+_UI_SchemaLocation_label = Schema Location
+_UI_ScopeOfAttribute_description = The scope containing the attribute
+_UI_ScopeOfElement_description = The scope containing the element
+_UI_ScopeOfFeature_description = The scope containing the feature
+_UI_Scope_label = Scope
+_UI_Selector_description = The XPath selector of the identity constraint
+_UI_Selector_label = Selector
+_UI_Severity_description = The severity of the diagnostic
+_UI_Severity_label = Severity
+_UI_SimpleTypeDefinition_description = The simple type definition containing the facet
+_UI_SimpleTypeDefinition_label = Simple Type Definition
+_UI_SubstitutionGroupAffiliation_label = Substitution Group Affiliation
+_UI_SubstitutionGroupAffiliation_description = The substitution group with which the element is affiliated
+_UI_SubstitutionGroupExclusions_description = The element substitutions that are excluded for the element
+_UI_SubstitutionGroupExclusions_label = Substitution Group Exclusions
+_UI_SystemIdentifier_description = The system identifier of the notation
+_UI_SystemIdentifier_label = System Identifier
+_UI_TargetNamespaceOfSchema_description = The target namespace of the schema
+_UI_TargetNamespace_description = The target namespace of the component
+_UI_TargetNamespace_label = Target Namespace
+_UI_TypeDefinition_description = The resolved type definition of the attribute
+_UI_TypeDefinitionOfElement_description = The resolved type definition of the element
+_UI_TypeDefinition_label = Type Definition
+_UI_URI_Reference_description = The URI reference associated with the component
+_UI_URI_Reference_label = URI Reference
+_UI_Use_description = The category of attribute use
+_UI_Use_label = Use
+_UI_ValueBoundedFacet_description = Whether the type's value space is bounded
+_UI_ValueCardinalityFacet_description = The cardinality of the type's value space
+_UI_ValueEnumerationFacet_description = The enumerator value of the facet
+_UI_ValueFractionDigitsFacet_description = The number of fraction digits for the facet
+_UI_ValueLengthFacet_description = The constrained length of the facet
+_UI_ValueMaxExclusiveFacet_description = The constrained exclusive maximum of the facet
+_UI_ValueMaxInclusiveFacet_description = The constrained inclusive maximum of the facet
+_UI_ValueMaxLengthFacet_description = The constrained maximum length of the facet
+_UI_ValueMinExclusiveFacet_description = The constrained exclusive minimum of the facet
+_UI_ValueMinInclusiveFacet_description = The constrained inclusive minimum of the facet
+_UI_ValueMinLengthFacet_description = The constrained minimum length of the facet
+_UI_ValueNumericFacet_description = Whether the type of the facet is numeric
+_UI_ValueOrderedFacet_description = The style of order supported by the type of the facet
+_UI_ValuePatternFacet_description = The pattern of the facet
+_UI_ValueTotalDigitsFacet_description = The total number of digits specified by the facet
+_UI_ValueWhiteSpaceFacet_description = The style of whitespace processing specified for the facet
+_UI_Value_label = Value
+_UI_VarietyOfXPath_description = The role of the XPath of the XPath definition
+_UI_Variety_description = The style of simple type definition
+_UI_Variety_label = Variety
+_UI_Absent_label = 'absent'
+_UI_DefaultValue_label = ({0})
+_UI_DotDotDot_label = ...
+
+_UI_Annotations_label = Annotations
+_UI_AttributeGroups_label = Attribute Groups
+_UI_Attributes_label = Attributes
+_UI_Elements_label = Elements
+_UI_IdentityConstraints_label = Identity Constraints
+_UI_ModelGroups_label = Model Groups
+_UI_Notations_label = Notations
+_UI_Types_label = Types
diff --git a/plugins/org.eclipse.xsd.edit/plugin.xml b/plugins/org.eclipse.xsd.edit/plugin.xml
new file mode 100644
index 0000000..d047cd0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <factory
+ uri="http://www.eclipse.org/xsd/2002/XSD"
+ class="org.eclipse.xsd.provider.XSDItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.xsd.edit/pom.xml b/plugins/org.eclipse.xsd.edit/pom.xml
new file mode 100644
index 0000000..fbe9ad0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.edit</artifactId>
+ <version>2.12.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAnnotationItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAnnotationItemProvider.java
new file mode 100644
index 0000000..0b1f3e0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAnnotationItemProvider.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDAnnotation} object.
+ */
+public class XSDAnnotationItemProvider
+ extends XSDComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDAnnotationItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDAnnotation.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDAnnotation");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDAnnotation xsdAnnotation = ((XSDAnnotation)object);
+ String result = "";
+ List<Element> userInformation = xsdAnnotation.getUserInformation();
+ if (!userInformation.isEmpty())
+ {
+ Element element = userInformation.get(0);
+ if (element.hasAttribute(XSDConstants.SOURCE_ATTRIBUTE))
+ {
+ result = element.getAttribute(XSDConstants.SOURCE_ATTRIBUTE);
+ }
+ else
+ {
+ org.w3c.dom.Node text = element.getFirstChild();
+ while (text instanceof Element)
+ {
+ text = ((Element)text).getFirstChild();
+ }
+ if (text != null && text.getNodeValue() != null)
+ {
+ result = text.getNodeValue();
+ result = result.trim();
+ if (result.length() > 50)
+ {
+ result = result.substring(0, 50) + XSDEditPlugin.INSTANCE.getString("_UI_DotDotDot_label");
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeDeclarationItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeDeclarationItemProvider.java
new file mode 100644
index 0000000..24ebf66
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeDeclarationItemProvider.java
@@ -0,0 +1,420 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDAttributeDeclaration} object.
+ */
+public class XSDAttributeDeclarationItemProvider
+ extends XSDFeatureItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDAttributeDeclarationItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ createTypeDefinitionPropertyDescriptor(object);
+ createAnnotationPropertyDescriptor(object);
+ createResolvedAttributeDeclarationPropertyDescriptor(object);
+ createAttributeFormDefaultPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ protected static class DelegatingItemPropertyDescriptor extends ItemPropertyDescriptor
+ {
+ public DelegatingItemPropertyDescriptor
+ (AdapterFactory adapterFactory,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ Object staticImage)
+ {
+ super(adapterFactory, displayName, description, feature, isSettable, staticImage);
+ }
+
+ @Override
+ public Object getPropertyValue(Object object)
+ {
+ return super.getPropertyValue(((XSDAttributeDeclaration)object).getResolvedAttributeDeclaration());
+ }
+
+ @Override
+ public void setPropertyValue(Object object, Object value)
+ {
+ super.setPropertyValue(((XSDAttributeDeclaration)object).getResolvedAttributeDeclaration(), value);
+ }
+ }
+
+ @Override
+ protected void createNamePropertyDescriptor(Object object)
+ {
+
+ // This is for the name feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Name_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Name_description"),
+ xsdPackage.getXSDNamedComponent_Name(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)o;
+ if (xsdAttributeDeclaration.isAttributeDeclarationReference())
+ {
+ XSDAttributeDeclaration newResolvedAttributeDeclaration =
+ xsdAttributeDeclaration.resolveAttributeDeclaration(xsdAttributeDeclaration.getTargetNamespace(), (String)value);
+ EditingDomain editingDomain = getEditingDomain(xsdAttributeDeclaration);
+ if (editingDomain == null)
+ {
+ xsdAttributeDeclaration.setResolvedAttributeDeclaration(newResolvedAttributeDeclaration);
+ }
+ else
+ {
+ editingDomain.getCommandStack().execute
+ (SetCommand.create
+ (editingDomain,
+ xsdAttributeDeclaration,
+ xsdPackage.getXSDAttributeDeclaration_ResolvedAttributeDeclaration(),
+ newResolvedAttributeDeclaration));
+ }
+ }
+ else
+ {
+ super.setPropertyValue(o, value);
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void createTargetNamespacePropertyDescriptor(Object object)
+ {
+
+ // This is for the targetNamespace feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_description"),
+ xsdPackage.getXSDNamedComponent_TargetNamespace(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)o;
+ if (xsdAttributeDeclaration.isAttributeDeclarationReference())
+ {
+ String namespace = (String)value;
+ if (namespace.length() == 0)
+ {
+ namespace = null;
+ }
+ XSDAttributeDeclaration newResolvedAttributeDeclaration =
+ xsdAttributeDeclaration.resolveAttributeDeclaration(namespace, xsdAttributeDeclaration.getName());
+ EditingDomain editingDomain = getEditingDomain(xsdAttributeDeclaration);
+ if (editingDomain == null)
+ {
+ xsdAttributeDeclaration.setResolvedAttributeDeclaration(newResolvedAttributeDeclaration);
+ }
+ else
+ {
+ editingDomain.getCommandStack().execute
+ (SetCommand.create
+ (editingDomain,
+ xsdAttributeDeclaration,
+ xsdPackage.getXSDAttributeDeclaration_ResolvedAttributeDeclaration(),
+ newResolvedAttributeDeclaration));
+ }
+ }
+ else
+ {
+ super.setPropertyValue(o, value);
+ }
+ }
+ });
+ }
+
+ protected void createAttributeFormDefaultPropertyDescriptor(Object object)
+ {
+ // This is for the elementFormDefault feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Form_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_FormOfAttribute_description"),
+ xsdPackage.getXSDFeature_Form(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_DefaultValue_label", new Object [] { ((XSDAttributeDeclaration)o).getSchema().getAttributeFormDefault().getName() });
+ }
+ });
+ }
+
+ @Override
+ protected void createLexicalValuePropertyDescriptor(Object object)
+ {
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValue_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValueOfAttribute_description"),
+ xsdPackage.getXSDFeature_LexicalValue(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ @Override
+ protected void createConstraintPropertyDescriptor(Object object)
+ {
+ // This is for the constraint feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Constraint_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ConstraintOfAttribute_description"),
+ xsdPackage.getXSDFeature_Constraint(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ @Override
+ protected void createScopePropertyDescriptor(Object object)
+ {
+ // This is for the scope feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Scope_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ScopeOfAttribute_description"),
+ xsdPackage.getXSDFeature_Scope(),
+ false,
+ null));
+ }
+
+ protected void createTypeDefinitionPropertyDescriptor(Object object)
+ {
+ // This is for the typeDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_TypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_TypeDefinition_description"),
+ xsdPackage.getXSDAttributeDeclaration_TypeDefinition(),
+ false,
+ null));
+ }
+
+ protected void createAnnotationPropertyDescriptor(Object object)
+ {
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfAttribute_description"),
+ xsdPackage.getXSDAttributeDeclaration_Annotation(),
+ false));
+ }
+
+ protected void createResolvedAttributeDeclarationPropertyDescriptor(Object object)
+ {
+ // This is for the resolvedAttributeDeclaration feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolveAttributeDeclaration_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolveAttributeDeclaration_description"),
+ xsdPackage.getXSDAttributeDeclaration_ResolvedAttributeDeclaration(),
+ false));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDAttributeDeclaration_AnonymousTypeDefinition());
+ childrenFeatures.add(xsdPackage.getXSDAttributeDeclaration_Annotation());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDAttributeDeclaration.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
+ XSDAttributeDeclaration resolvedAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (resolvedAttributeDeclaration.getContainer() == null ?
+ "full/obj16/XSDAttributeUnresolved" :
+ xsdAttributeDeclaration.getResolvedAttributeDeclaration() == xsdAttributeDeclaration ?
+ "full/obj16/XSDAttributeDeclaration" :
+ "full/obj16/XSDAttributeUse");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
+ XSDAttributeDeclaration resolvedAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
+ String name =
+ xsdAttributeDeclaration != resolvedAttributeDeclaration ?
+ xsdAttributeDeclaration.getQName() :
+ xsdAttributeDeclaration.getName();
+
+ StringBuffer result = new StringBuffer();
+ if (name == null)
+ {
+ result.append(XSDEditPlugin.INSTANCE.getString("_UI_Absent_label"));
+ }
+ else
+ {
+ result.append(name);
+ }
+
+ if (resolvedAttributeDeclaration.getAnonymousTypeDefinition() == null && resolvedAttributeDeclaration.getTypeDefinition() != null)
+ {
+ result.append(" : ");
+ result.append(resolvedAttributeDeclaration.getTypeDefinition().getQName(xsdAttributeDeclaration));
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)msg.getNotifier();
+ if (msg.getFeature() == xsdPackage.getXSDAttributeDeclaration_TypeDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeDeclaration_AnonymousTypeDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeDeclaration_ResolvedAttributeDeclaration() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeDeclaration_Annotation())
+ {
+ fireNotifyChanged(msg);
+
+ XSDConcreteComponent container = xsdAttributeDeclaration.getContainer();
+ if (container instanceof XSDAttributeUse)
+ {
+ ((ItemProviderAdapter)adapterFactory.adapt(container, IItemLabelProvider.class)).fireNotifyChanged
+ (new ENotificationImpl
+ ((InternalEObject)container,
+ msg.getEventType(),
+ (EStructuralFeature)msg.getFeature(),
+ msg.getOldValue(),
+ msg.getNewValue(),
+ msg.getPosition()));
+ }
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDAttributeDeclaration ad = (XSDAttributeDeclaration) object;
+
+ if (!ad.isAttributeDeclarationReference())
+ {
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDAttributeDeclaration_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ // atomic, list, and union simple type definitions
+ addSimpleTypeDefinitionChildParameters(newChildDescriptors, ad, xsdPackage.getXSDAttributeDeclaration_AnonymousTypeDefinition(), true, true, true);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeGroupContentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeGroupContentItemProvider.java
new file mode 100644
index 0000000..9e0d95b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeGroupContentItemProvider.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDAttributeGroupContent} object.
+ */
+public class XSDAttributeGroupContentItemProvider
+ extends XSDItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDAttributeGroupContentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeGroupDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeGroupDefinitionItemProvider.java
new file mode 100644
index 0000000..3a63d58
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeGroupDefinitionItemProvider.java
@@ -0,0 +1,223 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDAttributeGroupDefinition} object.
+ */
+public class XSDAttributeGroupDefinitionItemProvider
+ extends XSDRedefinableComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDAttributeGroupDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the attributeWildcard feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeWildcard_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeWildcardOfAttributeGroup_description"),
+ xsdPackage.getXSDAttributeGroupDefinition_AttributeWildcardContent(),
+ false));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfAttributeGroup_description"),
+ xsdPackage.getXSDAttributeGroupDefinition_Annotation(),
+ false));
+
+ // This is for the resolvedAttributeGroupDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolvedAttributeGroupDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolvedAttributeGroupDefinition_description"),
+ xsdPackage.getXSDAttributeGroupDefinition_ResolvedAttributeGroupDefinition(),
+ false));
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDAttributeGroupDefinition_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDAttributeGroupDefinition_Contents());
+ childrenFeatures.add(xsdPackage.getXSDAttributeGroupDefinition_AttributeWildcardContent());
+ }
+ return childrenFeatures;
+ }
+
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child)
+ {
+ EObject refObject = (EObject)child;
+ if (refObject instanceof XSDAttributeDeclaration)
+ {
+ // TODO: check that this is what you want.
+ return xsdPackage.getXSDAttributeGroupDefinition_Contents();
+ }
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns XSDAttributeGroupDefinition.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = ((XSDAttributeGroupDefinition)object);
+ XSDAttributeGroupDefinition resolvedAttributeGroupDefinition = xsdAttributeGroupDefinition.getResolvedAttributeGroupDefinition();
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (resolvedAttributeGroupDefinition.getContainer() == null ?
+ "full/obj16/XSDAttributeGroupUnresolved" :
+ xsdAttributeGroupDefinition.getResolvedAttributeGroupDefinition() == xsdAttributeGroupDefinition ?
+ "full/obj16/XSDAttributeGroupDefinition" :
+ "full/obj16/XSDAttributeGroupUse");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = ((XSDAttributeGroupDefinition)object);
+ String result =
+ xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference() ?
+ xsdAttributeGroupDefinition.getQName() :
+ xsdAttributeGroupDefinition.getName();
+ return result == null ? XSDEditPlugin.INSTANCE.getString("_UI_Absent_label") : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDAttributeGroupDefinition_Contents() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeGroupDefinition_AttributeUses() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeGroupDefinition_AttributeWildcardContent() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeGroupDefinition_Annotation()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition) object;
+
+ if (!xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference())
+ {
+ // annotation
+ //
+ newChildDescriptors.add
+ (createChildParameter
+ (xsdPackage.getXSDAttributeGroupDefinition_Annotation(),
+ xsdFactory.createXSDAnnotation()));
+
+ // attribute declaration under attribute use
+ //
+ XSDAttributeDeclaration xsdAttributeDeclaration = createAttributeDeclaration(xsdAttributeGroupDefinition);
+ newChildDescriptors.add
+ (createChildParameter
+ (xsdPackage.getXSDAttributeGroupDefinition_Contents(),
+ createAttributeUse(xsdAttributeDeclaration, false)));
+
+ // attribute declaration reference under attribute use
+ //
+ newChildDescriptors.add
+ (createChildParameter
+ (xsdPackage.getXSDAttributeGroupDefinition_Contents(),
+ createAttributeUse(xsdAttributeGroupDefinition.resolveAttributeDeclaration(""), true)));
+
+ // attribute group definition reference
+ //
+ newChildDescriptors.add
+ (createChildParameter
+ (xsdPackage.getXSDAttributeGroupDefinition_Contents(),
+ createAttributeGroupDefinitionReference(xsdAttributeGroupDefinition.resolveAttributeGroupDefinition(""))));
+
+ // attribute wildcard
+ //
+ newChildDescriptors.add
+ (createChildParameter
+ (xsdPackage.getXSDAttributeGroupDefinition_AttributeWildcardContent(),
+ xsdFactory.createXSDWildcard()));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeUseItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeUseItemProvider.java
new file mode 100644
index 0000000..c140c8c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDAttributeUseItemProvider.java
@@ -0,0 +1,349 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandWrapper;
+import org.eclipse.emf.common.command.UnexecutableCommand;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedImage;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptorDecorator;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDAttributeUse} object.
+ */
+public class XSDAttributeUseItemProvider
+ extends XSDComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDAttributeUseItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ protected XSDAttributeDeclaration getDelegate(XSDAttributeUse xsdAttributeUse)
+ {
+ return xsdAttributeUse.getContent();
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ itemPropertyDescriptors = null;
+ super.getPropertyDescriptors(object);
+
+ XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
+ XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
+ if (xsdAttributeDeclaration != null)
+ {
+ for (IItemPropertyDescriptor delegatedItemPropertyDescriptor : itemDelegator.getPropertyDescriptors(xsdAttributeDeclaration))
+ {
+ Object feature = delegatedItemPropertyDescriptor.getFeature(object);
+ if (feature != XSDPackage.eINSTANCE.getXSDFeature_Constraint() &&
+ feature != XSDPackage.eINSTANCE.getXSDFeature_Value() &&
+ feature != XSDPackage.eINSTANCE.getXSDFeature_LexicalValue())
+ {
+ itemPropertyDescriptors.add(new ItemPropertyDescriptorDecorator(xsdAttributeDeclaration, delegatedItemPropertyDescriptor));
+ }
+ }
+ }
+
+ // This is for the required feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Required_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Required_description"),
+ xsdPackage.getXSDAttributeUse_Required(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE));
+
+ // This is for the use feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Use_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Use_description"),
+ xsdPackage.getXSDAttributeUse_Use(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValue_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValueOfAttributeUse_description"),
+ xsdPackage.getXSDAttributeUse_LexicalValue(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the constraint feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Constraint_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ConstraintOfAttributeUse_description"),
+ xsdPackage.getXSDAttributeUse_Constraint(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the attributeDeclaration feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeDeclaration_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeDeclaration_description"),
+ xsdPackage.getXSDAttributeUse_AttributeDeclaration(),
+ false));
+
+ return itemPropertyDescriptors;
+ }
+
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.clear();
+/*
+ XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
+ childrenFeatures.add(xsdPackage.getXSDAttributeUse_Content());
+*/
+ }
+ return childrenFeatures;
+ }
+
+ @Override
+ public Collection<?> getChildren(Object object)
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)object;
+ XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
+ if (xsdAttributeDeclaration != null)
+ {
+ return itemDelegator.getChildren(xsdAttributeDeclaration);
+ }
+ else
+ {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+ @Override
+ public boolean hasChildren(Object object)
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)object;
+ XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
+ return
+ xsdAttributeDeclaration != null && itemDelegator.hasChildren(xsdAttributeDeclaration);
+ }
+
+ /**
+ * This returns XSDAttributeUse.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
+ XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
+ if (xsdAttributeDeclaration != null)
+ {
+ Collection<Object> images = new ArrayList<Object>();
+ images.add(itemDelegator.getImage(xsdAttributeDeclaration));
+
+ // Try this way, i.e., not showing the 1 case.
+ //
+ if (XSDAttributeUseCategory.REQUIRED_LITERAL != xsdAttributeUse.getUse())
+ {
+ String imageName =
+ "full/obj16/XSDOccurrence" +
+ (XSDAttributeUseCategory.PROHIBITED_LITERAL == xsdAttributeUse.getUse() ?
+ "Zero" :
+ XSDAttributeUseCategory.REQUIRED_LITERAL == xsdAttributeUse.getUse() ?
+ "One" :
+ "ZeroToOne");
+ images.add(XSDEditPlugin.INSTANCE.getImage(imageName));
+ }
+
+ return new ComposedImage(images);
+ }
+ else
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDAttributeUse");
+ }
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ return getText(object, true);
+ }
+
+ public String getText(Object object, boolean showType)
+ {
+ XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
+ XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
+ StringBuffer result = new StringBuffer();
+ if (xsdAttributeDeclaration != null)
+ {
+ result.append(itemDelegator.getText(xsdAttributeDeclaration));
+ }
+
+ if (xsdAttributeUse.isSetConstraint())
+ {
+ if (result.length() != 0)
+ {
+ result.append(" ");
+ }
+ result.append('<');
+ result.append(xsdAttributeUse.getConstraint());
+ result.append("=\"");
+ result.append(xsdAttributeUse.getLexicalValue());
+ result.append("\">");
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDAttributeUse_Required() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeUse_LexicalValue() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeUse_Constraint() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeUse_AttributeDeclaration() ||
+ msg.getFeature() == xsdPackage.getXSDAttributeUse_Use())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This returns a list of child descriptors based on the attributeUse
+ * content, not the attributeUse itself.
+ */
+ @Override
+ public Collection<?> getNewChildDescriptors(Object object, EditingDomain domain, Object sibling)
+ {
+ Object content = ((XSDAttributeUse) object).getContent();
+ return domain.getNewChildDescriptors(content, sibling);
+ }
+
+ /**
+ * This returns Remove and CreateChild commands (at least) that are based
+ * on the attributeUse content, not the attributeUse itself.
+ */
+ @Override
+ public Command createCommand(final Object object, final EditingDomain domain, Class<? extends Command> commandClass, CommandParameter commandParameter)
+ {
+ if (commandClass == RemoveCommand.class ||
+ commandClass == CreateChildCommand.class)
+ {
+ Object owner = ((XSDAttributeUse) object).getContent();
+ if (owner == null)
+ {
+ return UnexecutableCommand.INSTANCE;
+ }
+
+ commandParameter.setOwner(owner);
+
+ // RemoveCommand requires a wrapper that returns the correct affected
+ // object after an execute or redo (the particle or attribute use
+ // itself, instead of its content)
+ if (commandClass == RemoveCommand.class)
+ {
+ return new CommandWrapper(
+ domain.createCommand(commandClass, commandParameter))
+ {
+ private Collection<?> affectedObjects = Collections.EMPTY_SET;
+
+ @Override
+ public void execute()
+ {
+ super.execute();
+ affectedObjects = Collections.singleton(object);
+ }
+
+ @Override
+ public void undo()
+ {
+ super.undo();
+ affectedObjects = super.getAffectedObjects();
+ }
+
+ @Override
+ public void redo()
+ {
+ super.redo();
+ affectedObjects = Collections.singleton(object);
+ }
+
+ @Override
+ public Collection<?> getAffectedObjects()
+ {
+ return affectedObjects;
+ }
+ };
+ }
+
+ // CreateChildCommand handles its affected objects correctly
+ return domain.createCommand(commandClass, commandParameter);
+ }
+ return super.createCommand(object, domain, commandClass, commandParameter);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDBoundedFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDBoundedFacetItemProvider.java
new file mode 100644
index 0000000..d787f59
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDBoundedFacetItemProvider.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDBoundedFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDBoundedFacet} object.
+ */
+public class XSDBoundedFacetItemProvider
+ extends XSDFundamentalFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDBoundedFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueBoundedFacet_description"),
+ xsdPackage.getXSDBoundedFacet_Value(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDBoundedFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDBoundedFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDBoundedFacet xsdBoundedFacet = ((XSDBoundedFacet)object);
+ return xsdBoundedFacet.isValue() ? "true" : "false";
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDBoundedFacet_Value())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDCardinalityFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDCardinalityFacetItemProvider.java
new file mode 100644
index 0000000..3e5289b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDCardinalityFacetItemProvider.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDCardinalityFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDCardinalityFacet} object.
+ */
+public class XSDCardinalityFacetItemProvider
+ extends XSDFundamentalFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDCardinalityFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueCardinalityFacet_description"),
+ xsdPackage.getXSDCardinalityFacet_Value(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDCardinalityFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDCardinalityFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDCardinalityFacet xsdCardinalityFacet = ((XSDCardinalityFacet)object);
+ return xsdCardinalityFacet.getValue().getName();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDCardinalityFacet_Value())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComplexTypeContentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComplexTypeContentItemProvider.java
new file mode 100644
index 0000000..08a31a1
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComplexTypeContentItemProvider.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDComplexTypeContent} object.
+ */
+public class XSDComplexTypeContentItemProvider
+ extends XSDComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDComplexTypeContentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComplexTypeDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComplexTypeDefinitionItemProvider.java
new file mode 100644
index 0000000..a0bf2e3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComplexTypeDefinitionItemProvider.java
@@ -0,0 +1,459 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDContentTypeCategory;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDComplexTypeDefinition} object.
+ */
+public class XSDComplexTypeDefinitionItemProvider
+ extends XSDTypeDefinitionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDComplexTypeDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the derivationMethod feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_DerivationMethod_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_DerivationMethod_description"),
+ xsdPackage.getXSDComplexTypeDefinition_DerivationMethod(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+/*
+ // This is for the ffinal feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Final_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_FinalOfType_description"),
+ xsdPackage.getXSDComplexTypeDefinition_Final(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+*/
+
+ // This is for the fabstract feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Abstract_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AbstractOfType_description"),
+ xsdPackage.getXSDComplexTypeDefinition_Abstract(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE));
+
+ // This is for the mixed feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Mixed_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Mixed_description"),
+ xsdPackage.getXSDComplexTypeDefinition_Mixed(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE));
+
+ // This is for the contentTypeCategory feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ContentTypeCategory_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ContentTypeCategory_description"),
+ xsdPackage.getXSDComplexTypeDefinition_ContentTypeCategory(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the contentType feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ContentType_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ContentType_description"),
+ xsdPackage.getXSDComplexTypeDefinition_ContentType(),
+ false));
+
+ // This is for the prohibitedSubstitutions feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ProhibitedSubstitutions_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ProhibitedSubstitutions_description"),
+ xsdPackage.getXSDComplexTypeDefinition_ProhibitedSubstitutions(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDComplexTypeDefinition)o).getStringProhibitedSubstitutions();
+ }
+ });
+
+ // This is for the attributeWildcardContent feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeWildcard_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeWildcardOfType_description"),
+ xsdPackage.getXSDComplexTypeDefinition_AttributeWildcardContent(),
+ false));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfType_description"),
+ xsdPackage.getXSDTypeDefinition_Annotation(),
+ false));
+
+ // This is for the baseTypeDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_BaseTypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_BaseTypeDefinition_description"),
+ xsdPackage.getXSDComplexTypeDefinition_BaseTypeDefinition(),
+ false));
+
+ createLexicalFinalPropertyDescriptor(object);
+ createFinalPropertyDescriptor(object);
+ createBlockPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ protected void createLexicalFinalPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalFinal_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalFinal_description"),
+ xsdPackage.getXSDComplexTypeDefinition_LexicalFinal(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDComplexTypeDefinition)o).getStringLexicalFinal();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDComplexTypeDefinition)o).setStringLexicalFinal((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("extension");
+ result.add("restriction");
+ result.add("extension restriction");
+ return result;
+ }
+ });
+ }
+
+ protected void createFinalPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Final_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Final_description"),
+ xsdPackage.getXSDComplexTypeDefinition_Final(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDComplexTypeDefinition)o).getStringFinal();
+ }
+ });
+ }
+
+ protected void createBlockPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Block_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_BlockOfType_description"),
+ xsdPackage.getXSDComplexTypeDefinition_Block(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDComplexTypeDefinition)o).getStringBlock();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDComplexTypeDefinition)o).setStringBlock((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("extension");
+ result.add("restriction");
+ result.add("substitution");
+ result.add("extension restriction");
+ result.add("extension substitution");
+ result.add("extension restriction substitution");
+ result.add("restriction substitution");
+ return result;
+ }
+ });
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDTypeDefinition_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDComplexTypeDefinition_ContentAnnotation());
+ childrenFeatures.add(xsdPackage.getXSDTypeDefinition_DerivationAnnotation());
+ childrenFeatures.add(xsdPackage.getXSDComplexTypeDefinition_Content());
+ childrenFeatures.add(xsdPackage.getXSDComplexTypeDefinition_AttributeContents());
+ childrenFeatures.add(xsdPackage.getXSDComplexTypeDefinition_AttributeWildcardContent());
+ }
+ return childrenFeatures;
+ }
+
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child)
+ {
+ EObject refObject = (EObject)child;
+ if (refObject instanceof XSDAttributeDeclaration)
+ {
+ // TODO: check that this is what you want.
+ return xsdPackage.getXSDComplexTypeDefinition_AttributeContents();
+ }
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns XSDComplexTypeDefinition.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = ((XSDComplexTypeDefinition)object);
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (xsdComplexTypeDefinition.getContainer() == null ?
+ "full/obj16/XSDComplexTypeDefinitionUnresolved" :
+ "full/obj16/XSDComplexTypeDefinition");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ return getText(object, true);
+ }
+
+ public String getText(Object object, boolean showType)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = ((XSDComplexTypeDefinition)object);
+
+ StringBuffer result = new StringBuffer();
+
+ result.append
+ (xsdComplexTypeDefinition.getName() == null ?
+ xsdComplexTypeDefinition.getAliasName() :
+ xsdComplexTypeDefinition.getName());
+
+ if (showType)
+ {
+ XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null &&
+ baseTypeDefinition != xsdComplexTypeDefinition.getContent() &&
+ baseTypeDefinition.getName() != null &&
+ !XSDConstants.isURType(baseTypeDefinition))
+ {
+ result.append(" : ");
+ result.append(baseTypeDefinition.getQName(xsdComplexTypeDefinition));
+ }
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_DerivationMethod() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_Final() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_LexicalFinal() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_BaseTypeDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_Abstract() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_ContentTypeCategory() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_ProhibitedSubstitutions() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_AttributeContents() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_AttributeWildcardContent() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_Content() ||
+ msg.getFeature() == xsdPackage.getXSDComplexTypeDefinition_AttributeUses() ||
+ msg.getFeature() == xsdPackage.getXSDTypeDefinition_Annotations() ||
+ msg.getFeature() == xsdPackage.getXSDTypeDefinition_Annotation())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition) object;
+
+ // type annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDTypeDefinition_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ XSDComplexTypeDefinition anyTypeDefinition = ctd.getSchema().getSchemaForSchema().resolveComplexTypeDefinition("anyType");
+ XSDContentTypeCategory contentType = ctd.getContentTypeCategory();
+
+ // content annotation on simple type definition content (simple type
+ // definition already contains its own derivation annotation)...
+ if (contentType == XSDContentTypeCategory.SIMPLE_LITERAL)
+ {
+ // content annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_ContentAnnotation(), xsdFactory.createXSDAnnotation()));
+ }
+
+ // content and derivation annotations on complex content, if not
+ // restriction of anyTypeDefinition (for which short form is used)...
+ else if ((contentType == XSDContentTypeCategory.ELEMENT_ONLY_LITERAL ||
+ contentType == XSDContentTypeCategory.MIXED_LITERAL) &&
+ !(ctd.getBaseTypeDefinition() == anyTypeDefinition &&
+ ctd.getDerivationMethod() == XSDDerivationMethod.RESTRICTION_LITERAL))
+ {
+ // content annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_ContentAnnotation(), xsdFactory.createXSDAnnotation()));
+
+ // derivation annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDTypeDefinition_DerivationAnnotation(), xsdFactory.createXSDAnnotation()));
+ }
+
+ // atomic simple type definition content
+ addSimpleTypeDefinitionChildParameters(newChildDescriptors, ctd, xsdPackage.getXSDComplexTypeDefinition_Content(), true, false, false);
+
+ // all, choice, and sequence model groups particle content
+ addModelGroupChildParameters(newChildDescriptors, xsdPackage.getXSDComplexTypeDefinition_Content(), true, true);
+
+ // model group definition reference particle content
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_Content(), createParticle(ctd.resolveModelGroupDefinition(""), true)));
+
+ // attribute declaration under attribute use
+ XSDAttributeDeclaration ad = createAttributeDeclaration(ctd);
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_AttributeContents(), createAttributeUse(ad, false)));
+
+ // attribute declaration reference under attribute use
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_AttributeContents(), createAttributeUse(ctd.resolveAttributeDeclaration(""), true)));
+
+ // attribute group definition reference
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_AttributeContents(), createAttributeGroupDefinitionReference(ctd.resolveAttributeGroupDefinition(""))));
+
+ // attribute wildcard
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDComplexTypeDefinition_AttributeWildcardContent(), xsdFactory.createXSDWildcard()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComponentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComponentItemProvider.java
new file mode 100644
index 0000000..3a47f23
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDComponentItemProvider.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDComponent} object.
+ */
+public class XSDComponentItemProvider
+ extends XSDConcreteComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDComponentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDConcreteComponentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDConcreteComponentItemProvider.java
new file mode 100644
index 0000000..759625f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDConcreteComponentItemProvider.java
@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.CopyCommand;
+import org.eclipse.emf.edit.command.InitializeCopyCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDConcreteComponent} object.
+ */
+public class XSDConcreteComponentItemProvider
+ extends XSDItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDConcreteComponentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ createElementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ protected void createElementPropertyDescriptor(Object object)
+ {
+ // This is for the element feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Element_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Element_description"),
+ xsdPackage.getXSDConcreteComponent_Element(),
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ XSDConcreteComponent concreteComponent = ((XSDConcreteComponent)o);
+ if (concreteComponent.getElement() == null)
+ {
+ return "";
+ }
+ else
+ {
+ return concreteComponent.getElement().getTagName();
+ }
+ }
+ });
+ }
+
+ /**
+ * We don't want to copy any references other than containment references.
+ */
+ @Override
+ protected Command createInitializeCopyCommand(EditingDomain domain, EObject owner, CopyCommand.Helper helper)
+ {
+ return
+ new InitializeCopyCommand(domain, owner, helper)
+ {
+ @Override
+ protected Collection<? extends EAttribute> getAttributesToCopy()
+ {
+ Collection<EAttribute> result = new ArrayList<EAttribute>(this.owner.eClass().getEAllAttributes());
+ result.remove(xsdPackage.getXSDConcreteComponent_Element());
+ return result;
+ }
+ };
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDConcreteComponent_Element())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDConstrainingFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDConstrainingFacetItemProvider.java
new file mode 100644
index 0000000..4648f05
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDConstrainingFacetItemProvider.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDConstrainingFacet} object.
+ */
+public class XSDConstrainingFacetItemProvider
+ extends XSDFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDConstrainingFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDFacet_SimpleTypeDefinition())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDDiagnosticItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDDiagnosticItemProvider.java
new file mode 100644
index 0000000..c0b0691
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDDiagnosticItemProvider.java
@@ -0,0 +1,179 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDDiagnostic;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDDiagnostic} object.
+ */
+public class XSDDiagnosticItemProvider
+ extends XSDItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDDiagnosticItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the severity feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Severity_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Severity_description"),
+ xsdPackage.getXSDDiagnostic_Severity(),
+ true,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE));
+
+ // This is for the message feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Message_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Message_description"),
+ xsdPackage.getXSDDiagnostic_Message(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the locationURI feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LocationURI_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LocationURI_description"),
+ xsdPackage.getXSDDiagnostic_LocationURI(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the line feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Line_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Line_description"),
+ xsdPackage.getXSDDiagnostic_Line(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ // This is for the column feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Column_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Column_description"),
+ xsdPackage.getXSDDiagnostic_Column(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ // This is for the node feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Node_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Node_description"),
+ xsdPackage.getXSDDiagnostic_Node(),
+ true,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE));
+
+ // This is for the annotationURI feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationURI_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationURI_description"),
+ xsdPackage.getXSDDiagnostic_AnnotationURI(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDDiagnostic.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDDiagnostic");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDDiagnostic xsdDiagnostic = ((XSDDiagnostic)object);
+ return xsdDiagnostic.getMessage();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDDiagnostic_Severity() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_Message() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_LocationURI() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_Line() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_Column() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_Node() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_AnnotationURI() ||
+ msg.getFeature() == xsdPackage.getXSDDiagnostic_Components())
+ {
+ fireNotifyChanged(msg);
+ }
+ else
+ {
+ super.notifyChanged(msg);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDEditPlugin.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDEditPlugin.java
new file mode 100644
index 0000000..4603ef0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDEditPlugin.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * The <b>Plugin</b> for the model.
+ * The XML Schema model needs to be able to run
+ * within an Eclipse workbench,
+ * within a headless Eclipse workspace,
+ * or just stand-alone as part of some other application.
+ * To support this, all access is directed to the static methods,
+ * which can redirect the service as appopriate to the runtime.
+ * During stand-alone invocation no plugin initialization takes place.
+ * In this case you will need the resources jar on the class path.
+ * @see #getBaseURL()
+ */
+public final class XSDEditPlugin extends EMFPlugin
+{
+ /**
+ * The singleton instance of the plugin.
+ */
+ public static final XSDEditPlugin INSTANCE = new XSDEditPlugin();
+
+ /**
+ * The one instance of this class.
+ */
+ static private Implementation plugin;
+
+ /**
+ * Creates the singleton instance.
+ */
+ private XSDEditPlugin()
+ {
+ super(new ResourceLocator[] {});
+ }
+
+ /*
+ * Javadoc copied from base class.
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * @return the singleton instance.
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ */
+ public static class Implementation extends EMFPlugin.EclipsePlugin
+ {
+ /**
+ * Creates an instance.
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDElementDeclarationItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDElementDeclarationItemProvider.java
new file mode 100644
index 0000000..574518f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDElementDeclarationItemProvider.java
@@ -0,0 +1,686 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDIdentityConstraintCategory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDParticle;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDElementDeclaration} object.
+ */
+public class XSDElementDeclarationItemProvider
+ extends XSDFeatureItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDElementDeclarationItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ createLexicalValuePropertyDescriptor(object);
+ createConstraintPropertyDescriptor(object);
+ createScopePropertyDescriptor(object);
+ createNillablePropertyDescriptor(object);
+ createDisallowedSubstitutionsPropertyDescriptor(object);
+ createSubstitutionGroupExclusionsPropertyDescriptor(object);
+ createAbstractPropertyDescriptor(object);
+ createTypeDefinitionPropertyDescriptor(object);
+ createSubstitutionGroupAffiliationPropertyDescriptor(object);
+ createAnnotationPropertyDescriptor(object);
+ createResolvedElementDeclarationPropertyDescriptor(object);
+ createElementFormDefaultPropertyDescriptor(object);
+ createLexicalFinalPropertyDescriptor(object);
+ createBlockPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ protected static class DelegatingItemPropertyDescriptor extends XSDItemProviderAdapter.ItemPropertyDescriptorWithDefault
+ {
+ public DelegatingItemPropertyDescriptor
+ (AdapterFactory adapterFactory,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ Object staticImage)
+ {
+ super(adapterFactory, displayName, description, feature, isSettable, staticImage);
+ }
+
+ @Override
+ public Object getPropertyValue(Object object)
+ {
+ return super.getPropertyValue(((XSDElementDeclaration)object).getResolvedElementDeclaration());
+ }
+
+ @Override
+ public void setPropertyValue(Object object, Object value)
+ {
+ super.setPropertyValue(((XSDElementDeclaration)object).getResolvedElementDeclaration(), value);
+ }
+
+ }
+
+ @Override
+ protected void createNamePropertyDescriptor(Object object)
+ {
+
+ // This is for the name feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Name_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Name_description"),
+ xsdPackage.getXSDNamedComponent_Name(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)o;
+ if (xsdElementDeclaration.isElementDeclarationReference())
+ {
+ XSDElementDeclaration newResolvedElementDeclaration =
+ xsdElementDeclaration.resolveElementDeclaration(xsdElementDeclaration.getTargetNamespace(), (String)value);
+ EditingDomain editingDomain = getEditingDomain(xsdElementDeclaration);
+ if (editingDomain == null)
+ {
+ xsdElementDeclaration.setResolvedElementDeclaration(newResolvedElementDeclaration);
+ }
+ else
+ {
+ editingDomain.getCommandStack().execute
+ (SetCommand.create
+ (editingDomain,
+ xsdElementDeclaration,
+ xsdPackage.getXSDElementDeclaration_ResolvedElementDeclaration(),
+ newResolvedElementDeclaration));
+ }
+ }
+ else
+ {
+ super.setPropertyValue(o, value);
+ }
+ }
+ });
+ }
+
+ protected void createLexicalFinalPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new XSDItemProviderAdapter.ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Final_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_FinalOfElement_description"),
+ xsdPackage.getXSDElementDeclaration_LexicalFinal(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_DefaultValue_label", new Object [] { ((XSDElementDeclaration)o).getStringLexicalFinal() });
+ }
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDElementDeclaration)o).getStringLexicalFinal();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDElementDeclaration)o).setStringLexicalFinal((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("restriction");
+ result.add("restriction extension");
+ result.add("extension");
+ return result;
+ }
+ });
+ }
+ protected void createBlockPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new XSDItemProviderAdapter.ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Block_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_BlockOfElement_description"),
+ xsdPackage.getXSDElementDeclaration_Block(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_DefaultValue_label", new Object [] { ((XSDElementDeclaration)o).getStringBlock() });
+ }
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDElementDeclaration)o).getStringBlock();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDElementDeclaration)o).setStringBlock((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("extension");
+ result.add("restriction");
+ result.add("substitution");
+ result.add("extension restriction");
+ result.add("extension restriction substitution");
+ result.add("extension substitution");
+ result.add("restriction substitution");
+ return result;
+ }
+ });
+ }
+
+ @Override
+ protected void createTargetNamespacePropertyDescriptor(Object object)
+ {
+
+ // This is for the name feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_description"),
+ xsdPackage.getXSDNamedComponent_TargetNamespace(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)o;
+ if (xsdElementDeclaration.isElementDeclarationReference())
+ {
+ String namespace = (String)value;
+ if (namespace.length() == 0)
+ {
+ namespace = null;
+ }
+ XSDElementDeclaration newResolvedElementDeclaration =
+ xsdElementDeclaration.resolveElementDeclaration(namespace, xsdElementDeclaration.getName());
+ EditingDomain editingDomain = getEditingDomain(xsdElementDeclaration);
+ if (editingDomain == null)
+ {
+ xsdElementDeclaration.setResolvedElementDeclaration(newResolvedElementDeclaration);
+ }
+ else
+ {
+ editingDomain.getCommandStack().execute
+ (SetCommand.create
+ (editingDomain,
+ xsdElementDeclaration,
+ xsdPackage.getXSDElementDeclaration_ResolvedElementDeclaration(),
+ newResolvedElementDeclaration));
+ }
+ }
+ else
+ {
+ super.setPropertyValue(o, value);
+ }
+ }
+ });
+ }
+
+ protected void createElementFormDefaultPropertyDescriptor(Object object)
+ {
+ // This is for the elementFormDefault feature.
+ //
+ itemPropertyDescriptors.add
+ (new XSDItemProviderAdapter.ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Form_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_FormOfElement_description"),
+ xsdPackage.getXSDFeature_Form(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_DefaultValue_label", new Object [] { ((XSDElementDeclaration)o).getSchema().getElementFormDefault().getName() });
+ }
+ });
+ }
+
+ @Override
+ protected void createLexicalValuePropertyDescriptor(Object object)
+ {
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValue_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValueOfElement_description"),
+ xsdPackage.getXSDFeature_LexicalValue(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ @Override
+ protected void createConstraintPropertyDescriptor(Object object)
+ {
+ // This is for the constraint feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Constraint_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ConstraintOfElement_description"),
+ xsdPackage.getXSDFeature_Constraint(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ @Override
+ protected void createScopePropertyDescriptor(Object object)
+ {
+ // This is for the scope feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Scope_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ScopeOfElement_description"),
+ xsdPackage.getXSDFeature_Scope(),
+ false,
+ null));
+ }
+
+ protected void createNillablePropertyDescriptor(Object object)
+ {
+ // This is for the nillable feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Nillable_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Nillable_description"),
+ xsdPackage.getXSDElementDeclaration_Nillable(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" });
+ }
+
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ return
+ Arrays.asList
+ (new Object []
+ { Boolean.FALSE,
+ Boolean.TRUE,
+ XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" })
+ });
+ }
+ });
+ }
+
+ protected void createDisallowedSubstitutionsPropertyDescriptor(Object object)
+ {
+ // This is for the disallowedSubstitutions feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_DisallowedSubstitutions_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_DisallowedSubstitutions_description"),
+ xsdPackage.getXSDElementDeclaration_DisallowedSubstitutions(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDElementDeclaration)o).getStringDisallowedSubstitutions();
+ }
+ });
+ }
+
+ protected void createSubstitutionGroupExclusionsPropertyDescriptor(Object object)
+ {
+ // This is for the substitutionGroupExclusions feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_SubstitutionGroupExclusions_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_SubstitutionGroupExclusions_description"),
+ xsdPackage.getXSDElementDeclaration_SubstitutionGroupExclusions(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDElementDeclaration)o).getStringSubstitutionGroupExclusions();
+ }
+ });
+ }
+
+ protected void createAbstractPropertyDescriptor(Object object)
+ {
+ // This is for the abstract feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Abstract_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AbstractOfElement_description"),
+ xsdPackage.getXSDElementDeclaration_Abstract(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" });
+ }
+
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ return
+ Arrays.asList
+ (new Object []
+ { Boolean.FALSE,
+ Boolean.TRUE,
+ XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" })
+ });
+ }
+ });
+ }
+
+ protected void createTypeDefinitionPropertyDescriptor(Object object)
+ {
+ // This is for the typeDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_TypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_TypeDefinitionOfElement_description"),
+ xsdPackage.getXSDElementDeclaration_TypeDefinition(),
+ false,
+ null));
+ }
+
+ protected void createSubstitutionGroupAffiliationPropertyDescriptor(Object object)
+ {
+ // This is for the substitutionGroupAffiliation feature.
+ //
+ itemPropertyDescriptors.add
+ (new DelegatingItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_SubstitutionGroupAffiliation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_SubstitutionGroupAffiliation_description"),
+ xsdPackage.getXSDElementDeclaration_SubstitutionGroupAffiliation(),
+ false,
+ null));
+ }
+
+ protected void createAnnotationPropertyDescriptor(Object object)
+ {
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfElement_description"),
+ xsdPackage.getXSDElementDeclaration_Annotation(),
+ false));
+ }
+
+ protected void createResolvedElementDeclarationPropertyDescriptor(Object object)
+ {
+ // This is for the resolvedElementDeclaration feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolveElementDeclaration_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolveElementDeclaration_description"),
+ xsdPackage.getXSDElementDeclaration_ResolvedElementDeclaration(),
+ false));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDElementDeclaration_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDElementDeclaration_AnonymousTypeDefinition());
+ childrenFeatures.add(xsdPackage.getXSDElementDeclaration_IdentityConstraintDefinitions());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDElementDeclaration.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)object);
+ XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (resolvedElementDeclaration.getContainer() == null ?
+ "full/obj16/XSDElementUnresolved" :
+ xsdElementDeclaration.getResolvedElementDeclaration() == xsdElementDeclaration ?
+ "full/obj16/XSDElementDeclaration" :
+ "full/obj16/XSDElementUse");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)object);
+ XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
+ String name =
+ xsdElementDeclaration != resolvedElementDeclaration ?
+ xsdElementDeclaration.getQName() :
+ xsdElementDeclaration.getName();
+
+ StringBuffer result = new StringBuffer();
+ if (name == null)
+ {
+ result.append(XSDEditPlugin.INSTANCE.getString("_UI_Absent_label"));
+ }
+ else
+ {
+ result.append(name);
+ }
+
+ if (resolvedElementDeclaration.getAnonymousTypeDefinition() == null && resolvedElementDeclaration.getTypeDefinition() != null)
+ {
+ result.append(" : ");
+ result.append(resolvedElementDeclaration.getTypeDefinition().getQName(xsdElementDeclaration));
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)msg.getNotifier();
+ if (
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_Nillable() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_DisallowedSubstitutions() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_SubstitutionGroupAffiliation() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_SubstitutionGroupExclusions() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_Abstract() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_IdentityConstraintDefinitions() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_TypeDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_AnonymousTypeDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_SubstitutionGroupAffiliation() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_ResolvedElementDeclaration() ||
+ msg.getFeature() == xsdPackage.getXSDElementDeclaration_Annotation()
+ )
+ {
+ fireNotifyChanged(msg);
+ XSDConcreteComponent container = xsdElementDeclaration.getContainer();
+ if (container instanceof XSDParticle)
+ {
+ ((ItemProviderAdapter)adapterFactory.adapt(container, IItemLabelProvider.class)).fireNotifyChanged
+ (new ENotificationImpl
+ ((InternalEObject)container,
+ msg.getEventType(),
+ (EStructuralFeature)msg.getFeature(),
+ msg.getOldValue(),
+ msg.getNewValue(),
+ msg.getPosition()));
+ }
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDElementDeclaration ed = (XSDElementDeclaration) object;
+
+ if (!ed.isElementDeclarationReference())
+ {
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDElementDeclaration_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ // atomic, list, and union simple type definitions
+ addSimpleTypeDefinitionChildParameters(newChildDescriptors, ed, xsdPackage.getXSDElementDeclaration_AnonymousTypeDefinition(), true, true, true);
+
+ // complex type definition
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDElementDeclaration_AnonymousTypeDefinition(), createComplexTypeDefinition(ed)));
+
+ // unique identity constraint definition
+ XSDIdentityConstraintDefinition icd =
+ createIdentityConstraintDefinition(ed);
+ icd.setIdentityConstraintCategory(XSDIdentityConstraintCategory.UNIQUE_LITERAL);
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDElementDeclaration_IdentityConstraintDefinitions(), icd));
+
+ // key identity constraint definition
+ icd = createIdentityConstraintDefinition(ed);
+ icd.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEY_LITERAL);
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDElementDeclaration_IdentityConstraintDefinitions(), icd));
+
+ // keyref identity constraint definition
+ XSDIdentityConstraintDefinition icdRef = xsdFactory.createXSDIdentityConstraintDefinition();
+ icdRef.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEYREF_LITERAL);
+ icdRef.setName(icd.getName());
+ if (icd.getTargetNamespace() != null)
+ {
+ icdRef.setTargetNamespace(icd.getTargetNamespace());
+ }
+ icd = ed.resolveIdentityConstraintDefinition("");
+ icdRef.setReferencedKey(icd);
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDElementDeclaration_IdentityConstraintDefinitions(), icdRef));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDEnumerationFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDEnumerationFacetItemProvider.java
new file mode 100644
index 0000000..adef986
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDEnumerationFacetItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDEnumerationFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDEnumerationFacet} object.
+ */
+public class XSDEnumerationFacetItemProvider
+ extends XSDRepeatableFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDEnumerationFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueEnumerationFacet_description"),
+ xsdPackage.getXSDEnumerationFacet_Value(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDEnumerationFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDEnumerationFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDEnumerationFacet xsdEnumerationFacet = ((XSDEnumerationFacet)object);
+ String result = xsdEnumerationFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDEnumerationFacet_Value()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFacetItemProvider.java
new file mode 100644
index 0000000..e04acb3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFacetItemProvider.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDFacet} object.
+ */
+public class XSDFacetItemProvider
+ extends XSDComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the lexicalValue feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValue_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValueOfFacet_description"),
+ xsdPackage.getXSDFacet_LexicalValue(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfFacet_description"),
+ xsdPackage.getXSDFacet_Annotation(),
+ false));
+
+ // This is for the simpleTypeDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_SimpleTypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_SimpleTypeDefinition_description"),
+ xsdPackage.getXSDFacet_SimpleTypeDefinition(),
+ false));
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDFacet_Annotation());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue() ||
+ msg.getFeature() == xsdPackage.getXSDFacet_Annotation()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDFacet_Annotation(), xsdFactory.createXSDAnnotation()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFeatureItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFeatureItemProvider.java
new file mode 100644
index 0000000..43def5c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFeatureItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDFeature} object.
+ */
+public class XSDFeatureItemProvider
+ extends XSDNamedComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDFeatureItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ createLexicalValuePropertyDescriptor(object);
+ createConstraintPropertyDescriptor(object);
+ createScopePropertyDescriptor(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ protected void createLexicalValuePropertyDescriptor(Object object)
+ {
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValue_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalValueOfFeature_description"),
+ xsdPackage.getXSDFeature_LexicalValue(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ protected void createConstraintPropertyDescriptor(Object object)
+ {
+ // This is for the constraint feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Constraint_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ConstraintOfFeature_description"),
+ xsdPackage.getXSDFeature_Constraint(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ protected void createScopePropertyDescriptor(Object object)
+ {
+ // This is for the scope feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Scope_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ScopeOfFeature_description"),
+ xsdPackage.getXSDFeature_Scope(),
+ false));
+ }
+
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDFeature_LexicalValue() ||
+ msg.getFeature() == xsdPackage.getXSDFeature_Constraint() ||
+ msg.getFeature() == xsdPackage.getXSDFeature_Scope()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+ }
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFixedFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFixedFacetItemProvider.java
new file mode 100644
index 0000000..d80d4fb
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFixedFacetItemProvider.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDFixedFacet} object.
+ */
+public class XSDFixedFacetItemProvider
+ extends XSDConstrainingFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDFixedFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the fixed feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Fixed_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Fixed_description"),
+ xsdPackage.getXSDFixedFacet_Fixed(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDFixedFacet_Fixed()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFractionDigitsFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFractionDigitsFacetItemProvider.java
new file mode 100644
index 0000000..57a7caf
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFractionDigitsFacetItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDFractionDigitsFacet} object.
+ */
+public class XSDFractionDigitsFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDFractionDigitsFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueFractionDigitsFacet_description"),
+ xsdPackage.getXSDFractionDigitsFacet_Value(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDFractionDigitsFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDFractionDigitsFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDFractionDigitsFacet xsdFractionDigitsFacet = ((XSDFractionDigitsFacet)object);
+ String result = xsdFractionDigitsFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFundamentalFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFundamentalFacetItemProvider.java
new file mode 100644
index 0000000..3e743b8
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDFundamentalFacetItemProvider.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDFundamentalFacet} object.
+ */
+public class XSDFundamentalFacetItemProvider
+ extends XSDFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDFundamentalFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDIdentityConstraintDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDIdentityConstraintDefinitionItemProvider.java
new file mode 100644
index 0000000..077c7e7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDIdentityConstraintDefinitionItemProvider.java
@@ -0,0 +1,199 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDIdentityConstraintCategory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.XSDXPathVariety;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDIdentityConstraintDefinition} object.
+ */
+public class XSDIdentityConstraintDefinitionItemProvider
+ extends XSDNamedComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDIdentityConstraintDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the identityConstraintCategory feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_IdentityConstraintCategory_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_IdentityConstraintCategory_description"),
+ xsdPackage.getXSDIdentityConstraintDefinition_IdentityConstraintCategory(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+/*
+ // This is for the selector feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Selector_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Selector_description"),
+ xsdPackage.getXSDIdentityConstraintDefinition_Selector(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+*/
+
+ // This is for the referencedKey feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ReferencedKey_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ReferencedKey_description"),
+ xsdPackage.getXSDIdentityConstraintDefinition_ReferencedKey(),
+ false));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfIdentityConstraint_description"),
+ xsdPackage.getXSDIdentityConstraintDefinition_Annotation(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDIdentityConstraintDefinition_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDIdentityConstraintDefinition_Selector());
+ childrenFeatures.add(xsdPackage.getXSDIdentityConstraintDefinition_Fields());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDIdentityConstraintDefinition.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition = ((XSDIdentityConstraintDefinition)object);
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (XSDIdentityConstraintCategory.KEY_LITERAL == xsdIdentityConstraintDefinition.getIdentityConstraintCategory() ?
+ "full/obj16/XSDIdentityConstraintDefinitionKey" :
+ XSDIdentityConstraintCategory.KEYREF_LITERAL == xsdIdentityConstraintDefinition.getIdentityConstraintCategory() ?
+ "full/obj16/XSDIdentityConstraintDefinitionKeyReference" :
+ "full/obj16/XSDIdentityConstraintDefinitionUnique");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition = ((XSDIdentityConstraintDefinition)object);
+ String result = xsdIdentityConstraintDefinition.getName();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDIdentityConstraintDefinition_IdentityConstraintCategory() ||
+ msg.getFeature() == xsdPackage.getXSDIdentityConstraintDefinition_Selector() ||
+ msg.getFeature() == xsdPackage.getXSDIdentityConstraintDefinition_Fields() ||
+ msg.getFeature() == xsdPackage.getXSDIdentityConstraintDefinition_ReferencedKey() ||
+ msg.getFeature() == xsdPackage.getXSDIdentityConstraintDefinition_Annotation()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDIdentityConstraintDefinition_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ // selector xpath
+ XSDXPathDefinition xpd = xsdFactory.createXSDXPathDefinition();
+ xpd.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
+ xpd.setValue("");
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDIdentityConstraintDefinition_Selector(), xpd));
+
+ // field xpath
+ xpd = xsdFactory.createXSDXPathDefinition();
+ xpd.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ xpd.setValue("");
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDIdentityConstraintDefinition_Fields(), xpd));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDImportItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDImportItemProvider.java
new file mode 100644
index 0000000..1cb3bc7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDImportItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDImport;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDImport} object.
+ */
+public class XSDImportItemProvider
+ extends XSDSchemaDirectiveItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDImportItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the namespace feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Namespace_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Namespace_description"),
+ xsdPackage.getXSDImport_Namespace(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfImport_description"),
+ xsdPackage.getXSDImport_Annotation(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDImport_Annotation());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDImport.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDImport");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDImport xsdImport = ((XSDImport)object);
+ String result = xsdImport.getSchemaLocation();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDImport_Namespace() ||
+ msg.getFeature() == xsdPackage.getXSDImport_Annotation()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDImport_Annotation(), xsdFactory.createXSDAnnotation()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDIncludeItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDIncludeItemProvider.java
new file mode 100644
index 0000000..9afcaad
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDIncludeItemProvider.java
@@ -0,0 +1,137 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDInclude;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDInclude} object.
+ */
+public class XSDIncludeItemProvider
+ extends XSDSchemaCompositorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDIncludeItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfInclude_description"),
+ xsdPackage.getXSDInclude_Annotation(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDInclude_Annotation());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDInclude.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDInclude");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDInclude xsdInclude = ((XSDInclude)object);
+ String result = xsdInclude.getSchemaLocation();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDInclude_Annotation()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDInclude_Annotation(), xsdFactory.createXSDAnnotation()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java
new file mode 100644
index 0000000..f6d72da
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java
@@ -0,0 +1,1074 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.XSDXPathDefinition;
+
+
+/**
+ * This is the base for all adapters.
+ * It takes handles the {@link #getParent getParent()} implementation that
+ * is need for {@link org.eclipse.xsd.provider.XSDParticleItemProvider}
+ * and {@link org.eclipse.xsd.provider.XSDAttributeUseItemProvider}
+ * to skip up to a particle or attribute use.
+ * It also supports {@link CreateChildCommand} by supplying text and icons,
+ * and provides methods that assist the derived adapters in overriding
+ * {@link ItemProviderAdapter#collectNewChildDescriptors}.
+ */
+public class XSDItemProviderAdapter extends ItemProviderAdapter
+ implements CreateChildCommand.Helper
+{
+ protected static final XSDPackage xsdPackage = XSDPackage.eINSTANCE;
+ protected static final XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+ protected AdapterFactoryItemDelegator itemDelegator;
+
+ /**
+ * This creates an instance from an adapter factory.
+ */
+ protected XSDItemProviderAdapter(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ itemDelegator = new AdapterFactoryItemDelegator(adapterFactory);
+ }
+
+ /**
+ * This returns the parent.
+ */
+ @Override
+ public Object getParent(Object object)
+ {
+ EObject eObject = (EObject)object;
+ EObject parent = eObject.eContainer();
+ if (parent != null)
+ {
+ EObject grandParent = parent.eContainer();
+ if (grandParent instanceof XSDParticle ||
+ grandParent instanceof XSDAttributeUse)
+ {
+ return grandParent;
+ }
+ }
+ if (parent == null)
+ {
+ return eObject.eResource();
+ }
+ return parent;
+ }
+
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(final Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ itemPropertyDescriptors =
+ new ArrayList<IItemPropertyDescriptor>()
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean add(IItemPropertyDescriptor o)
+ {
+ String id = o.getId(object);
+ for (IItemPropertyDescriptor propertyDescriptor : this)
+ {
+ if (id.equals(propertyDescriptor.getId(object)))
+ {
+ return false;
+ }
+ }
+ return super.add(o);
+ }
+ };
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ public static class ItemPropertyDescriptorWithDefault extends ItemPropertyDescriptor
+ {
+ public ItemPropertyDescriptorWithDefault
+ (AdapterFactory adapterFactory,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ Object staticImage)
+ {
+ super(adapterFactory, displayName, description, feature, isSettable, staticImage);
+ }
+
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ if (feature instanceof EAttribute)
+ {
+ EObject refObject = (EObject)o;
+ EAttribute attribute = (EAttribute)feature;
+ if (!attribute.isMany() && !refObject.eIsSet(attribute))
+ {
+ return createPropertyValueWrapper(o, getPropertyDefaultValue(o));
+ }
+ }
+ return super.getPropertyValue(o);
+ }
+
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ if (feature instanceof EAttribute)
+ {
+ EAttribute attribute = (EAttribute)feature;
+ if (!attribute.isMany())
+ {
+ Object propertyDefaultValue = getPropertyDefaultValue(o);
+ if (propertyDefaultValue.equals(value))
+ {
+ resetPropertyValue(o);
+ return;
+ }
+ }
+ }
+ super.setPropertyValue(o, value);
+ }
+
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<?> result = super.getChoiceOfValues(o);
+ if (result != null && feature instanceof EAttribute)
+ {
+ EAttribute attribute = (EAttribute)feature;
+ if (!attribute.isMany())
+ {
+ List<Object> newResult = new ArrayList<Object>(result);
+ Object propertyDefaultValue = getPropertyDefaultValue(o);
+ newResult.add(propertyDefaultValue);
+ result = newResult;
+ }
+ }
+ return result;
+ }
+
+ public Object getPropertyDefaultValue(Object o)
+ {
+ if (feature instanceof EAttribute)
+ {
+ EAttribute attribute = (EAttribute)feature;
+ if (!attribute.isMany())
+ {
+ Object result = attribute.getDefaultValue();
+ if (result == null)
+ {
+ result = getDefaultValue(attribute.getEType());
+ }
+ if (result == null)
+ {
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "" });
+ }
+ else
+ {
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { this.itemDelegator.getText(result) });
+ }
+ }
+ }
+ return null;
+ }
+ }
+
+ /**
+ * If <code>object</code> is a particle or an attribute use, this returns
+ * its content; otherwise, <code>object</code> itself.
+ */
+ protected Object getParticleOrAttributeUseContent(Object object)
+ {
+ if (object instanceof XSDParticle)
+ {
+ return ((XSDParticle) object).getContent();
+ }
+ else if (object instanceof XSDAttributeUse)
+ {
+ return ((XSDAttributeUse) object).getContent();
+ }
+ return object;
+ }
+
+ /**
+ * This is a convenience method for creating <code>CommandParameter</code>s
+ * for a given parent feature and child object.
+ */
+ protected CommandParameter createChildParameter(EReference feature,
+ XSDConcreteComponent child)
+ {
+ return new CommandParameter(null, feature, child);
+ }
+
+ /**
+ * This is a convenience method for creating {@link CommandParameter}s
+ * for model groups of two or all of the three compositor types
+ * (choice, sequence, and optionally all, depending on the value of
+ * <code>all</code>) and adding them to a <code>newChildDescriptors</code>
+ * collection. If <code>useParticle</code> is <code>true</code>, each
+ * model group will be the content of a new particle.
+ */
+ protected void addModelGroupChildParameters(Collection<Object> newChildDescriptors,
+ EReference feature,
+ boolean all,
+ boolean useParticle)
+ {
+ XSDCompositor[] compositor = { XSDCompositor.ALL_LITERAL, XSDCompositor.CHOICE_LITERAL, XSDCompositor.SEQUENCE_LITERAL };
+ for (int i = all ? 0 : 1; i < compositor.length; i++)
+ {
+ XSDModelGroup mg = xsdFactory.createXSDModelGroup();
+ mg.setCompositor(compositor[i]);
+ XSDConcreteComponent child = mg;
+ if (useParticle)
+ {
+ child = createParticle(mg, false);
+ }
+ newChildDescriptors.add(createChildParameter(feature, child));
+ }
+ }
+
+ /**
+ * This is a convenience method for creating {@link CommandParameter}s
+ * for simple type definitions of zero, one, two, or all of three
+ * varieties (atomic, list, and union), and adding them to a
+ * <code>newChildDescriptors</code> collection. The simple type
+ * definition objects are to be added to the specified
+ * <code>feature</code> of <code>parent</code>. The varieties for which
+ * to create simple type definitions and command parameters are specified
+ * by the three boolean arguments, <code>atomic</code>, <code>list</code>,
+ * and <code>union</code>.
+ */
+ protected void addSimpleTypeDefinitionChildParameters
+ (Collection<Object> newChildDescriptors,
+ XSDConcreteComponent parent,
+ EReference feature,
+ boolean atomic,
+ boolean list,
+ boolean union)
+ {
+ XSDSchema xsdSchema = parent.getSchema();
+ if (xsdSchema != null)
+ {
+ XSDSimpleTypeDefinition baseType = parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+
+ if (atomic)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = createSimpleTypeDefinition(parent);
+ xsdSimpleTypeDefinition.setVariety(XSDVariety.ATOMIC_LITERAL);
+ xsdSimpleTypeDefinition.setBaseTypeDefinition(baseType);
+ newChildDescriptors.add(createChildParameter(feature, xsdSimpleTypeDefinition));
+ }
+
+ if (list)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = createSimpleTypeDefinition(parent);
+ xsdSimpleTypeDefinition.setVariety(XSDVariety.LIST_LITERAL);
+ xsdSimpleTypeDefinition.setItemTypeDefinition(baseType);
+ newChildDescriptors.add(createChildParameter(feature, xsdSimpleTypeDefinition));
+ }
+
+ if (union)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = createSimpleTypeDefinition(parent);
+ xsdSimpleTypeDefinition.setVariety(XSDVariety.UNION_LITERAL);
+ xsdSimpleTypeDefinition.getMemberTypeDefinitions().add(baseType);
+ newChildDescriptors.add(createChildParameter(feature, xsdSimpleTypeDefinition));
+ }
+ }
+ }
+
+ /**
+ * This determines whether an object represents a global element,
+ * based on the type of its parent.
+ */
+ protected boolean isGlobal(Object parent)
+ {
+ return (parent instanceof XSDSchema || parent instanceof XSDRedefine);
+ }
+
+ /**
+ * This creates an object of type <code>XSDAttributeDeclaration</code>
+ * with a name that is unique globally (compared to other global attribute
+ * declarations) or locally (compared to sibling attribute declarations
+ * and children of sibling attribute groups), depending on the type of the
+ * specified <code>parent</code>. The created object will be initialized
+ * to resolve to itself and to have the <code>string</code> type
+ * definition.
+ *
+ * <p>Note: in determining local uniqueness, we do not consider any
+ * referenced uses of the parent group or type elsewhere in the schema.
+ */
+ protected XSDAttributeDeclaration createAttributeDeclaration(XSDConcreteComponent parent)
+ {
+ XSDAttributeDeclaration child = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDAttributeDeclaration().getName());
+
+ if (isGlobal(parent))
+ {
+ String name = null;
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveAttributeDeclaration(name);
+ } while (((EObject) child).eContainer() != null);
+ }
+ else
+ {
+ XSDSchema schema = parent.getSchema();
+
+ // use the namespace from the schema in determining local uniqueness
+ // only if new local declarations will be qualified by default
+ String namespace = null;
+ if (schema != null &&
+ schema.getAttributeFormDefault() == XSDForm.QUALIFIED_LITERAL)
+ {
+ namespace = schema.getTargetNamespace();
+ }
+ Collection<? extends XSDAttributeUse> siblings = getAttributeSiblings(parent);
+ String name = null;
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ } while (!isUniqueAttributeDeclarationName(name, namespace, siblings));
+
+ child = xsdFactory.createXSDAttributeDeclaration();
+ child.setName(name);
+ if (namespace != null)
+ {
+ child.setTargetNamespace(namespace);
+ }
+ child.setResolvedAttributeDeclaration(child);
+ }
+
+ // initialize element type to be string
+ child.setTypeDefinition(parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ return child;
+ }
+
+ /**
+ * This gathers and returns the siblings by stepping up through any
+ * attribute group definitions to the top-most parent attribute definition
+ * or complex type definition, and returning the attribute uses for it.
+ * Returns <code>null</code> if there is no such parent.
+ */
+ protected Collection<? extends XSDAttributeUse> getAttributeSiblings(XSDConcreteComponent parent)
+ {
+ Collection<XSDAttributeUse> siblings = null;
+ if (parent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition group = (XSDAttributeGroupDefinition)parent;
+ while (group.eContainer() instanceof XSDAttributeGroupDefinition)
+ {
+ group = (XSDAttributeGroupDefinition) group.eContainer();
+ }
+
+ if (group.eContainer() instanceof XSDComplexTypeDefinition)
+ {
+ parent = (XSDComplexTypeDefinition) group.eContainer();
+ }
+ else
+ {
+ siblings = group.getAttributeUses();
+ }
+ }
+ if (parent instanceof XSDComplexTypeDefinition)
+ {
+ siblings = ((XSDComplexTypeDefinition) parent).getAttributeUses();
+ }
+ return siblings;
+ }
+
+ /**
+ * This tests whether the combination of given <code>localName</code> and
+ * <code>targetNamespace</code> is shared by an attribute declaration of
+ * an attribute use in the given collection. Returns <code>false</code>
+ * if so, <code>true</code> otherwise. Note that this method is tolerant
+ * of nulls: a result of <code>true</code> is returned if
+ * <code>attributeUse</code> is <code>null</code>, and two null strings
+ * are considered equal.
+ */
+ protected boolean isUniqueAttributeDeclarationName(String localName, String targetNamespace, Collection<? extends XSDAttributeUse> attributeUses)
+ {
+ if (attributeUses != null)
+ {
+ for (XSDAttributeUse attributeUse : attributeUses)
+ {
+ if (attributeUse.getAttributeDeclaration() != null)
+ {
+ XSDAttributeDeclaration other =
+ attributeUse.getAttributeDeclaration();
+ if (other.hasNameAndTargetNamespace(localName, targetNamespace))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * This creates an object of type <code>XSDElementDeclaration</code>
+ * with a name that is unique globally or locally, depending on the type
+ * of the specified <code>parent</code>. The created object will be
+ * initialized to resolve to itself and to have the <code>string</code>
+ * type definition.
+ *
+ * <p>Note: in determining local uniqueness, we do not consider any
+ * referenced uses of the parent group or type elsewhere in the schema.
+ */
+ protected XSDElementDeclaration createElementDeclaration(XSDConcreteComponent parent)
+ {
+ XSDElementDeclaration child = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDElementDeclaration().getName());
+
+ if (isGlobal(parent))
+ {
+ String name = null;
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveElementDeclaration(name);
+ } while (((EObject) child).eContainer() != null);
+ }
+ else
+ {
+ XSDSchema schema = parent.getSchema();
+
+ // use the namespace from the schema in determining local uniqueness
+ // only if new local declarations will be qualified by default
+ String namespace = null;
+ if (schema != null &&
+ schema.getElementFormDefault() == XSDForm.QUALIFIED_LITERAL)
+ {
+ namespace = schema.getTargetNamespace();
+ }
+ XSDModelGroup modelGroup = getTopModelGroup(parent);
+ String name = null;
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ } while (!isUniqueElementDeclarationName(name, namespace, modelGroup, null));
+ child = xsdFactory.createXSDElementDeclaration();
+ child.setName(name);
+ if (namespace != null)
+ {
+ child.setTargetNamespace(namespace);
+ }
+ child.setResolvedElementDeclaration(child);
+ }
+
+ // initialize attribute type to be string
+ child.setTypeDefinition(parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ return child;
+ }
+
+ /**
+ * If the specified parent is a model group, this finds and returns the
+ * top-most model group above it (within the same complex type or model
+ * group definition). Otherwise, returns <code>null</code>.
+ */
+ protected XSDModelGroup getTopModelGroup(XSDConcreteComponent parent)
+ {
+ XSDModelGroup modelGroup = null;
+
+ if (parent instanceof XSDModelGroup)
+ {
+ modelGroup = (XSDModelGroup) parent;
+ while (parent.eContainer() instanceof XSDParticle ||
+ parent.eContainer() instanceof XSDModelGroup)
+ {
+ parent = (XSDConcreteComponent) parent.eContainer();
+ if (parent instanceof XSDModelGroup)
+ {
+ modelGroup = (XSDModelGroup) parent;
+ }
+ }
+ }
+ return modelGroup;
+ }
+
+ /**
+ * This tests whether the combination of given <code>localName</code>
+ * and <code>targetNamespace</code> is shared by an element declaration in
+ * the given model group or a model group under it. Returns
+ * <code>false</code> if so, <code>true</code> otherwise. Note that this
+ * method is tolerant of nulls: a result of <code>true</code> is
+ * returned if <code>modelGroup</code> is <code>null</code>, and two
+ * null strings are considered equal. Also, note that the
+ * <code>visited</code> argument is used to avoid an infinite recursion
+ * situation, and should be <code>null</code> when the method is initially
+ * called.
+ */
+ protected boolean isUniqueElementDeclarationName(String localName, String targetNamespace, XSDModelGroup modelGroup, HashSet<XSDModelGroup> visited)
+ {
+ if (visited == null)
+ {
+ visited = new HashSet<XSDModelGroup>();
+ }
+
+ if (modelGroup != null && visited.add(modelGroup) && modelGroup.getParticles() != null)
+ {
+ for (XSDParticle particle : modelGroup.getParticles())
+ {
+ if (particle.getTerm() instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration other =
+ (XSDElementDeclaration) particle.getTerm();
+ if (other.hasNameAndTargetNamespace(localName, targetNamespace))
+ {
+ return false;
+ }
+ }
+ else if (particle.getTerm() instanceof XSDModelGroup)
+ {
+ XSDModelGroup others = (XSDModelGroup) particle.getTerm();
+ if (!isUniqueElementDeclarationName(localName, targetNamespace, others, visited))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * This creates an object of type <code>XSDAttributeGroupDefinition</code>
+ * with a name that is unique globally, and that resolves to
+ * itself. The created object is to be added under the specified
+ * <code>parent</code>.
+ */
+ protected XSDAttributeGroupDefinition createAttributeGroupDefinition(XSDConcreteComponent parent)
+ {
+ XSDAttributeGroupDefinition child = null;
+ String name = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDAttributeGroupDefinition().getName());
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveAttributeGroupDefinition(name);
+ } while (((EObject) child).eContainer() != null);
+
+ return child;
+ }
+
+ /**
+ * This creates an object of type <code>XSDModelGroupDefinition</code>
+ * with a name that is unique globally, and that resolves to
+ * itself. The created object is to be added under the specified
+ * <code>parent</code>.
+ */
+ protected XSDModelGroupDefinition createModelGroupDefinition(XSDConcreteComponent parent)
+ {
+ XSDModelGroupDefinition child = null;
+ String name = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDModelGroupDefinition().getName());
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveModelGroupDefinition(name);
+ } while (((EObject) child).eContainer() != null);
+
+ return child;
+ }
+
+ /**
+ * This creates an object of type <code>XSDComplexTypeDefinition</code>
+ * with a name that is unique globally, if this is to be a global
+ * definition; otherwise, with no name. The created object is to be
+ * added under the specified <code>parent</code>.
+ */
+ protected XSDComplexTypeDefinition createComplexTypeDefinition(XSDConcreteComponent parent)
+ {
+ XSDComplexTypeDefinition child = null;
+
+ if (isGlobal(parent))
+ {
+ String name = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDComplexTypeDefinition().getName());
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveComplexTypeDefinition(name);
+ } while (((EObject) child).eContainer() != null);
+ }
+ else
+ {
+ child = xsdFactory.createXSDComplexTypeDefinition();
+ }
+ return child;
+ }
+
+ /**
+ * This creates an object of type <code>XSDSimpleTypeDefinition</code>
+ * with a name that is unique globally, if this is to be a global
+ * definition; otherwise, with no name. The created object is to be
+ * added under the specified <code>parent</code>.
+ */
+ protected XSDSimpleTypeDefinition createSimpleTypeDefinition(XSDConcreteComponent parent)
+ {
+ XSDSimpleTypeDefinition child = null;
+
+ if (isGlobal(parent))
+ {
+ String name = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDSimpleTypeDefinition().getName());
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveSimpleTypeDefinition(name);
+ } while (((EObject) child).eContainer() != null);
+ }
+ else
+ {
+ child = xsdFactory.createXSDSimpleTypeDefinition();
+ }
+
+ return child;
+ }
+
+ /**
+ * This creates an object of type
+ * <code>XSDIdentityConstraintDefinition</code> with a name that is unique
+ * globally. The created object is to be added under the specified
+ * <code>parent</code>.
+ */
+ protected XSDIdentityConstraintDefinition createIdentityConstraintDefinition(XSDConcreteComponent parent)
+ {
+ XSDIdentityConstraintDefinition child = null;
+ String name = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDIdentityConstraintDefinition().getName());
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveIdentityConstraintDefinition(name);
+ } while (((EObject) child).eContainer() != null);
+
+ return child;
+ }
+
+ /**
+ * This creates an object of type <code>XSDNotationDeclaration</code> with
+ * a name that is unique globally. The created object, to be added
+ * under the specified <code>parent</code>, will have an empty string as
+ * its public identifier.
+ */
+ protected XSDNotationDeclaration createNotationDeclaration(XSDConcreteComponent parent)
+ {
+ XSDNotationDeclaration child = null;
+ String name = null;
+ String baseName = getNewObjectName(xsdPackage.getXSDNotationDeclaration().getName());
+ int i = 0;
+ do
+ {
+ name = baseName + ((i > 0) ? String.valueOf(i) : "");
+ i = (i > 0) ? i + 1 : 1;
+ child = parent.resolveNotationDeclaration(name);
+ } while (((EObject) child).eContainer() != null);
+
+ child.setPublicIdentifier("");
+ return child;
+ }
+
+ /**
+ * This creates an object of type <code>XSDAttributeUse</code> containing
+ * an object of type <code>XSDAttributeDeclaration</code> -- if
+ * <code>isReference</code> is <code>true</code>, the attribute use
+ * content will be a new attribute declaration that resolves to
+ * <code>attributeDeclaration</code>; otherwise, it will be simply
+ * <code>attributeDeclaration</code> itself.
+ */
+ protected XSDAttributeUse createAttributeUse(XSDAttributeDeclaration attributeDeclaration, boolean isReference)
+ {
+ XSDAttributeUse au = xsdFactory.createXSDAttributeUse();
+ if (isReference)
+ {
+ XSDAttributeDeclaration ref = xsdFactory.createXSDAttributeDeclaration();
+ ref.setResolvedAttributeDeclaration(attributeDeclaration);
+ au.setContent(ref);
+ }
+ else
+ {
+ au.setContent(attributeDeclaration);
+ }
+ return au;
+ }
+
+ /**
+ * This creates an object of type <code>XSDAttributeGroupDefinition</code>
+ * that resolves to <code>attributeGroupDefinition</code>.
+ */
+ protected XSDAttributeGroupDefinition createAttributeGroupDefinitionReference(XSDAttributeGroupDefinition attributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition ref =
+ xsdFactory.createXSDAttributeGroupDefinition();
+ ref.setResolvedAttributeGroupDefinition(attributeGroupDefinition);
+ return ref;
+ }
+
+ /**
+ * This creates an object of type <code>XSDParticle</code> containing
+ * an object of type <code>XSDParticleContent</code> -- if either
+ * <code>particleContent</code> is an element declaration and
+ * <code>isReference</code> is <code>true</code> or
+ * <code>particleContent</code> is a model group definition, the particle
+ * content will be a new element declaration that resolves to
+ * <code>particleContent</code>; otherwise, it will be simply
+ * <code>particleContent</code> itself.
+ */
+ protected XSDParticle createParticle(XSDParticleContent particleContent, boolean isReference)
+ {
+ XSDParticle p = xsdFactory.createXSDParticle();
+ if (particleContent instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition ref = xsdFactory.createXSDModelGroupDefinition();
+ ref.setResolvedModelGroupDefinition((XSDModelGroupDefinition) particleContent);
+ p.setContent(ref);
+ }
+ else if (particleContent instanceof XSDElementDeclaration && isReference)
+ {
+ XSDElementDeclaration ref = xsdFactory.createXSDElementDeclaration();
+ ref.setResolvedElementDeclaration((XSDElementDeclaration) particleContent);
+ p.setContent(ref);
+ }
+ else
+ {
+ p.setContent(particleContent);
+
+ }
+ return p;
+ }
+
+ /**
+ * This returns the translated name for a new object with the specified
+ * type name.
+ */
+ protected String getNewObjectName(String typeName)
+ {
+ return XSDEditPlugin.INSTANCE.getString("_UI_" + typeName + "_new_object");
+ }
+
+ /**
+ * This returns the default result collection for {@link CreateChildCommand}.
+ */
+ @Override
+ public Collection<?> getCreateChildResult(Object child)
+ {
+ Collection<Object> result = new ArrayList<Object>(1);
+ result.add(child);
+ return result;
+ }
+
+ /**
+ * This returns the translated label for {@link CreateChildCommand}.
+ */
+ @Override
+ public String getCreateChildText(Object parent, Object feature,
+ Object child, Collection<?> selection)
+ {
+ child = getParticleOrAttributeUseContent(child);
+
+ EReference refFeature = feature instanceof EReference ?
+ (EReference) feature : null;
+ String qualifier = getTypeTextQualifier(parent, refFeature, child);
+
+ return getTypeText(child, qualifier);
+ }
+
+ /**
+ * This returns the translated description for {@link CreateChildCommand}.
+ */
+ @Override
+ public String getCreateChildDescription(Object parent, Object feature,
+ Object child, Collection<?> selection)
+ {
+ child = getParticleOrAttributeUseContent(child);
+
+ EReference refFeature = feature instanceof EReference ?
+ (EReference) feature : null;
+ String qualifier = getTypeTextQualifier(parent, refFeature, child);
+
+ Object selectedObject = selection == null || selection.isEmpty() ?
+ null : getParticleOrAttributeUseContent(selection.iterator().next());
+ if (parent != selectedObject)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_CreateSibling_description", new Object [] { getTypeText(child, qualifier), getTypeText(selectedObject, null) });
+ }
+ else
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_CreateChild_description", new Object [] { getTypeText(child, qualifier), getTypeText(parent, null) });
+ }
+ }
+
+ /**
+ * This returns the translated tool tip for {@link CreateChildCommand}.
+ */
+ @Override
+ public String getCreateChildToolTipText(Object parent, Object feature,
+ Object child, Collection<?> selection)
+ {
+ child = getParticleOrAttributeUseContent(child);
+
+ EReference refFeature = feature instanceof EReference ?
+ (EReference) feature : null;
+ String qualifier = getTypeTextQualifier(parent, refFeature, child);
+
+ Object selectedObject = selection == null || selection.isEmpty() ?
+ null : getParticleOrAttributeUseContent(selection.iterator().next());
+ if (parent != selectedObject)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_CreateSibling_tooltip", new Object [] { getTypeText(child, qualifier), getTypeText(selectedObject, null) });
+ }
+ else
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString
+ ("_UI_CreateChild_tooltip", new Object [] { getTypeText(child, qualifier), getTypeText(parent, null) });
+ }
+ }
+
+ /**
+ * This gets the translated string for <code>object</code>'s type,
+ * qualified by <code>qualifier</code>, if it is non-null.
+ */
+ protected String getTypeText(Object object, String qualifier)
+ {
+ StringBuffer typeKey = new StringBuffer("_UI_");
+ typeKey.append(object instanceof EObject ?
+ ((EObject) object).eClass().getName() : "Unknown");
+ typeKey.append("_type");
+
+ if (qualifier != null)
+ {
+ typeKey.append('_');
+ typeKey.append(qualifier);
+ }
+ return XSDEditPlugin.INSTANCE.getString(typeKey.toString());
+ }
+
+ /**
+ * This returns the icon for {@link CreateChildCommand}.
+ */
+ @Override
+ public Object getCreateChildImage(Object parent, Object feature,
+ Object child, Collection<?> selection)
+ {
+ child = getParticleOrAttributeUseContent(child);
+ Object image = null;
+
+ if (child instanceof EObject)
+ {
+ StringBuffer imageName = new StringBuffer("full/obj16/");
+ String typeName = ((EObject) child).eClass().getName();
+
+ EReference refFeature = feature instanceof EReference ?
+ (EReference) feature : null;
+ String qualifier = getImageNameQualifier(parent, refFeature, child);
+
+ // kludge: drop Declaration or Definition when qualifier is Use
+ int i = "Use".equals(qualifier) ? typeName.lastIndexOf('D') : 0;
+ if (i > 0)
+ {
+ typeName = typeName.substring(0, i);
+ }
+ imageName.append(typeName);
+
+ if (qualifier != null)
+ {
+ imageName.append(qualifier);
+ }
+ image = XSDEditPlugin.INSTANCE.getImage(imageName.toString());
+ }
+ return image;
+ }
+
+ /**
+ * This generates and returns a qualifier string, for use in forming the
+ * type key, based on the state of the child object, its parent, and the
+ * feature under which it is to be added.
+ */
+ protected String getTypeTextQualifier(Object parent, EReference feature,
+ Object child)
+ {
+ return getQualifier(parent, feature, child);
+ }
+
+ /**
+ * This generates and returns a qualifier string, for use in forming the
+ * icon filename, based on the state of the child object, its parent, and
+ * the feature under which is to be added.
+ */
+ protected String getImageNameQualifier(Object parent, EReference feature,
+ Object child)
+ {
+ // kludge: there is only one annotation icon
+ Object p = child instanceof XSDAnnotation ? null : parent;
+ String qualifier = getQualifier(p, feature, child);
+
+ // a little translation
+ if ("keyref".equals(qualifier))
+ {
+ qualifier = "KeyReference";
+ }
+ else if ("reference".equals(qualifier))
+ {
+ qualifier = "Use";
+ }
+ else if (qualifier != null && qualifier.length() > 0)
+ {
+ // capitalize
+ StringBuffer buffer = new StringBuffer(qualifier);
+ char c = buffer.charAt(0);
+ buffer.setCharAt(0, Character.toUpperCase(c));
+ qualifier = buffer.toString();
+ }
+ return qualifier;
+ }
+
+ /**
+ * This does common stuff for getTypeTextQualifier() and
+ * getImageNameQualifier().
+ */
+ private String getQualifier(Object parent, EReference feature, Object child)
+ {
+ String qualifier = null;
+
+ // qualification for feature declaration or group definition reference
+ if ((child instanceof XSDElementDeclaration &&
+ ((XSDElementDeclaration) child).isElementDeclarationReference()) ||
+ (child instanceof XSDAttributeDeclaration &&
+ ((XSDAttributeDeclaration) child).isAttributeDeclarationReference()) ||
+ (child instanceof XSDModelGroupDefinition &&
+ ((XSDModelGroupDefinition) child).isModelGroupDefinitionReference()) ||
+ (child instanceof XSDAttributeGroupDefinition &&
+ ((XSDAttributeGroupDefinition)
+ child).isAttributeGroupDefinitionReference()))
+ {
+ qualifier = "reference";
+ }
+
+ // qualification by compositor for model group
+ else if (child instanceof XSDModelGroup)
+ {
+ qualifier = ((XSDModelGroup) child).getCompositor().getName();
+ }
+
+ // qualification by variety for simple type definition
+ else if (child instanceof XSDSimpleTypeDefinition)
+ {
+ qualifier = ((XSDSimpleTypeDefinition) child).getVariety().getName();
+ }
+
+ // qualification by category for identity constraint definition
+ else if (child instanceof XSDIdentityConstraintDefinition)
+ {
+ qualifier = ((XSDIdentityConstraintDefinition) child).getIdentityConstraintCategory().getName();
+ }
+
+ // qualification by variety for xpath definition
+ else if (child instanceof XSDXPathDefinition)
+ {
+ qualifier = ((XSDXPathDefinition) child).getVariety().getName();
+ }
+
+ // qualification according to parent for wildcard
+ else if (child instanceof XSDWildcard)
+ {
+ if (parent instanceof XSDAttributeGroupDefinition ||
+ parent instanceof XSDComplexTypeDefinition)
+ {
+ qualifier = "attribute";
+ }
+ else if (parent instanceof XSDModelGroup)
+ {
+ qualifier = "element";
+ }
+ }
+
+ // qualification by feature name for annotation under type definition
+ else if (child instanceof XSDAnnotation &&
+ parent instanceof XSDTypeDefinition &&
+ feature != null)
+ {
+ qualifier = feature.getName();
+ }
+ return qualifier;
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapterFactory.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapterFactory.java
new file mode 100644
index 0000000..96f6c50
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapterFactory.java
@@ -0,0 +1,1263 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.Disposable;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITableItemLabelProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.xsd.util.XSDAdapterFactory;
+
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support JFace viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ */
+public class XSDItemProviderAdapterFactory
+ extends
+ XSDAdapterFactory
+ implements
+ ComposeableAdapterFactory,
+ IChangeNotifier,
+ IDisposable
+{
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IDisposable}.
+ */
+ protected Disposable disposable = new Disposable();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ */
+ public XSDItemProviderAdapterFactory()
+ {
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(ITableItemLabelProvider.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDAnnotation} instances.
+ */
+ protected XSDAnnotationItemProvider xsdAnnotationItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDAnnotation}.
+ */
+ @Override
+ public Adapter createXSDAnnotationAdapter()
+ {
+ if (xsdAnnotationItemProvider == null)
+ {
+ xsdAnnotationItemProvider = new XSDAnnotationItemProvider(this);
+ }
+
+ return xsdAnnotationItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDConcreteComponent} instances.
+ */
+ protected XSDConcreteComponentItemProvider xsdConcreteComponentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDConcreteComponent}.
+ */
+ @Override
+ public Adapter createXSDConcreteComponentAdapter()
+ {
+ if (xsdConcreteComponentItemProvider == null)
+ {
+ xsdConcreteComponentItemProvider = new XSDConcreteComponentItemProvider(this);
+ }
+
+ return xsdConcreteComponentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDComponent} instances.
+ */
+ protected XSDComponentItemProvider xsdComponentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDComponent}.
+ */
+ @Override
+ public Adapter createXSDComponentAdapter()
+ {
+ if (xsdComponentItemProvider == null)
+ {
+ xsdComponentItemProvider = new XSDComponentItemProvider(this);
+ }
+
+ return xsdComponentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDAttributeUse} instances.
+ */
+ protected XSDAttributeUseItemProvider xsdAttributeUseItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDAttributeUse}.
+ */
+ @Override
+ public Adapter createXSDAttributeUseAdapter()
+ {
+ if (xsdAttributeUseItemProvider == null)
+ {
+ xsdAttributeUseItemProvider = new XSDAttributeUseItemProvider(this);
+ }
+
+ return xsdAttributeUseItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDFeature} instances.
+ */
+ protected XSDFeatureItemProvider xsdFeatureItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDFeature}.
+ */
+ @Override
+ public Adapter createXSDFeatureAdapter()
+ {
+ if (xsdFeatureItemProvider == null)
+ {
+ xsdFeatureItemProvider = new XSDFeatureItemProvider(this);
+ }
+
+ return xsdFeatureItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDElementDeclaration} instances.
+ */
+ protected XSDElementDeclarationItemProvider xsdElementDeclarationItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDElementDeclaration}.
+ */
+ @Override
+ public Adapter createXSDElementDeclarationAdapter()
+ {
+ if (xsdElementDeclarationItemProvider == null)
+ {
+ xsdElementDeclarationItemProvider = new XSDElementDeclarationItemProvider(this);
+ }
+
+ return xsdElementDeclarationItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDSchema} instances.
+ */
+ protected XSDSchemaItemProvider xsdSchemaItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDSchema}.
+ */
+ @Override
+ public Adapter createXSDSchemaAdapter()
+ {
+ if (xsdSchemaItemProvider == null)
+ {
+ xsdSchemaItemProvider = new XSDSchemaItemProvider(this);
+ }
+
+ return xsdSchemaItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDComplexTypeDefinition} instances.
+ */
+ protected XSDComplexTypeDefinitionItemProvider xsdComplexTypeDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDComplexTypeDefinition}.
+ */
+ @Override
+ public Adapter createXSDComplexTypeDefinitionAdapter()
+ {
+ if (xsdComplexTypeDefinitionItemProvider == null)
+ {
+ xsdComplexTypeDefinitionItemProvider = new XSDComplexTypeDefinitionItemProvider(this);
+ }
+
+ return xsdComplexTypeDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDScope} instances.
+ */
+ protected XSDScopeItemProvider xsdScopeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDScope}.
+ */
+ @Override
+ public Adapter createXSDScopeAdapter()
+ {
+ if (xsdScopeItemProvider == null)
+ {
+ xsdScopeItemProvider = new XSDScopeItemProvider(this);
+ }
+
+ return xsdScopeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDTypeDefinition} instances.
+ */
+ protected XSDTypeDefinitionItemProvider xsdTypeDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDTypeDefinition}.
+ */
+ @Override
+ public Adapter createXSDTypeDefinitionAdapter()
+ {
+ if (xsdTypeDefinitionItemProvider == null)
+ {
+ xsdTypeDefinitionItemProvider = new XSDTypeDefinitionItemProvider(this);
+ }
+
+ return xsdTypeDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDSimpleTypeDefinition} instances.
+ */
+ protected XSDSimpleTypeDefinitionItemProvider xsdSimpleTypeDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDSimpleTypeDefinition}.
+ */
+ @Override
+ public Adapter createXSDSimpleTypeDefinitionAdapter()
+ {
+ if (xsdSimpleTypeDefinitionItemProvider == null)
+ {
+ xsdSimpleTypeDefinitionItemProvider = new XSDSimpleTypeDefinitionItemProvider(this);
+ }
+
+ return xsdSimpleTypeDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDComplexTypeContent} instances.
+ */
+ protected XSDComplexTypeContentItemProvider xsdComplexTypeContentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDComplexTypeContent}.
+ */
+ @Override
+ public Adapter createXSDComplexTypeContentAdapter()
+ {
+ if (xsdComplexTypeContentItemProvider == null)
+ {
+ xsdComplexTypeContentItemProvider = new XSDComplexTypeContentItemProvider(this);
+ }
+
+ return xsdComplexTypeContentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDParticle} instances.
+ */
+ protected XSDParticleItemProvider xsdParticleItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDParticle}.
+ */
+ @Override
+ public Adapter createXSDParticleAdapter()
+ {
+ if (xsdParticleItemProvider == null)
+ {
+ xsdParticleItemProvider = new XSDParticleItemProvider(this);
+ }
+
+ return xsdParticleItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDModelGroup} instances.
+ */
+ protected XSDModelGroupItemProvider xsdModelGroupItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDModelGroup}.
+ */
+ @Override
+ public Adapter createXSDModelGroupAdapter()
+ {
+ if (xsdModelGroupItemProvider == null)
+ {
+ xsdModelGroupItemProvider = new XSDModelGroupItemProvider(this);
+ }
+
+ return xsdModelGroupItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDTerm} instances.
+ */
+ protected XSDTermItemProvider xsdTermItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDTerm}.
+ */
+ @Override
+ public Adapter createXSDTermAdapter()
+ {
+ if (xsdTermItemProvider == null)
+ {
+ xsdTermItemProvider = new XSDTermItemProvider(this);
+ }
+
+ return xsdTermItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDParticleContent} instances.
+ */
+ protected XSDParticleContentItemProvider xsdParticleContentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDParticleContent}.
+ */
+ @Override
+ public Adapter createXSDParticleContentAdapter()
+ {
+ if (xsdParticleContentItemProvider == null)
+ {
+ xsdParticleContentItemProvider = new XSDParticleContentItemProvider(this);
+ }
+
+ return xsdParticleContentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDModelGroupDefinition} instances.
+ */
+ protected XSDModelGroupDefinitionItemProvider xsdModelGroupDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDModelGroupDefinition}.
+ */
+ @Override
+ public Adapter createXSDModelGroupDefinitionAdapter()
+ {
+ if (xsdModelGroupDefinitionItemProvider == null)
+ {
+ xsdModelGroupDefinitionItemProvider = new XSDModelGroupDefinitionItemProvider(this);
+ }
+
+ return xsdModelGroupDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDRedefineContent} instances.
+ */
+ protected XSDRedefineContentItemProvider xsdRedefineContentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDRedefineContent}.
+ */
+ @Override
+ public Adapter createXSDRedefineContentAdapter()
+ {
+ if (xsdRedefineContentItemProvider == null)
+ {
+ xsdRedefineContentItemProvider = new XSDRedefineContentItemProvider(this);
+ }
+
+ return xsdRedefineContentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDRedefinableComponent} instances.
+ */
+ protected XSDRedefinableComponentItemProvider xsdRedefinableComponentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDRedefinableComponent}.
+ */
+ @Override
+ public Adapter createXSDRedefinableComponentAdapter()
+ {
+ if (xsdRedefinableComponentItemProvider == null)
+ {
+ xsdRedefinableComponentItemProvider = new XSDRedefinableComponentItemProvider(this);
+ }
+
+ return xsdRedefinableComponentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDAttributeGroupDefinition} instances.
+ */
+ protected XSDAttributeGroupDefinitionItemProvider xsdAttributeGroupDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDAttributeGroupDefinition}.
+ */
+ @Override
+ public Adapter createXSDAttributeGroupDefinitionAdapter()
+ {
+ if (xsdAttributeGroupDefinitionItemProvider == null)
+ {
+ xsdAttributeGroupDefinitionItemProvider = new XSDAttributeGroupDefinitionItemProvider(this);
+ }
+
+ return xsdAttributeGroupDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDAttributeGroupContent} instances.
+ */
+ protected XSDAttributeGroupContentItemProvider xsdAttributeGroupContentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDAttributeGroupContent}.
+ */
+ @Override
+ public Adapter createXSDAttributeGroupContentAdapter()
+ {
+ if (xsdAttributeGroupContentItemProvider == null)
+ {
+ xsdAttributeGroupContentItemProvider = new XSDAttributeGroupContentItemProvider(this);
+ }
+
+ return xsdAttributeGroupContentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDWildcard} instances.
+ */
+ protected XSDWildcardItemProvider xsdWildcardItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDWildcard}.
+ */
+ @Override
+ public Adapter createXSDWildcardAdapter()
+ {
+ if (xsdWildcardItemProvider == null)
+ {
+ xsdWildcardItemProvider = new XSDWildcardItemProvider(this);
+ }
+
+ return xsdWildcardItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDNamedComponent} instances.
+ */
+ protected XSDNamedComponentItemProvider xsdNamedComponentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDNamedComponent}.
+ */
+ @Override
+ public Adapter createXSDNamedComponentAdapter()
+ {
+ if (xsdNamedComponentItemProvider == null)
+ {
+ xsdNamedComponentItemProvider = new XSDNamedComponentItemProvider(this);
+ }
+
+ return xsdNamedComponentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDIdentityConstraintDefinition} instances.
+ */
+ protected XSDIdentityConstraintDefinitionItemProvider xsdIdentityConstraintDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDIdentityConstraintDefinition}.
+ */
+ @Override
+ public Adapter createXSDIdentityConstraintDefinitionAdapter()
+ {
+ if (xsdIdentityConstraintDefinitionItemProvider == null)
+ {
+ xsdIdentityConstraintDefinitionItemProvider = new XSDIdentityConstraintDefinitionItemProvider(this);
+ }
+
+ return xsdIdentityConstraintDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDXPathDefinition} instances.
+ */
+ protected XSDXPathDefinitionItemProvider xsdxPathDefinitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDXPathDefinition}.
+ */
+ @Override
+ public Adapter createXSDXPathDefinitionAdapter()
+ {
+ if (xsdxPathDefinitionItemProvider == null)
+ {
+ xsdxPathDefinitionItemProvider = new XSDXPathDefinitionItemProvider(this);
+ }
+
+ return xsdxPathDefinitionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDNotationDeclaration} instances.
+ */
+ protected XSDNotationDeclarationItemProvider xsdNotationDeclarationItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDNotationDeclaration}.
+ */
+ @Override
+ public Adapter createXSDNotationDeclarationAdapter()
+ {
+ if (xsdNotationDeclarationItemProvider == null)
+ {
+ xsdNotationDeclarationItemProvider = new XSDNotationDeclarationItemProvider(this);
+ }
+
+ return xsdNotationDeclarationItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDSchemaContent} instances.
+ */
+ protected XSDSchemaContentItemProvider xsdSchemaContentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDSchemaContent}.
+ */
+ @Override
+ public Adapter createXSDSchemaContentAdapter()
+ {
+ if (xsdSchemaContentItemProvider == null)
+ {
+ xsdSchemaContentItemProvider = new XSDSchemaContentItemProvider(this);
+ }
+
+ return xsdSchemaContentItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDAttributeDeclaration} instances.
+ */
+ protected XSDAttributeDeclarationItemProvider xsdAttributeDeclarationItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDAttributeDeclaration}.
+ */
+ @Override
+ public Adapter createXSDAttributeDeclarationAdapter()
+ {
+ if (xsdAttributeDeclarationItemProvider == null)
+ {
+ xsdAttributeDeclarationItemProvider = new XSDAttributeDeclarationItemProvider(this);
+ }
+
+ return xsdAttributeDeclarationItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDSchemaDirective} instances.
+ */
+ protected XSDSchemaDirectiveItemProvider xsdSchemaDirectiveItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDSchemaDirective}.
+ */
+ @Override
+ public Adapter createXSDSchemaDirectiveAdapter()
+ {
+ if (xsdSchemaDirectiveItemProvider == null)
+ {
+ xsdSchemaDirectiveItemProvider = new XSDSchemaDirectiveItemProvider(this);
+ }
+
+ return xsdSchemaDirectiveItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDImport} instances.
+ */
+ protected XSDImportItemProvider xsdImportItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDImport}.
+ */
+ @Override
+ public Adapter createXSDImportAdapter()
+ {
+ if (xsdImportItemProvider == null)
+ {
+ xsdImportItemProvider = new XSDImportItemProvider(this);
+ }
+
+ return xsdImportItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDSchemaCompositor} instances.
+ */
+ protected XSDSchemaCompositorItemProvider xsdSchemaCompositorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDSchemaCompositor}.
+ */
+ @Override
+ public Adapter createXSDSchemaCompositorAdapter()
+ {
+ if (xsdSchemaCompositorItemProvider == null)
+ {
+ xsdSchemaCompositorItemProvider = new XSDSchemaCompositorItemProvider(this);
+ }
+
+ return xsdSchemaCompositorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDRedefine} instances.
+ */
+ protected XSDRedefineItemProvider xsdRedefineItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDRedefine}.
+ */
+ @Override
+ public Adapter createXSDRedefineAdapter()
+ {
+ if (xsdRedefineItemProvider == null)
+ {
+ xsdRedefineItemProvider = new XSDRedefineItemProvider(this);
+ }
+
+ return xsdRedefineItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDInclude} instances.
+ */
+ protected XSDIncludeItemProvider xsdIncludeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDInclude}.
+ */
+ @Override
+ public Adapter createXSDIncludeAdapter()
+ {
+ if (xsdIncludeItemProvider == null)
+ {
+ xsdIncludeItemProvider = new XSDIncludeItemProvider(this);
+ }
+
+ return xsdIncludeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDFacet} instances.
+ */
+ protected XSDFacetItemProvider xsdFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDFacet}.
+ */
+ @Override
+ public Adapter createXSDFacetAdapter()
+ {
+ if (xsdFacetItemProvider == null)
+ {
+ xsdFacetItemProvider = new XSDFacetItemProvider(this);
+ }
+
+ return xsdFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDConstrainingFacet} instances.
+ */
+ protected XSDConstrainingFacetItemProvider xsdConstrainingFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDConstrainingFacet}.
+ */
+ @Override
+ public Adapter createXSDConstrainingFacetAdapter()
+ {
+ if (xsdConstrainingFacetItemProvider == null)
+ {
+ xsdConstrainingFacetItemProvider = new XSDConstrainingFacetItemProvider(this);
+ }
+
+ return xsdConstrainingFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDFixedFacet} instances.
+ */
+ protected XSDFixedFacetItemProvider xsdFixedFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDFixedFacet}.
+ */
+ @Override
+ public Adapter createXSDFixedFacetAdapter()
+ {
+ if (xsdFixedFacetItemProvider == null)
+ {
+ xsdFixedFacetItemProvider = new XSDFixedFacetItemProvider(this);
+ }
+
+ return xsdFixedFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDFractionDigitsFacet} instances.
+ */
+ protected XSDFractionDigitsFacetItemProvider xsdFractionDigitsFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDFractionDigitsFacet}.
+ */
+ @Override
+ public Adapter createXSDFractionDigitsFacetAdapter()
+ {
+ if (xsdFractionDigitsFacetItemProvider == null)
+ {
+ xsdFractionDigitsFacetItemProvider = new XSDFractionDigitsFacetItemProvider(this);
+ }
+
+ return xsdFractionDigitsFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDLengthFacet} instances.
+ */
+ protected XSDLengthFacetItemProvider xsdLengthFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDLengthFacet}.
+ */
+ @Override
+ public Adapter createXSDLengthFacetAdapter()
+ {
+ if (xsdLengthFacetItemProvider == null)
+ {
+ xsdLengthFacetItemProvider = new XSDLengthFacetItemProvider(this);
+ }
+
+ return xsdLengthFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMaxFacet} instances.
+ */
+ protected XSDMaxFacetItemProvider xsdMaxFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMaxFacet}.
+ */
+ @Override
+ public Adapter createXSDMaxFacetAdapter()
+ {
+ if (xsdMaxFacetItemProvider == null)
+ {
+ xsdMaxFacetItemProvider = new XSDMaxFacetItemProvider(this);
+ }
+
+ return xsdMaxFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMaxExclusiveFacet} instances.
+ */
+ protected XSDMaxExclusiveFacetItemProvider xsdMaxExclusiveFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMaxExclusiveFacet}.
+ */
+ @Override
+ public Adapter createXSDMaxExclusiveFacetAdapter()
+ {
+ if (xsdMaxExclusiveFacetItemProvider == null)
+ {
+ xsdMaxExclusiveFacetItemProvider = new XSDMaxExclusiveFacetItemProvider(this);
+ }
+
+ return xsdMaxExclusiveFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDEnumerationFacet} instances.
+ */
+ protected XSDEnumerationFacetItemProvider xsdEnumerationFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDEnumerationFacet}.
+ */
+ @Override
+ public Adapter createXSDEnumerationFacetAdapter()
+ {
+ if (xsdEnumerationFacetItemProvider == null)
+ {
+ xsdEnumerationFacetItemProvider = new XSDEnumerationFacetItemProvider(this);
+ }
+
+ return xsdEnumerationFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDRepeatableFacet} instances.
+ */
+ protected XSDRepeatableFacetItemProvider xsdRepeatableFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDRepeatableFacet}.
+ */
+ @Override
+ public Adapter createXSDRepeatableFacetAdapter()
+ {
+ if (xsdRepeatableFacetItemProvider == null)
+ {
+ xsdRepeatableFacetItemProvider = new XSDRepeatableFacetItemProvider(this);
+ }
+
+ return xsdRepeatableFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDPatternFacet} instances.
+ */
+ protected XSDPatternFacetItemProvider xsdPatternFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDPatternFacet}.
+ */
+ @Override
+ public Adapter createXSDPatternFacetAdapter()
+ {
+ if (xsdPatternFacetItemProvider == null)
+ {
+ xsdPatternFacetItemProvider = new XSDPatternFacetItemProvider(this);
+ }
+
+ return xsdPatternFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMinFacet} instances.
+ */
+ protected XSDMinFacetItemProvider xsdMinFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMinFacet}.
+ */
+ @Override
+ public Adapter createXSDMinFacetAdapter()
+ {
+ if (xsdMinFacetItemProvider == null)
+ {
+ xsdMinFacetItemProvider = new XSDMinFacetItemProvider(this);
+ }
+
+ return xsdMinFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMinExclusiveFacet} instances.
+ */
+ protected XSDMinExclusiveFacetItemProvider xsdMinExclusiveFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMinExclusiveFacet}.
+ */
+ @Override
+ public Adapter createXSDMinExclusiveFacetAdapter()
+ {
+ if (xsdMinExclusiveFacetItemProvider == null)
+ {
+ xsdMinExclusiveFacetItemProvider = new XSDMinExclusiveFacetItemProvider(this);
+ }
+
+ return xsdMinExclusiveFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMinInclusiveFacet} instances.
+ */
+ protected XSDMinInclusiveFacetItemProvider xsdMinInclusiveFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMinInclusiveFacet}.
+ */
+ @Override
+ public Adapter createXSDMinInclusiveFacetAdapter()
+ {
+ if (xsdMinInclusiveFacetItemProvider == null)
+ {
+ xsdMinInclusiveFacetItemProvider = new XSDMinInclusiveFacetItemProvider(this);
+ }
+
+ return xsdMinInclusiveFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMaxInclusiveFacet} instances.
+ */
+ protected XSDMaxInclusiveFacetItemProvider xsdMaxInclusiveFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMaxInclusiveFacet}.
+ */
+ @Override
+ public Adapter createXSDMaxInclusiveFacetAdapter()
+ {
+ if (xsdMaxInclusiveFacetItemProvider == null)
+ {
+ xsdMaxInclusiveFacetItemProvider = new XSDMaxInclusiveFacetItemProvider(this);
+ }
+
+ return xsdMaxInclusiveFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMaxLengthFacet} instances.
+ */
+ protected XSDMaxLengthFacetItemProvider xsdMaxLengthFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMaxLengthFacet}.
+ */
+ @Override
+ public Adapter createXSDMaxLengthFacetAdapter()
+ {
+ if (xsdMaxLengthFacetItemProvider == null)
+ {
+ xsdMaxLengthFacetItemProvider = new XSDMaxLengthFacetItemProvider(this);
+ }
+
+ return xsdMaxLengthFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDMinLengthFacet} instances.
+ */
+ protected XSDMinLengthFacetItemProvider xsdMinLengthFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMinLengthFacet}.
+ */
+ @Override
+ public Adapter createXSDMinLengthFacetAdapter()
+ {
+ if (xsdMinLengthFacetItemProvider == null)
+ {
+ xsdMinLengthFacetItemProvider = new XSDMinLengthFacetItemProvider(this);
+ }
+
+ return xsdMinLengthFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDTotalDigitsFacet} instances.
+ */
+ protected XSDTotalDigitsFacetItemProvider xsdTotalDigitsFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDTotalDigitsFacet}.
+ */
+ @Override
+ public Adapter createXSDTotalDigitsFacetAdapter()
+ {
+ if (xsdTotalDigitsFacetItemProvider == null)
+ {
+ xsdTotalDigitsFacetItemProvider = new XSDTotalDigitsFacetItemProvider(this);
+ }
+
+ return xsdTotalDigitsFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDWhiteSpaceFacet} instances.
+ */
+ protected XSDWhiteSpaceFacetItemProvider xsdWhiteSpaceFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDWhiteSpaceFacet}.
+ */
+ @Override
+ public Adapter createXSDWhiteSpaceFacetAdapter()
+ {
+ if (xsdWhiteSpaceFacetItemProvider == null)
+ {
+ xsdWhiteSpaceFacetItemProvider = new XSDWhiteSpaceFacetItemProvider(this);
+ }
+
+ return xsdWhiteSpaceFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDFundamentalFacet} instances.
+ */
+ protected XSDFundamentalFacetItemProvider xsdFundamentalFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDFundamentalFacet}.
+ */
+ @Override
+ public Adapter createXSDFundamentalFacetAdapter()
+ {
+ if (xsdFundamentalFacetItemProvider == null)
+ {
+ xsdFundamentalFacetItemProvider = new XSDFundamentalFacetItemProvider(this);
+ }
+
+ return xsdFundamentalFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDBoundedFacet} instances.
+ */
+ protected XSDBoundedFacetItemProvider xsdBoundedFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDBoundedFacet}.
+ */
+ @Override
+ public Adapter createXSDBoundedFacetAdapter()
+ {
+ if (xsdBoundedFacetItemProvider == null)
+ {
+ xsdBoundedFacetItemProvider = new XSDBoundedFacetItemProvider(this);
+ }
+
+ return xsdBoundedFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDCardinalityFacet} instances.
+ */
+ protected XSDCardinalityFacetItemProvider xsdCardinalityFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDCardinalityFacet}.
+ */
+ @Override
+ public Adapter createXSDCardinalityFacetAdapter()
+ {
+ if (xsdCardinalityFacetItemProvider == null)
+ {
+ xsdCardinalityFacetItemProvider = new XSDCardinalityFacetItemProvider(this);
+ }
+
+ return xsdCardinalityFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDNumericFacet} instances.
+ */
+ protected XSDNumericFacetItemProvider xsdNumericFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDNumericFacet}.
+ */
+ @Override
+ public Adapter createXSDNumericFacetAdapter()
+ {
+ if (xsdNumericFacetItemProvider == null)
+ {
+ xsdNumericFacetItemProvider = new XSDNumericFacetItemProvider(this);
+ }
+
+ return xsdNumericFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDOrderedFacet} instances.
+ */
+ protected XSDOrderedFacetItemProvider xsdOrderedFacetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDOrderedFacet}.
+ */
+ @Override
+ public Adapter createXSDOrderedFacetAdapter()
+ {
+ if (xsdOrderedFacetItemProvider == null)
+ {
+ xsdOrderedFacetItemProvider = new XSDOrderedFacetItemProvider(this);
+ }
+
+ return xsdOrderedFacetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.xsd.XSDDiagnostic} instances.
+ */
+ protected XSDDiagnosticItemProvider xsdDiagnosticItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDDiagnostic}.
+ */
+ @Override
+ public Adapter createXSDDiagnosticAdapter()
+ {
+ if (xsdDiagnosticItemProvider == null)
+ {
+ xsdDiagnosticItemProvider = new XSDDiagnosticItemProvider(this);
+ }
+
+ return xsdDiagnosticItemProvider;
+ }
+ /**
+ * This returns the root adapter factory that contains this factory.
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory()
+ {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
+ {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ @Override
+ public boolean isFactoryForType(Object type)
+ {
+ return super.isFactoryForType(type) || supportedTypes.contains(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type)
+ {
+ return super.adapt(notifier, this);
+ }
+
+ @Override
+ public Object adapt(Object object, Object type)
+ {
+ // This is a kludge to deal with enumerators, which crash the doSwitch.
+ //
+ if (object instanceof EObject && ((EObject)object).eClass() == null)
+ {
+ return null;
+ }
+
+ if (isFactoryForType(type))
+ {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter)))
+ {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener)
+ {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener)
+ {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ */
+ public void fireNotifyChanged(Notification notification)
+ {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null)
+ {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ @Override
+ protected void associate(Adapter adapter, Notifier target)
+ {
+ super.associate(adapter, target);
+ if (adapter != null)
+ {
+ disposable.add(adapter);
+ }
+ }
+
+ public void dispose()
+ {
+ disposable.dispose();
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDLengthFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDLengthFacetItemProvider.java
new file mode 100644
index 0000000..dc25087
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDLengthFacetItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDLengthFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDLengthFacet} object.
+ */
+public class XSDLengthFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDLengthFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueLengthFacet_description"),
+ xsdPackage.getXSDLengthFacet_Value(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDLengthFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDLengthFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDLengthFacet xsdLengthFacet = ((XSDLengthFacet)object);
+ String result = xsdLengthFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDLengthFacet_Value()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxExclusiveFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxExclusiveFacetItemProvider.java
new file mode 100644
index 0000000..435303c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxExclusiveFacetItemProvider.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMaxExclusiveFacet} object.
+ */
+public class XSDMaxExclusiveFacetItemProvider
+ extends XSDMaxFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMaxExclusiveFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueMaxExclusiveFacet_description"),
+ xsdPackage.getXSDMaxFacet_Value(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDMaxExclusiveFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDMaxExclusiveFacet");
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxFacetItemProvider.java
new file mode 100644
index 0000000..1e10f32
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxFacetItemProvider.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.xsd.XSDMaxFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMaxFacet} object.
+ */
+public class XSDMaxFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMaxFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDMaxFacet xsdMaxFacet = (XSDMaxFacet)object;
+ String result = xsdMaxFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDMaxFacet_Value())
+ {
+ fireNotifyChanged(msg);
+ }
+ else
+ {
+ super.notifyChanged(msg);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxInclusiveFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxInclusiveFacetItemProvider.java
new file mode 100644
index 0000000..a0405ac
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxInclusiveFacetItemProvider.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMaxInclusiveFacet} object.
+ */
+public class XSDMaxInclusiveFacetItemProvider
+ extends XSDMaxFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMaxInclusiveFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueMaxInclusiveFacet_description"),
+ xsdPackage.getXSDMaxFacet_Value(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDMaxInclusiveFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDMaxInclusiveFacet");
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxLengthFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxLengthFacetItemProvider.java
new file mode 100644
index 0000000..a140b28
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMaxLengthFacetItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDMaxLengthFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMaxLengthFacet} object.
+ */
+public class XSDMaxLengthFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMaxLengthFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueMaxLengthFacet_description"),
+ xsdPackage.getXSDMaxLengthFacet_Value(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDMaxLengthFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDMaxLengthFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = ((XSDMaxLengthFacet)object);
+ String result = xsdMaxLengthFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinExclusiveFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinExclusiveFacetItemProvider.java
new file mode 100644
index 0000000..8631fa8
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinExclusiveFacetItemProvider.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMinExclusiveFacet} object.
+ */
+public class XSDMinExclusiveFacetItemProvider
+ extends XSDMinFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMinExclusiveFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueMinExclusiveFacet_description"),
+ xsdPackage.getXSDMinFacet_Value(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDMinExclusiveFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDMinExclusiveFacet");
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinFacetItemProvider.java
new file mode 100644
index 0000000..fc1f80e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinFacetItemProvider.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.xsd.XSDMinFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMinFacet} object.
+ */
+public class XSDMinFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMinFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDMinFacet xsdMinFacet = ((XSDMinFacet)object);
+ String result = xsdMinFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDMinFacet_Value()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinInclusiveFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinInclusiveFacetItemProvider.java
new file mode 100644
index 0000000..49fd502
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinInclusiveFacetItemProvider.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMinInclusiveFacet} object.
+ */
+public class XSDMinInclusiveFacetItemProvider
+ extends XSDMinFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMinInclusiveFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueMinInclusiveFacet_description"),
+ xsdPackage.getXSDMinFacet_Value(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDMinInclusiveFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDMinInclusiveFacet");
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinLengthFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinLengthFacetItemProvider.java
new file mode 100644
index 0000000..fcb0d07
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDMinLengthFacetItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDMinLengthFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDMinLengthFacet} object.
+ */
+public class XSDMinLengthFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDMinLengthFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueMinLengthFacet_description"),
+ xsdPackage.getXSDMinLengthFacet_Value(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDMinLengthFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDMinLengthFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = ((XSDMinLengthFacet)object);
+ String result = xsdMinLengthFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDModelGroupDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDModelGroupDefinitionItemProvider.java
new file mode 100644
index 0000000..fdffd9b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDModelGroupDefinitionItemProvider.java
@@ -0,0 +1,166 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDModelGroupDefinition} object.
+ */
+public class XSDModelGroupDefinitionItemProvider
+ extends XSDRedefinableComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDModelGroupDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfModelGroupDefinition_description"),
+ xsdPackage.getXSDModelGroupDefinition_Annotation(),
+ false));
+
+ // This is for the resolvedModelGroupDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolvedModelGroupDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ResolvedModelGroupDefinition_description"),
+ xsdPackage.getXSDModelGroupDefinition_ResolvedModelGroupDefinition(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDModelGroupDefinition_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDModelGroupDefinition_ModelGroup());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDModelGroupDefinition.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = ((XSDModelGroupDefinition)object);
+ XSDModelGroupDefinition resolvedModelGroupDefinition = xsdModelGroupDefinition.getResolvedModelGroupDefinition();
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (resolvedModelGroupDefinition.getContainer() == null ?
+ "full/obj16/XSDModelGroupDefinition" :
+ xsdModelGroupDefinition.getResolvedModelGroupDefinition() == xsdModelGroupDefinition ?
+ "full/obj16/XSDModelGroupDefinition" :
+ "full/obj16/XSDModelGroupUse");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = ((XSDModelGroupDefinition)object);
+ String result =
+ xsdModelGroupDefinition.isModelGroupDefinitionReference() ?
+ xsdModelGroupDefinition.getQName() :
+ xsdModelGroupDefinition.getName();
+ return result == null ? XSDEditPlugin.INSTANCE.getString("_UI_Absent_label") : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDModelGroupDefinition_ModelGroup() ||
+ msg.getFeature() == xsdPackage.getXSDModelGroupDefinition_ResolvedModelGroupDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDModelGroupDefinition_Annotation())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDModelGroupDefinition mgd = (XSDModelGroupDefinition) object;
+
+ if (!mgd.isModelGroupDefinitionReference())
+ {
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDModelGroupDefinition_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ // all, choice, and sequence model groups
+ addModelGroupChildParameters(newChildDescriptors, xsdPackage.getXSDModelGroupDefinition_ModelGroup(), true, false);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDModelGroupItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDModelGroupItemProvider.java
new file mode 100644
index 0000000..1d15007
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDModelGroupItemProvider.java
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDModelGroup} object.
+ */
+public class XSDModelGroupItemProvider
+ extends XSDTermItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDModelGroupItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the compositor feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Compositor_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Compositor_description"),
+ xsdPackage.getXSDModelGroup_Compositor(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfModelGroup_description"),
+ xsdPackage.getXSDModelGroup_Annotation(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDModelGroup_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDModelGroup_Contents());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDModelGroup.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDModelGroup xsdModelGroup = ((XSDModelGroup)object);
+ if (XSDCompositor.CHOICE_LITERAL == xsdModelGroup.getCompositor())
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDModelGroupChoice");
+ }
+ else if (XSDCompositor.ALL_LITERAL == xsdModelGroup.getCompositor())
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDModelGroupAll");
+ }
+ else
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDModelGroupSequence");
+ }
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDModelGroup xsdModelGroup = ((XSDModelGroup)object);
+ return xsdModelGroup.getCompositor().getName();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)msg.getNotifier();
+ if (msg.getFeature() == xsdPackage.getXSDModelGroup_Compositor() ||
+ msg.getFeature() == xsdPackage.getXSDModelGroup_Contents() ||
+ msg.getFeature() == xsdPackage.getXSDModelGroup_Annotation())
+ {
+ fireNotifyChanged(msg);
+
+ XSDConcreteComponent container = xsdModelGroup.getContainer();
+ if (container instanceof XSDParticle)
+ {
+ ((ItemProviderAdapter)adapterFactory.adapt(container, IItemLabelProvider.class)).fireNotifyChanged
+ (new ENotificationImpl
+ ((InternalEObject)container,
+ msg.getEventType(),
+ (EStructuralFeature)msg.getFeature(),
+ msg.getOldValue(),
+ msg.getNewValue(),
+ msg.getPosition()));
+ }
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDModelGroup mg = (XSDModelGroup) object;
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDModelGroup_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ // element declaration under particle
+ XSDElementDeclaration ed = createElementDeclaration(mg);
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDModelGroup_Contents(), createParticle(ed, false)));
+
+ // element declaration reference under particle
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDModelGroup_Contents(), createParticle(mg.resolveElementDeclaration(""), true)));
+
+ // for choice and sequence model groups only...
+ if (mg.getCompositor() != XSDCompositor.ALL_LITERAL)
+ {
+ // choice and sequence model groups under particles
+ addModelGroupChildParameters(newChildDescriptors, xsdPackage.getXSDModelGroup_Contents(), false, true);
+
+ // model group definition reference under particle
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDModelGroup_Contents(), createParticle(mg.resolveModelGroupDefinition(""), true)));
+
+ // element wildcard under particle
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDModelGroup_Contents(), createParticle(xsdFactory.createXSDWildcard(), false)));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNamedComponentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNamedComponentItemProvider.java
new file mode 100644
index 0000000..5ad361d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNamedComponentItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDNamedComponent} object.
+ */
+public class XSDNamedComponentItemProvider
+ extends XSDComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDNamedComponentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ createNamePropertyDescriptor(object);
+ createTargetNamespacePropertyDescriptor(object);
+ }
+
+ return itemPropertyDescriptors;
+ }
+
+ protected void createNamePropertyDescriptor(Object object)
+ {
+ // This is for the name feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Name_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Name_description"),
+ xsdPackage.getXSDNamedComponent_Name(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ protected void createTargetNamespacePropertyDescriptor(Object object)
+ {
+ // This is for the targetNamespace feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_description"),
+ xsdPackage.getXSDNamedComponent_TargetNamespace(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDNamedComponent_Name() ||
+ msg.getFeature() == xsdPackage.getXSDNamedComponent_TargetNamespace()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNotationDeclarationItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNotationDeclarationItemProvider.java
new file mode 100644
index 0000000..5300041
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNotationDeclarationItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDNotationDeclaration;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDNotationDeclaration} object.
+ */
+public class XSDNotationDeclarationItemProvider
+ extends XSDNamedComponentItemProvider
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDNotationDeclarationItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the systemIdentifier feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_SystemIdentifier_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_SystemIdentifier_description"),
+ xsdPackage.getXSDNotationDeclaration_SystemIdentifier(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the publicIdentifier feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_PublicIdentifier_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_PublicIdentifier_description"),
+ xsdPackage.getXSDNotationDeclaration_PublicIdentifier(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfNotation_description"),
+ xsdPackage.getXSDNotationDeclaration_Annotation(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDNotationDeclaration_Annotation());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDNotationDeclaration.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDNotationDeclaration");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDNotationDeclaration xsdNotationDeclaration = ((XSDNotationDeclaration)object);
+ String result = xsdNotationDeclaration.getName();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDNotationDeclaration_SystemIdentifier() ||
+ msg.getFeature() == xsdPackage.getXSDNotationDeclaration_PublicIdentifier() ||
+ msg.getFeature() == xsdPackage.getXSDNotationDeclaration_Annotation())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDNotationDeclaration_Annotation(), xsdFactory.createXSDAnnotation()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNumericFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNumericFacetItemProvider.java
new file mode 100644
index 0000000..4e86bcf
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDNumericFacetItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDNumericFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDNumericFacet} object.
+ */
+public class XSDNumericFacetItemProvider
+ extends XSDFundamentalFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDNumericFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueNumericFacet_description"),
+ xsdPackage.getXSDNumericFacet_Value(),
+ true,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDNumericFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDNumericFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDNumericFacet xsdNumericFacet = ((XSDNumericFacet)object);
+ return xsdNumericFacet.isValue() ? "true" : "false";
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDNumericFacet_Value()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDOrderedFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDOrderedFacetItemProvider.java
new file mode 100644
index 0000000..caaa2f6
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDOrderedFacetItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDOrderedFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDOrderedFacet} object.
+ */
+public class XSDOrderedFacetItemProvider
+ extends XSDFundamentalFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDOrderedFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueOrderedFacet_description"),
+ xsdPackage.getXSDOrderedFacet_Value(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDOrderedFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDOrderedFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDOrderedFacet xsdOrderedFacet = ((XSDOrderedFacet)object);
+ return xsdOrderedFacet.getValue().getName();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDOrderedFacet_Value()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDParticleContentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDParticleContentItemProvider.java
new file mode 100644
index 0000000..e07a0b7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDParticleContentItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDParticleContent} object.
+ */
+public class XSDParticleContentItemProvider
+ extends XSDConcreteComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDParticleContentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDParticleItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDParticleItemProvider.java
new file mode 100644
index 0000000..cd0cc8c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDParticleItemProvider.java
@@ -0,0 +1,389 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandWrapper;
+import org.eclipse.emf.common.command.UnexecutableCommand;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedImage;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptorDecorator;
+
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDParticle} object.
+ */
+public class XSDParticleItemProvider
+ extends XSDComplexTypeContentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDParticleItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ protected XSDParticleContent getDelegate(XSDParticle xsdParticle)
+ {
+ return xsdParticle.getContent();
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ itemPropertyDescriptors = null;
+ super.getPropertyDescriptors(object);
+
+ XSDParticle xsdParticle = (XSDParticle)object;
+ XSDParticleContent xsdParticleContent = getDelegate(xsdParticle);
+ if (xsdParticleContent != null)
+ {
+ for (IItemPropertyDescriptor delegatedItemPropertyDescriptor : itemDelegator.getPropertyDescriptors(xsdParticleContent))
+ {
+ itemPropertyDescriptors.add(new ItemPropertyDescriptorDecorator(xsdParticleContent, delegatedItemPropertyDescriptor));
+ }
+ }
+
+
+ // This is for the minOccurs feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_MinOccurs_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_MinOccurs_description"),
+ xsdPackage.getXSDParticle_MinOccurs(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ // This is for the maxOccurs feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_MaxOccurs_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_MaxOccurs_description"),
+ xsdPackage.getXSDParticle_MaxOccurs(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.clear();
+/*
+ XSDParticle xsdParticle = ((XSDParticle)object);
+ childrenFeatures.add(xsdPackage.getXSDParticle_Content());
+*/
+ }
+ return childrenFeatures;
+ }
+
+ @Override
+ public Collection<?> getChildren(Object object)
+ {
+ XSDParticle xsdParticle = (XSDParticle)object;
+ XSDParticleContent xsdParticleContent = getDelegate(xsdParticle);
+ if (xsdParticleContent != null)
+ {
+ return itemDelegator.getChildren(xsdParticleContent);
+ }
+ else
+ {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+ @Override
+ public boolean hasChildren(Object object)
+ {
+ XSDParticle xsdParticle = (XSDParticle)object;
+ XSDParticleContent xsdParticleContent = getDelegate(xsdParticle);
+ return
+ xsdParticleContent != null && itemDelegator.hasChildren(xsdParticleContent);
+ }
+
+ /**
+ * This returns XSDParticle.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDParticle xsdParticle = ((XSDParticle)object);
+ XSDParticleContent xsdParticleContent = getDelegate(xsdParticle);
+ if (xsdParticleContent != null)
+ {
+ Collection<Object> images = new ArrayList<Object>();
+ images.add(itemDelegator.getImage(xsdParticleContent));
+ String imageName = "full/obj16/XSDOccurrence";
+ int minOccurs = xsdParticle.getMinOccurs();
+ int maxOccurs = xsdParticle.getMaxOccurs();
+ if (minOccurs >= 0 && (minOccurs <= maxOccurs || maxOccurs == -1))
+ {
+ switch (minOccurs)
+ {
+ case 0:
+ {
+ imageName += "Zero";
+ break;
+ }
+ case 1:
+ {
+ imageName += "One";
+ break;
+ }
+ default:
+ {
+ imageName += "N";
+ break;
+ }
+ }
+
+ if (minOccurs != maxOccurs)
+ {
+ switch (maxOccurs)
+ {
+ case -1:
+ {
+ imageName += "ToUnbounded";
+ break;
+ }
+ case 0:
+ {
+ break;
+ }
+ case 1:
+ {
+ imageName += "ToOne";
+ break;
+ }
+ default:
+ {
+ imageName += xsdParticle.getMinOccurs() <= 1 ? "ToN" : "ToM";
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ imageName += "NToM";
+ }
+
+ if (!imageName.equals("full/obj16/XSDOccurrenceOne"))
+ {
+ images.add(XSDEditPlugin.INSTANCE.getImage(imageName));
+ }
+
+ return new ComposedImage(images);
+ }
+ else
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDParticle");
+ }
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDParticle xsdParticle = ((XSDParticle)object);
+ XSDParticleContent xsdParticleContent = getDelegate(xsdParticle);
+ if (xsdParticleContent != null)
+ {
+ return itemDelegator.getText(xsdParticleContent);
+ }
+ else
+ {
+ return
+ xsdParticle.getMinOccurs() +
+ ".." +
+ (xsdParticle.getMaxOccurs() == -1 ? "unbounded" : Integer.toString(xsdParticle.getMaxOccurs()));
+ }
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDParticle_MinOccurs() ||
+ msg.getFeature() == xsdPackage.getXSDParticle_MaxOccurs() ||
+ msg.getFeature() == xsdPackage.getXSDParticle_Content() ||
+ msg.getFeature() == xsdPackage.getXSDParticle_Term()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This returns a list of child descriptors based on the particle content,
+ * not the particle itself.
+ */
+ @Override
+ public Collection<?> getNewChildDescriptors(Object object, EditingDomain domain, Object sibling)
+ {
+ Object content = ((XSDParticle) object).getContent();
+ return domain.getNewChildDescriptors(content, sibling);
+ }
+
+ /**
+ * This returns Remove and CreateChild commands (at least) that are based
+ * on the attributeUse content, not the attributeUse itself.
+ */
+ @Override
+ public Command createCommand(final Object object, final EditingDomain domain, Class<? extends Command> commandClass, CommandParameter commandParameter)
+ {
+ if (commandClass == RemoveCommand.class ||
+ commandClass == CreateChildCommand.class)
+ {
+ Object owner = ((XSDParticle) object).getContent();
+ if (owner == null)
+ {
+ return UnexecutableCommand.INSTANCE;
+ }
+
+ commandParameter.setOwner(owner);
+
+ // RemoveCommand requires a wrapper that returns the correct affected
+ // object after an execute or redo (the particle or attribute use
+ // itself, instead of its content)
+ if (commandClass == RemoveCommand.class)
+ {
+ return new CommandWrapper(
+ domain.createCommand(commandClass, commandParameter))
+ {
+ private Collection<?> affectedObjects = Collections.EMPTY_SET;
+
+ @Override
+ public void execute()
+ {
+ super.execute();
+ affectedObjects = Collections.singleton(object);
+ }
+
+ @Override
+ public void undo()
+ {
+ super.undo();
+ affectedObjects = super.getAffectedObjects();
+ }
+
+ @Override
+ public void redo()
+ {
+ super.redo();
+ affectedObjects = Collections.singleton(object);
+ }
+
+ @Override
+ public Collection<?> getAffectedObjects()
+ {
+ return affectedObjects;
+ }
+ };
+ }
+
+ // CreateChildCommand handles its affected objects correctly
+ return domain.createCommand(commandClass, commandParameter);
+ }
+ return super.createCommand(object, domain, commandClass, commandParameter);
+ }
+
+/*
+ protected Command factorRemoveCommand(EditingDomain domain, CommandParameter commandParameter)
+ {
+ XSDParticle xsdParticle = (XSDParticle)commandParameter.getRefOwner();
+ return
+ domain.createCommand
+ (RemoveCommand.class,
+ new CommandParameter
+ (getDelegate(xsdParticle),
+ commandParameter.getFeature(),
+ commandParameter.getCollection(),
+ commandParameter.getIndex()));
+ }
+
+ protected Command factorAddCommand(EditingDomain domain, CommandParameter commandParameter)
+ {
+ XSDParticle xsdParticle = (XSDParticle)commandParameter.getRefOwner();
+ return
+ domain.createCommand
+ (AddCommand.class,
+ new CommandParameter
+ (getDelegate(xsdParticle),
+ commandParameter.getFeature(),
+ commandParameter.getCollection(),
+ commandParameter.getIndex()));
+ }
+
+ protected Command factorMoveCommand(EditingDomain domain, CommandParameter commandParameter)
+ {
+ XSDParticle xsdParticle = (XSDParticle)commandParameter.getRefOwner();
+ return
+ domain.createCommand
+ (MoveCommand.class,
+ new CommandParameter
+ (getDelegate(xsdParticle),
+ commandParameter.getFeature(),
+ commandParameter.getValue(),
+ commandParameter.getIndex()));
+ }
+*/
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDPatternFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDPatternFacetItemProvider.java
new file mode 100644
index 0000000..3424fa9
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDPatternFacetItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDPatternFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDPatternFacet} object.
+ */
+public class XSDPatternFacetItemProvider
+ extends XSDRepeatableFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDPatternFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValuePatternFacet_description"),
+ xsdPackage.getXSDPatternFacet_Value(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDPatternFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDPatternFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDPatternFacet xsdPatternFacet = ((XSDPatternFacet)object);
+ String result = xsdPatternFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefinableComponentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefinableComponentItemProvider.java
new file mode 100644
index 0000000..87b0d6a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefinableComponentItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDRedefinableComponent} object.
+ */
+public class XSDRedefinableComponentItemProvider
+ extends XSDNamedComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDRedefinableComponentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefineContentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefineContentItemProvider.java
new file mode 100644
index 0000000..4f04854
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefineContentItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDRedefineContent} object.
+ */
+public class XSDRedefineContentItemProvider
+ extends XSDSchemaContentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDRedefineContentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefineItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefineItemProvider.java
new file mode 100644
index 0000000..455f2b6
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRedefineItemProvider.java
@@ -0,0 +1,138 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.xsd.XSDRedefine;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDRedefine} object.
+ */
+public class XSDRedefineItemProvider
+ extends XSDSchemaCompositorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDRedefineItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDRedefine_Contents());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDRedefine.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDRedefine");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDRedefine xsdRedefine = ((XSDRedefine)object);
+ String result = xsdRedefine.getSchemaLocation();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDRedefine_Annotations() ||
+ msg.getFeature() == xsdPackage.getXSDRedefine_Contents()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDRedefine r = (XSDRedefine) object;
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDRedefine_Contents(), xsdFactory.createXSDAnnotation()));
+
+ // model group definition
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDRedefine_Contents(), createModelGroupDefinition(r)));
+
+ // attribute group definition
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDRedefine_Contents(), createAttributeGroupDefinition(r)));
+
+ // atomic, list, and union simple type definitions
+ addSimpleTypeDefinitionChildParameters(newChildDescriptors, r, xsdPackage.getXSDRedefine_Contents(), true, true, true);
+
+ // complex type definition
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDRedefine_Contents(), createComplexTypeDefinition(r)));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRepeatableFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRepeatableFacetItemProvider.java
new file mode 100644
index 0000000..3a775e9
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDRepeatableFacetItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDRepeatableFacet} object.
+ */
+public class XSDRepeatableFacetItemProvider
+ extends XSDConstrainingFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDRepeatableFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaCompositorItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaCompositorItemProvider.java
new file mode 100644
index 0000000..7c7e137
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaCompositorItemProvider.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDSchemaCompositor} object.
+ */
+public class XSDSchemaCompositorItemProvider
+ extends XSDSchemaDirectiveItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDSchemaCompositorItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDSchemaCompositor_IncorporatedSchema()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaContentItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaContentItemProvider.java
new file mode 100644
index 0000000..bb0dcfe
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaContentItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDSchemaContent} object.
+ */
+public class XSDSchemaContentItemProvider
+ extends XSDConcreteComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDSchemaContentItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaDirectiveItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaDirectiveItemProvider.java
new file mode 100644
index 0000000..0bd9024
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaDirectiveItemProvider.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDSchemaDirective} object.
+ */
+public class XSDSchemaDirectiveItemProvider
+ extends XSDSchemaContentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDSchemaDirectiveItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the schemaLocation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_SchemaLocation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_SchemaLocationOfDirective_description"),
+ xsdPackage.getXSDSchemaDirective_SchemaLocation(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDSchemaDirective_SchemaLocation())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaItemProvider.java
new file mode 100644
index 0000000..4d99118
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSchemaItemProvider.java
@@ -0,0 +1,371 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CopyCommand;
+import org.eclipse.emf.edit.command.InitializeCopyCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDSchema} object.
+ */
+public class XSDSchemaItemProvider
+ extends XSDComponentItemProvider
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDSchemaItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+ createSchemaLocationPropertyDescriptor(object);
+ createTargetNamespacePropertyDescriptor(object);
+ createFinalDefaultPropertyDescriptor(object);
+ createBlockDefaultPropertyDescriptor(object);
+ createAttributeFormDefaultPropertyDescriptor(object);
+ createElementFormDefaultPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+
+ protected void createSchemaLocationPropertyDescriptor(Object object)
+ {
+ // This is for the schemaLocation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_SchemaLocation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_SchemaLocationOfSchema_description"),
+ xsdPackage.getXSDSchema_SchemaLocation(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ protected void createTargetNamespacePropertyDescriptor(Object object)
+ {
+ // This is for the targetNamespace feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespace_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_TargetNamespaceOfSchema_description"),
+ xsdPackage.getXSDSchema_TargetNamespace(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ if ("".equals(value))
+ {
+ super.setPropertyValue(o, null);
+ }
+ else
+ {
+ super.setPropertyValue(o, value);
+ }
+ }
+ });
+ }
+
+ protected void createFinalDefaultPropertyDescriptor(Object object)
+ {
+ // This is for the finalDefault feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_FinalDefault_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_FinalDefault_description"),
+ xsdPackage.getXSDSchema_FinalDefault(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDSchema)o).getStringFinalDefault();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDSchema)o).setStringFinalDefault((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("extension");
+ result.add("restriction");
+ result.add("restriction extension");
+ return result;
+ }
+ });
+ }
+
+ protected void createBlockDefaultPropertyDescriptor(Object object)
+ {
+ // This is for the blockDefault feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_BlockDefault_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_BlockDefault_description"),
+ xsdPackage.getXSDSchema_BlockDefault(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDSchema)o).getStringBlockDefault();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDSchema)o).setStringBlockDefault((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("extension");
+ result.add("restriction");
+ result.add("substitution");
+ result.add("extension restriction");
+ result.add("extension restriction substitution");
+ result.add("extension substitution");
+ result.add("restriction substitution");
+ return result;
+ }
+ });
+ }
+
+ protected void createElementFormDefaultPropertyDescriptor(Object object)
+ {
+ // This is for the elementFormDefault feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ElementFormDefault_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ElementFormDefault_description"),
+ xsdPackage.getXSDSchema_ElementFormDefault(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ protected void createAttributeFormDefaultPropertyDescriptor(Object object)
+ {
+ // This is for the elementFormDefault feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeFormDefault_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AttributeFormDefault_description"),
+ xsdPackage.getXSDSchema_AttributeFormDefault(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDSchema_Contents());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDSchema.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDSchema");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDSchema xsdSchema = (XSDSchema)object;
+ String result = xsdSchema.getSchemaLocation();
+ if (result == null)
+ {
+ return "";
+ }
+ else
+ {
+ return URI.createURI(result).lastSegment();
+ }
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDSchema_SchemaLocation() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_TypeDefinitions() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_ElementDeclarations() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_AttributeGroupDefinitions() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_NotationDeclarations() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_Contents() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_ModelGroupDefinitions() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_AttributeDeclarations() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_AttributeFormDefault() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_ElementFormDefault() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_BlockDefault() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_FinalDefault() ||
+ msg.getFeature() == xsdPackage.getXSDSchema_Annotations()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDSchema xsdSchema = (XSDSchema) object;
+
+ // If the schema isn't a really bad one...
+ //
+ if (xsdSchema.getSchemaForSchema() != null)
+ {
+ EReference schemaContents = xsdPackage.getXSDSchema_Contents();
+ // annotation
+ newChildDescriptors.add(createChildParameter(schemaContents, xsdFactory.createXSDAnnotation()));
+
+ // import
+ newChildDescriptors.add(createChildParameter(schemaContents, xsdFactory.createXSDImport()));
+
+ // include
+ XSDInclude i = xsdFactory.createXSDInclude();
+ i.setSchemaLocation("");
+ newChildDescriptors.add(createChildParameter(schemaContents, i));
+
+ // redefine
+ XSDRedefine r = xsdFactory.createXSDRedefine();
+ r.setSchemaLocation("");
+ newChildDescriptors.add(createChildParameter(schemaContents, r));
+
+ // element declaration
+ newChildDescriptors.add(createChildParameter(schemaContents, createElementDeclaration(xsdSchema)));
+
+ // attribute declaration
+ newChildDescriptors.add(createChildParameter(schemaContents, createAttributeDeclaration(xsdSchema)));
+
+ // model group definition
+ newChildDescriptors.add(createChildParameter(schemaContents, createModelGroupDefinition(xsdSchema)));
+
+ // attribute group definition
+ newChildDescriptors.add(createChildParameter(schemaContents, createAttributeGroupDefinition(xsdSchema)));
+
+ // atomic, list, and union simple type definitions
+ addSimpleTypeDefinitionChildParameters(newChildDescriptors, xsdSchema, schemaContents, true, true, true);
+
+ // complex type definition
+ newChildDescriptors.add(createChildParameter(schemaContents, createComplexTypeDefinition(xsdSchema)));
+
+ // notation declaration
+ newChildDescriptors.add(createChildParameter(schemaContents, createNotationDeclaration(xsdSchema)));
+ }
+ }
+
+ /**
+ * We need to copy the prefix to namespace map as well as the schema for schema prefix.
+ */
+ @Override
+ protected Command createInitializeCopyCommand(EditingDomain domain, EObject owner, CopyCommand.Helper helper)
+ {
+ return
+ new InitializeCopyCommand(domain, owner, helper)
+ {
+ @Override
+ protected Collection<? extends EAttribute> getAttributesToCopy()
+ {
+ Collection<EAttribute> result = new ArrayList<EAttribute>(this.owner.eClass().getEAllAttributes());
+ result.remove(xsdPackage.getXSDConcreteComponent_Element());
+ result.remove(xsdPackage.getXSDSchema_Document());
+ return result;
+ }
+
+ @Override
+ protected void copyAttributes()
+ {
+ XSDSchema ownerSchema = (XSDSchema)owner;
+ XSDSchema copySchema = (XSDSchema)copy;
+ copySchema.getQNamePrefixToNamespaceMap().putAll(ownerSchema.getQNamePrefixToNamespaceMap());
+ copySchema.setSchemaForSchemaQNamePrefix(ownerSchema.getSchemaForSchemaQNamePrefix());
+ super.copyAttributes();
+ }
+ };
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDScopeItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDScopeItemProvider.java
new file mode 100644
index 0000000..48dd730
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDScopeItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDScope} object.
+ */
+public class XSDScopeItemProvider
+ extends XSDItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDScopeItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSemanticItemProviderAdapterFactory.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSemanticItemProviderAdapterFactory.java
new file mode 100644
index 0000000..03851b9
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSemanticItemProviderAdapterFactory.java
@@ -0,0 +1,938 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.NotificationImpl;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ItemProvider;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDNamespaceConstraintCategory;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDWildcard;
+
+
+public class XSDSemanticItemProviderAdapterFactory extends XSDItemProviderAdapterFactory
+{
+ public XSDSemanticItemProviderAdapterFactory()
+ {
+ super();
+ }
+
+ @Override
+ public Adapter createXSDSchemaAdapter()
+ {
+ // if (xsdSchemaItemProvider == null)
+ {
+ xsdSchemaItemProvider =
+ new XSDSchemaItemProvider(this)
+ {
+ protected List<Object> children;
+
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public Collection<?> getChildren(Object object)
+ {
+ if (children == null)
+ {
+ final XSDSchema xsdSchema = (XSDSchema)object;
+ class ChildItemProvider extends ItemProvider
+ {
+ Collection<?> children;
+ public ChildItemProvider(String label, Object image, Collection<?> children)
+ {
+ super(label, image, xsdSchema);
+ this.children = children;
+ }
+ @Override
+ public boolean hasChildren(Object o)
+ {
+ return !children.isEmpty();
+ }
+ @Override
+ public Collection<?> getChildren(Object o)
+ {
+ return children;
+ }
+ }
+
+ children = new ArrayList<Object>();
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_Elements_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDElementDeclaration"),
+ xsdSchema.getElementDeclarations()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_Attributes_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDAttributeDeclaration"),
+ xsdSchema.getAttributeDeclarations()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_AttributeGroups_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDAttributeGroupDefinition"),
+ xsdSchema.getAttributeGroupDefinitions()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_Types_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDTypeDefinition"),
+ xsdSchema.getTypeDefinitions()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_ModelGroups_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDModelGroupDefinition"),
+ xsdSchema.getModelGroupDefinitions()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_Notations_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDNotationDeclaration"),
+ xsdSchema.getNotationDeclarations()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_IdentityConstraints_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDIdentityConstraintDefinitionKey"),
+ xsdSchema.getIdentityConstraintDefinitions()));
+ children.add
+ (new ChildItemProvider
+ (XSDEditPlugin.INSTANCE.getString("_UI_Annotations_label"),
+ XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDAnnotation"),
+ xsdSchema.getAnnotations()));
+ }
+ return children;
+ }
+
+ @Override
+ public void notifyChanged(final Notification msg)
+ {
+ class CagetoryNotification extends NotificationImpl
+ {
+ protected Object category;
+ public CagetoryNotification(Object category)
+ {
+ super(msg.getEventType(), msg.getOldValue(), msg.getNewValue(), msg.getPosition());
+ this.category = category;
+ }
+
+ @Override
+ public Object getNotifier()
+ {
+ return category;
+ }
+ @Override
+ public Object getFeature()
+ {
+ return msg.getFeature();
+ }
+ }
+
+ if (msg.getFeature() == xsdPackage.getXSDSchema_ElementDeclarations())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(0)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_AttributeDeclarations())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(1)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_AttributeGroupDefinitions())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(2)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_TypeDefinitions())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(3)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_ModelGroupDefinitions())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(4)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_NotationDeclarations())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(5)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_IdentityConstraintDefinitions())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(6)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_Annotations())
+ {
+ this.fireNotifyChanged(new CagetoryNotification(children.get(7)));
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSchema_SchemaLocation())
+ {
+ this.fireNotifyChanged(msg);
+ return;
+ }
+
+ super.notifyChanged(msg);
+ }
+ };
+ }
+
+ return xsdSchemaItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDElementDeclarationAdapter()
+ {
+ if (xsdElementDeclarationItemProvider == null)
+ {
+ xsdElementDeclarationItemProvider =
+ new XSDElementDeclarationItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDElementDeclaration_AnonymousTypeDefinition());
+ childrenFeatures.add(1, xsdPackage.getXSDElementDeclaration_TypeDefinition());
+ }
+ return childrenFeatures;
+ }
+
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(0);
+ }
+ else
+ {
+ return result;
+ }
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)object);
+ XSDElementDeclaration resolvedXSDElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
+ return resolvedXSDElementDeclaration.getName();
+ }
+ };
+ }
+
+ return xsdElementDeclarationItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDAttributeDeclarationAdapter()
+ {
+ if (xsdAttributeDeclarationItemProvider == null)
+ {
+ xsdAttributeDeclarationItemProvider =
+ new XSDAttributeDeclarationItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDAttributeDeclaration_AnonymousTypeDefinition());
+ childrenFeatures.add(1, xsdPackage.getXSDAttributeDeclaration_TypeDefinition());
+ }
+ return childrenFeatures;
+ }
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(1);
+ }
+
+ return result;
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
+ XSDAttributeDeclaration resolvedXSDAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
+ String result = resolvedXSDAttributeDeclaration.getName();
+ return result == null ? XSDEditPlugin.INSTANCE.getString("_UI_Absent_label") : result;
+ }
+ };
+ }
+
+ return xsdAttributeDeclarationItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDAttributeGroupDefinitionAdapter()
+ {
+ if (xsdAttributeGroupDefinitionItemProvider == null)
+ {
+ xsdAttributeGroupDefinitionItemProvider =
+ new XSDAttributeGroupDefinitionItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDAttributeGroupDefinition_Contents());
+ childrenFeatures.add(1, xsdPackage.getXSDAttributeGroupDefinition_AttributeUses());
+ childrenFeatures.remove(xsdPackage.getXSDAttributeGroupDefinition_AttributeWildcardContent());
+ childrenFeatures.add(xsdPackage.getXSDAttributeGroupDefinition_AttributeWildcard());
+ }
+ return childrenFeatures;
+ }
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(2);
+ }
+ else
+ {
+ return result;
+ }
+ }
+ };
+ }
+
+ return xsdAttributeGroupDefinitionItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDComplexTypeDefinitionAdapter()
+ {
+ if (xsdComplexTypeDefinitionItemProvider == null)
+ {
+ xsdComplexTypeDefinitionItemProvider =
+ new XSDComplexTypeDefinitionItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDComplexTypeDefinition_AttributeContents());
+ childrenFeatures.remove(xsdPackage.getXSDComplexTypeDefinition_Content());
+ childrenFeatures.remove(xsdPackage.getXSDComplexTypeDefinition_AttributeWildcardContent());
+ childrenFeatures.add(1, xsdPackage.getXSDComplexTypeDefinition_ContentType());
+ childrenFeatures.add(1, xsdPackage.getXSDComplexTypeDefinition_BaseTypeDefinition());
+ childrenFeatures.add(xsdPackage.getXSDComplexTypeDefinition_AttributeUses());
+ childrenFeatures.add(xsdPackage.getXSDComplexTypeDefinition_AttributeWildcard());
+ }
+
+ return childrenFeatures;
+ }
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(3);
+ }
+ else
+ {
+ return result;
+ }
+ }
+ @Override
+ public String getText(Object object)
+ {
+ return getText(object, false);
+ }
+ };
+ }
+
+ return xsdComplexTypeDefinitionItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDSimpleTypeDefinitionAdapter()
+ {
+ if (xsdSimpleTypeDefinitionItemProvider == null)
+ {
+ xsdSimpleTypeDefinitionItemProvider =
+ new XSDSimpleTypeDefinitionItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDSimpleTypeDefinition_Contents());
+ childrenFeatures.remove(xsdPackage.getXSDSimpleTypeDefinition_FacetContents());
+ childrenFeatures.add(1, xsdPackage.getXSDSimpleTypeDefinition_MemberTypeDefinitions());
+ childrenFeatures.add(1, xsdPackage.getXSDSimpleTypeDefinition_ItemTypeDefinition());
+ childrenFeatures.add(1, xsdPackage.getXSDSimpleTypeDefinition_BaseTypeDefinition());
+ childrenFeatures.add(xsdPackage.getXSDSimpleTypeDefinition_Facets());
+ }
+ return childrenFeatures;
+ }
+
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(3);
+ }
+ else
+ {
+ return result;
+ }
+ }
+ @Override
+ public String getText(Object object)
+ {
+ return getText(object, false);
+ }
+ };
+ }
+
+ return xsdSimpleTypeDefinitionItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDModelGroupDefinitionAdapter()
+ {
+ if (xsdModelGroupDefinitionItemProvider == null)
+ {
+ xsdModelGroupDefinitionItemProvider =
+ new XSDModelGroupDefinitionItemProvider(this)
+ {
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(4);
+ }
+ else
+ {
+ return result;
+ }
+ }
+ };
+ }
+
+ return xsdModelGroupDefinitionItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDNotationDeclarationAdapter()
+ {
+ if (xsdNotationDeclarationItemProvider == null)
+ {
+ xsdNotationDeclarationItemProvider =
+ new XSDNotationDeclarationItemProvider(this)
+ {
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(5);
+ }
+ else
+ {
+ return result;
+ }
+ }
+ };
+ }
+
+ return xsdNotationDeclarationItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDAnnotationAdapter()
+ {
+ if (xsdAnnotationItemProvider == null)
+ {
+ xsdAnnotationItemProvider =
+ new XSDAnnotationItemProvider(this)
+ {
+ @Override
+ public Object getParent(Object object)
+ {
+ Object result = super.getParent(object);
+ if (result instanceof XSDSchema)
+ {
+ return ((List<?>)new AdapterFactoryItemDelegator(XSDSemanticItemProviderAdapterFactory.this).getChildren(result)).get(7);
+ }
+ else
+ {
+ return result;
+ }
+ }
+ };
+ }
+
+ return xsdAnnotationItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDParticleAdapter()
+ {
+ if (xsdParticleItemProvider == null)
+ {
+ xsdParticleItemProvider =
+ new XSDParticleItemProvider(this)
+ {
+ @Override
+ protected XSDParticleContent getDelegate(XSDParticle xsdParticle)
+ {
+ return xsdParticle.getTerm();
+ }
+ };
+ }
+
+ return xsdParticleItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDModelGroupAdapter()
+ {
+ if (xsdModelGroupItemProvider == null)
+ {
+ xsdModelGroupItemProvider =
+ new XSDModelGroupItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDModelGroup_Contents());
+ childrenFeatures.add(1, xsdPackage.getXSDModelGroup_Particles());
+ }
+ return childrenFeatures;
+ }
+ };
+ }
+
+ return xsdModelGroupItemProvider;
+ }
+
+
+
+ @Override
+ public Adapter createXSDCardinalityFacetAdapter()
+ {
+ if (xsdCardinalityFacetItemProvider == null)
+ {
+ xsdCardinalityFacetItemProvider = new XSDCardinalityFacetItemProvider(this);
+ }
+
+ return xsdCardinalityFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDNumericFacetAdapter()
+ {
+ if (xsdNumericFacetItemProvider == null)
+ {
+ xsdNumericFacetItemProvider = new XSDNumericFacetItemProvider(this);
+ }
+
+ return xsdNumericFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDOrderedFacetAdapter()
+ {
+ if (xsdOrderedFacetItemProvider == null)
+ {
+ xsdOrderedFacetItemProvider = new XSDOrderedFacetItemProvider(this);
+ }
+
+ return xsdOrderedFacetItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDFractionDigitsFacetAdapter()
+ {
+ if (xsdFractionDigitsFacetItemProvider == null)
+ {
+ xsdFractionDigitsFacetItemProvider = new XSDFractionDigitsFacetItemProvider(this);
+ }
+
+ return xsdFractionDigitsFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDLengthFacetAdapter()
+ {
+ if (xsdLengthFacetItemProvider == null)
+ {
+ xsdLengthFacetItemProvider = new XSDLengthFacetItemProvider(this);
+ }
+
+ return xsdLengthFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDMaxExclusiveFacetAdapter()
+ {
+ if (xsdMaxExclusiveFacetItemProvider == null)
+ {
+ xsdMaxExclusiveFacetItemProvider = new XSDMaxExclusiveFacetItemProvider(this);
+ }
+
+ return xsdMaxExclusiveFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDMaxInclusiveFacetAdapter()
+ {
+ if (xsdMaxInclusiveFacetItemProvider == null)
+ {
+ xsdMaxInclusiveFacetItemProvider = new XSDMaxInclusiveFacetItemProvider(this);
+ }
+
+ return xsdMaxInclusiveFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDMaxLengthFacetAdapter()
+ {
+ if (xsdMaxLengthFacetItemProvider == null)
+ {
+ xsdMaxLengthFacetItemProvider = new XSDMaxLengthFacetItemProvider(this);
+ }
+
+ return xsdMaxLengthFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDMinExclusiveFacetAdapter()
+ {
+ if (xsdMinExclusiveFacetItemProvider == null)
+ {
+ xsdMinExclusiveFacetItemProvider = new XSDMinExclusiveFacetItemProvider(this);
+ }
+
+ return xsdMinExclusiveFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDMinInclusiveFacetAdapter()
+ {
+ if (xsdMinInclusiveFacetItemProvider == null)
+ {
+ xsdMinInclusiveFacetItemProvider = new XSDMinInclusiveFacetItemProvider(this);
+ }
+
+ return xsdMinInclusiveFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDMinLengthFacetAdapter()
+ {
+ if (xsdMinLengthFacetItemProvider == null)
+ {
+ xsdMinLengthFacetItemProvider = new XSDMinLengthFacetItemProvider(this);
+ }
+
+ return xsdMinLengthFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDTotalDigitsFacetAdapter()
+ {
+ if (xsdTotalDigitsFacetItemProvider == null)
+ {
+ xsdTotalDigitsFacetItemProvider = new XSDTotalDigitsFacetItemProvider(this);
+ }
+
+ return xsdTotalDigitsFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDWhiteSpaceFacetAdapter()
+ {
+ if (xsdWhiteSpaceFacetItemProvider == null)
+ {
+ xsdWhiteSpaceFacetItemProvider = new XSDWhiteSpaceFacetItemProvider(this);
+ }
+
+ return xsdWhiteSpaceFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDRepeatableFacetAdapter()
+ {
+ if (xsdRepeatableFacetItemProvider == null)
+ {
+ xsdRepeatableFacetItemProvider = new XSDRepeatableFacetItemProvider(this);
+ }
+
+ return xsdRepeatableFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDEnumerationFacetAdapter()
+ {
+ if (xsdEnumerationFacetItemProvider == null)
+ {
+ xsdEnumerationFacetItemProvider =
+ new XSDEnumerationFacetItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDFacet_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDRepeatableFacet_Annotations());
+ }
+ return childrenFeatures;
+ }
+ };
+ }
+
+ return xsdEnumerationFacetItemProvider;
+ }
+
+
+ @Override
+ public Adapter createXSDPatternFacetAdapter()
+ {
+ if (xsdPatternFacetItemProvider == null)
+ {
+ xsdPatternFacetItemProvider =
+ new XSDPatternFacetItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDFacet_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDRepeatableFacet_Annotations());
+ }
+ return childrenFeatures;
+ }
+ };
+ }
+ return xsdPatternFacetItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDAttributeUseAdapter()
+ {
+ if (xsdAttributeUseItemProvider == null)
+ {
+ xsdAttributeUseItemProvider =
+ new XSDAttributeUseItemProvider(this)
+ {
+ @Override
+ public XSDAttributeDeclaration getDelegate(XSDAttributeUse xsdAttributeUse)
+ {
+ return xsdAttributeUse.getAttributeDeclaration();
+ }
+ };
+ }
+
+ return xsdAttributeUseItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDWildcardAdapter()
+ {
+ if (xsdWildcardItemProvider == null)
+ {
+ xsdWildcardItemProvider =
+ new XSDWildcardItemProvider(this)
+ {
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.remove(xsdPackage.getXSDWildcard_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDWildcard_Annotations());
+ }
+ return childrenFeatures;
+ }
+ @Override
+ public String getText(Object object)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)object;
+ if (XSDNamespaceConstraintCategory.ANY_LITERAL == xsdWildcard.getNamespaceConstraintCategory())
+ {
+ return "any";
+ }
+ else if (XSDNamespaceConstraintCategory.NOT_LITERAL == xsdWildcard.getNamespaceConstraintCategory())
+ {
+ return "not " + xsdWildcard.getStringNamespaceConstraint();
+ }
+ else
+ {
+ return xsdWildcard.getStringNamespaceConstraint();
+ }
+ }
+ };
+ }
+
+ return xsdWildcardItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDIdentityConstraintDefinitionAdapter()
+ {
+ if (xsdIdentityConstraintDefinitionItemProvider == null)
+ {
+ xsdIdentityConstraintDefinitionItemProvider = new XSDIdentityConstraintDefinitionItemProvider(this);
+ }
+
+ return xsdIdentityConstraintDefinitionItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDXPathDefinitionAdapter()
+ {
+ if (xsdxPathDefinitionItemProvider == null)
+ {
+ xsdxPathDefinitionItemProvider = new XSDXPathDefinitionItemProvider(this);
+ }
+
+ return xsdxPathDefinitionItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDRedefineAdapter()
+ {
+ if (xsdRedefineItemProvider == null)
+ {
+ xsdRedefineItemProvider = new XSDRedefineItemProvider(this);
+ }
+
+ return xsdRedefineItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDImportAdapter()
+ {
+ if (xsdImportItemProvider == null)
+ {
+ xsdImportItemProvider = new XSDImportItemProvider(this);
+ }
+
+ return xsdImportItemProvider;
+ }
+
+ @Override
+ public Adapter createXSDIncludeAdapter()
+ {
+ if (xsdIncludeItemProvider == null)
+ {
+ xsdIncludeItemProvider = new XSDIncludeItemProvider(this);
+ }
+
+ return xsdIncludeItemProvider;
+ }
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDDiagnostic}.
+ */
+ @Override
+ public Adapter createXSDDiagnosticAdapter()
+ {
+ if (xsdDiagnosticItemProvider == null)
+ {
+ xsdDiagnosticItemProvider = new XSDDiagnosticItemProvider(this);
+ }
+
+ return xsdDiagnosticItemProvider;
+ }
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMinFacet}.
+ */
+ @Override
+ public Adapter createXSDMinFacetAdapter()
+ {
+ if (xsdMinFacetItemProvider == null)
+ {
+ xsdMinFacetItemProvider = new XSDMinFacetItemProvider(this);
+ }
+
+ return xsdMinFacetItemProvider;
+ }
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.xsd.XSDMaxFacet}.
+ */
+ @Override
+ public Adapter createXSDMaxFacetAdapter()
+ {
+ if (xsdMaxFacetItemProvider == null)
+ {
+ xsdMaxFacetItemProvider = new XSDMaxFacetItemProvider(this);
+ }
+
+ return xsdMaxFacetItemProvider;
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSimpleTypeDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSimpleTypeDefinitionItemProvider.java
new file mode 100644
index 0000000..802a0f2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDSimpleTypeDefinitionItemProvider.java
@@ -0,0 +1,563 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDBoundedFacet;
+import org.eclipse.xsd.XSDCardinalityFacet;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConstrainingFacet;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDFundamentalFacet;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDNumericFacet;
+import org.eclipse.xsd.XSDOrderedFacet;
+import org.eclipse.xsd.XSDRepeatableFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDSimpleTypeDefinition} object.
+ */
+public class XSDSimpleTypeDefinitionItemProvider
+ extends XSDTypeDefinitionItemProvider
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDSimpleTypeDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfType_description"),
+ xsdPackage.getXSDTypeDefinition_Annotation(),
+ false));
+
+ // This is for the ordered facet.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Ordered_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Ordered_description"),
+ xsdPackage.getXSDTypeDefinition_Annotation(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ XSDSimpleTypeDefinition simpleTypeDefinition = (XSDSimpleTypeDefinition)o;
+ for (XSDFundamentalFacet xsdFundamentalFacet : simpleTypeDefinition.getFundamentalFacets())
+ {
+ if (xsdFundamentalFacet instanceof XSDOrderedFacet)
+ {
+ return ((XSDOrderedFacet)xsdFundamentalFacet).getValue().getName();
+ }
+ }
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" });
+ }
+ });
+
+ // This is for the cardinality facet.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Cardinality_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Cardinality_description"),
+ xsdPackage.getXSDTypeDefinition_Annotation(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ XSDSimpleTypeDefinition simpleTypeDefinition = (XSDSimpleTypeDefinition)o;
+ for (XSDFundamentalFacet xsdFundamentalFacet : simpleTypeDefinition.getFundamentalFacets())
+ {
+ if (xsdFundamentalFacet instanceof XSDCardinalityFacet)
+ {
+ String result = ((XSDCardinalityFacet)xsdFundamentalFacet).getValue().getName();
+ if ("countablyInfinite".equals(result))
+ {
+ result = "countably infinite";
+ }
+ return result;
+ }
+ }
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" });
+ }
+ });
+
+ // This is for the bounded facet.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Bounded_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Bounded_description"),
+ xsdPackage.getXSDTypeDefinition_Annotation(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ XSDSimpleTypeDefinition simpleTypeDefinition = (XSDSimpleTypeDefinition)o;
+ for (XSDFundamentalFacet xsdFundamentalFacet : simpleTypeDefinition.getFundamentalFacets())
+ {
+ if (xsdFundamentalFacet instanceof XSDBoundedFacet)
+ {
+ return ((XSDBoundedFacet)xsdFundamentalFacet).isValue() ? "true" : "false";
+ }
+ }
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" });
+ }
+ });
+
+ // This is for the numeric facet.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Numeric_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Numeric_description"),
+ xsdPackage.getXSDTypeDefinition_Annotation(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ XSDSimpleTypeDefinition simpleTypeDefinition = (XSDSimpleTypeDefinition)o;
+ for (XSDFundamentalFacet xsdFundamentalFacet : simpleTypeDefinition.getFundamentalFacets())
+ {
+ if (xsdFundamentalFacet instanceof XSDNumericFacet)
+ {
+ return ((XSDNumericFacet)xsdFundamentalFacet).isValue() ? "true" : "false";
+ }
+ }
+ return XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { "false" });
+ }
+ });
+ // This is for the baseTypeDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_BaseTypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_BaseTypeDefinition_description"),
+ xsdPackage.getXSDSimpleTypeDefinition_BaseTypeDefinition(),
+ false));
+
+ // This is for the itemTypeDefinition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ItemTypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ItemTypeDefinition_description"),
+ xsdPackage.getXSDSimpleTypeDefinition_ItemTypeDefinition(),
+ false));
+
+ // This is for the variety feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Variety_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_Variety_description"),
+ xsdPackage.getXSDSimpleTypeDefinition_Variety(),
+ false)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ if (((XSDSimpleTypeDefinition)o).isSetVariety())
+ {
+ return super.getPropertyValue(o);
+ }
+ else
+ {
+ return XSDEditPlugin.INSTANCE.getString("_UI_Absent_label");
+ }
+ }
+ });
+
+ // This is for the primitive type definition feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_PrimitiveTypeDefinition_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_PrimitiveTypeDefinition_description"),
+ xsdPackage.getXSDSimpleTypeDefinition_PrimitiveTypeDefinition(),
+ false));
+
+ createLexicalFinalPropertyDescriptor(object);
+ createFinalPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+
+ protected void createLexicalFinalPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalFinal_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalFinal_description"),
+ xsdPackage.getXSDSimpleTypeDefinition_LexicalFinal(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyDefaultValue(Object o)
+ {
+ return
+ XSDEditPlugin.INSTANCE.getString("_UI_DefaultValue_label", new Object [] { ((XSDSimpleTypeDefinition)o).getStringLexicalFinal() });
+ }
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDSimpleTypeDefinition)o).getStringLexicalFinal();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object value)
+ {
+ ((XSDSimpleTypeDefinition)o).setStringLexicalFinal((String)value);
+ }
+ @Override
+ public Collection<?> getChoiceOfValues(Object o)
+ {
+ Collection<Object> result = new ArrayList<Object>();
+ result.add("");
+ result.add("#all");
+ result.add("restriction");
+ result.add("restriction list");
+ result.add("restriction list union");
+ result.add("restriction union");
+ result.add("list");
+ result.add("list union");
+ result.add("union");
+ return result;
+ }
+ });
+ }
+
+ protected void createFinalPropertyDescriptor(Object object)
+ {
+
+ // This is for the final feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptorWithDefault
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Final_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_FinalOfType_description"),
+ xsdPackage.getXSDSimpleTypeDefinition_Final(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDSimpleTypeDefinition)o).getStringFinal();
+ }
+ });
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDTypeDefinition_Annotation());
+ childrenFeatures.add(xsdPackage.getXSDTypeDefinition_DerivationAnnotation());
+ childrenFeatures.add(xsdPackage.getXSDSimpleTypeDefinition_Contents());
+ childrenFeatures.add(xsdPackage.getXSDSimpleTypeDefinition_FacetContents());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDSimpleTypeDefinition.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = ((XSDSimpleTypeDefinition)object);
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (xsdSimpleTypeDefinition.getContainer() == null ?
+ "full/obj16/XSDSimpleTypeDefinitionUnresolved" :
+ XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety() ?
+ "full/obj16/XSDSimpleTypeDefinitionList" :
+ XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety() ?
+ "full/obj16/XSDSimpleTypeDefinitionUnion" :
+ xsdSimpleTypeDefinition.isSetVariety() ?
+ "full/obj16/XSDSimpleTypeDefinitionAtomic" :
+ "full/obj16/XSDSimpleTypeDefinition");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ return getText(object, true);
+ }
+
+ public String getText(Object object, boolean showType)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = ((XSDSimpleTypeDefinition)object);
+
+ StringBuffer result = new StringBuffer();
+
+ result.append
+ (xsdSimpleTypeDefinition.getName() == null ?
+ xsdSimpleTypeDefinition.getAliasName() :
+ xsdSimpleTypeDefinition.getName());
+
+ if (showType)
+ {
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null && XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ if (baseTypeDefinition.getName() != null &&
+ !xsdSimpleTypeDefinition.getContents().contains(baseTypeDefinition) &&
+ !XSDConstants.isAnySimpleType(baseTypeDefinition))
+ {
+ result.append(" : ");
+ result.append(baseTypeDefinition.getQName(xsdSimpleTypeDefinition));
+ }
+ }
+ else
+ {
+ XSDSimpleTypeDefinition itemTypeDefinition = xsdSimpleTypeDefinition.getItemTypeDefinition();
+ if (itemTypeDefinition != null)
+ {
+ if (itemTypeDefinition.getName() != null)
+ {
+ result.append(" : ");
+ result.append(itemTypeDefinition.getQName());
+ }
+ }
+ else
+ {
+ List<XSDSimpleTypeDefinition> memberTypeDefinitions = xsdSimpleTypeDefinition.getMemberTypeDefinitions();
+ if (!memberTypeDefinitions.isEmpty())
+ {
+ boolean first = true;
+ for (XSDSimpleTypeDefinition memberTypeDefinition : memberTypeDefinitions)
+ {
+ if (memberTypeDefinition.getName() != null)
+ {
+ if (first)
+ {
+ result.append(" : ");
+ first = false;
+ }
+ else
+ {
+ result.append(" | ");
+ }
+ result.append(memberTypeDefinition.getQName());
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ else if (result.length() == 0)
+ {
+ result.append(XSDEditPlugin.INSTANCE.getString("_UI_Absent_label"));
+ }
+ }
+ }
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_FacetContents() ||
+ msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_Contents() ||
+ msg.getFeature() == xsdPackage.getXSDTypeDefinition_Annotation() ||
+ msg.getFeature() == xsdPackage.getXSDTypeDefinition_DerivationAnnotation() ||
+ msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_Variety() ||
+ msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_LexicalFinal() ||
+ msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_Final() ||
+ msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_ItemTypeDefinition() ||
+ msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_BaseTypeDefinition())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDSimpleTypeDefinition_MemberTypeDefinitions())
+ {
+ fireNotifyChanged
+ (new ENotificationImpl((InternalEObject)msg.getNotifier(), Notification.SET, null, null, null, Notification.NO_INDEX));
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * The allowable simple type definition and facet children depend upon the
+ * variety and (if atomic) the primitive type of this simple type definition,
+ * as well as upon its existing children. For an option to be displayed, but
+ * disabled, {@link org.eclipse.emf.edit.command.CommandParameter#feature}
+ * is <code>null</code>.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ XSDSimpleTypeDefinition std = (XSDSimpleTypeDefinition) object;
+
+ // type annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDTypeDefinition_Annotation(), xsdFactory.createXSDAnnotation()));
+
+ // derivation annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDTypeDefinition_DerivationAnnotation(), xsdFactory.createXSDAnnotation()));
+
+ // children for simple type derivation, except on simple type definition
+ // content of a complex type definition with extension derivation
+ // method...
+ if (!(std.eContainer() instanceof XSDComplexTypeDefinition) ||
+ ((XSDComplexTypeDefinition) std.eContainer()).getDerivationMethod() != XSDDerivationMethod.EXTENSION_LITERAL)
+ {
+ boolean isAtomic = std.getVariety() == XSDVariety.ATOMIC_LITERAL;
+ boolean isUnion = std.getVariety() == XSDVariety.UNION_LITERAL;
+ Collection<String> validFacets = std.getValidFacets();
+
+ // anonymous simple type definition(s) for derivation (single-valued
+ // for non-list varieties)
+ EReference feature = !isUnion && !std.getContents().isEmpty() ?
+ null : xsdPackage.getXSDSimpleTypeDefinition_Contents();
+ addSimpleTypeDefinitionChildParameters(newChildDescriptors, std, feature,
+ true, isUnion, !isAtomic);
+ // facets
+ for (String validFacet : validFacets)
+ {
+ XSDConstrainingFacet facet = (XSDConstrainingFacet)xsdFactory.create((EClass)xsdPackage.getEClassifier(formFacetTypeName(validFacet)));
+ facet.setLexicalValue("");
+ feature = !canAccomodateFacet(std, facet) ? null :
+ xsdPackage.getXSDSimpleTypeDefinition_FacetContents();
+ newChildDescriptors.add(createChildParameter(feature, facet));
+ }
+ }
+ }
+
+ /**
+ * This forms the name for a facet MOF type, from the string (with
+ * <code>Object</code> static type) obtained from the collection returned
+ * by {@link XSDSimpleTypeDefinition#getValidFacets}. The object is
+ * cast to a <code>String</code>, the first character is capitalized,
+ * "XSD" is prepended, and "Facet" appended.
+ */
+ protected String formFacetTypeName(Object facetName)
+ {
+ StringBuffer buffer = new StringBuffer((String) facetName);
+ char c = buffer.charAt(0);
+ buffer.setCharAt(0, Character.toUpperCase(c));
+ buffer.insert(0, "XSD");
+ buffer.append("Facet");
+ return buffer.toString();
+ }
+
+ /**
+ * This tests whether the specified simple type definition,
+ * <code>s</code>, can accomodate the given constraining facet,
+ * <code>f</code>, based on its existing facet children.
+ */
+ protected boolean canAccomodateFacet(XSDSimpleTypeDefinition s,
+ XSDConstrainingFacet f)
+ {
+ return
+ (f instanceof XSDRepeatableFacet) ||
+ (f instanceof XSDLengthFacet && s.getLengthFacet() == null &&
+ s.getMinLengthFacet() == null && s.getMaxLengthFacet() == null) ||
+ (f instanceof XSDMinLengthFacet && s.getMinLengthFacet() == null &&
+ s.getLengthFacet() == null) ||
+ (f instanceof XSDMaxLengthFacet && s.getMaxLengthFacet() == null &&
+ s.getLengthFacet() == null) ||
+ (f instanceof XSDWhiteSpaceFacet && s.getWhiteSpaceFacet() == null) ||
+ (f instanceof XSDMinInclusiveFacet && s.getMinFacet() == null) ||
+ (f instanceof XSDMinExclusiveFacet && s.getMinFacet() == null) ||
+ (f instanceof XSDMaxInclusiveFacet && s.getMaxFacet() == null) ||
+ (f instanceof XSDMaxExclusiveFacet && s.getMaxFacet() == null) ||
+ (f instanceof XSDTotalDigitsFacet && s.getTotalDigitsFacet() == null) ||
+ (f instanceof XSDFractionDigitsFacet
+ && s.getFractionDigitsFacet() == null);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTermItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTermItemProvider.java
new file mode 100644
index 0000000..22bd6ed
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTermItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDTerm} object.
+ */
+public class XSDTermItemProvider
+ extends XSDParticleContentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDTermItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTotalDigitsFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTotalDigitsFacetItemProvider.java
new file mode 100644
index 0000000..3177f39
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTotalDigitsFacetItemProvider.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDTotalDigitsFacet} object.
+ */
+public class XSDTotalDigitsFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDTotalDigitsFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueTotalDigitsFacet_description"),
+ xsdPackage.getXSDTotalDigitsFacet_Value(),
+ true,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDTotalDigitsFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDTotalDigitsFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = ((XSDTotalDigitsFacet)object);
+ String result = xsdTotalDigitsFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTypeDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTypeDefinitionItemProvider.java
new file mode 100644
index 0000000..1eb2979
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDTypeDefinitionItemProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDTypeDefinition} object.
+ */
+public class XSDTypeDefinitionItemProvider
+ extends XSDRedefinableComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDTypeDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDWhiteSpaceFacetItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDWhiteSpaceFacetItemProvider.java
new file mode 100644
index 0000000..3666554
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDWhiteSpaceFacetItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDWhiteSpaceFacet} object.
+ */
+public class XSDWhiteSpaceFacetItemProvider
+ extends XSDFixedFacetItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDWhiteSpaceFacetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the value feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Value_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ValueWhiteSpaceFacet_description"),
+ xsdPackage.getXSDWhiteSpaceFacet_Value(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDWhiteSpaceFacet.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return XSDEditPlugin.INSTANCE.getImage("full/obj16/XSDWhiteSpaceFacet");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDWhiteSpaceFacet xsdWhiteSpaceFacet = ((XSDWhiteSpaceFacet)object);
+ String result = xsdWhiteSpaceFacet.getLexicalValue();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getFeature() == xsdPackage.getXSDFacet_LexicalValue())
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDWildcardItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDWildcardItemProvider.java
new file mode 100644
index 0000000..e59189e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDWildcardItemProvider.java
@@ -0,0 +1,264 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDWildcard;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDWildcard} object.
+ */
+public class XSDWildcardItemProvider
+ extends XSDTermItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDWildcardItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the namespaceConstraint feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalNamespaceConstraint_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_LexicalNamespaceConstraint_description"),
+ xsdPackage.getXSDWildcard_LexicalNamespaceConstraint(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDWildcard)o).getStringLexicalNamespaceConstraint();
+ }
+ @Override
+ public void setPropertyValue(Object o, Object v)
+ {
+ XSDWildcard thisWildcard = (XSDWildcard)o;
+ thisWildcard.setStringLexicalNamespaceConstraint((String)v);
+/*
+EATM TODO
+It looks like you can't set a multi-value anymore with the latest generated code.
+
+ EditingDomain editingDomain = getEditingDomain(thisWildcard);
+ if (editingDomain == null)
+ {
+ thisWildcard.setStringLexicalNamespaceConstraint((String)v);
+ }
+ else
+ {
+ //List newLexicalNamespaceConstraint = new ArrayList();
+ List newLexicalNamespaceConstraint = new org.eclipse.emf.ecore.ref.impl.EListImpl();
+ for (StringTokenizer stringTokenizer = new StringTokenizer((String)v); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ newLexicalNamespaceConstraint.add(token);
+ }
+ editingDomain.getCommandStack().execute
+ (SetCommand.create
+ (editingDomain,
+ thisWildcard,
+ xsdPackage.getXSDWildcard_LexicalNamespaceConstraint(),
+ newLexicalNamespaceConstraint));
+ }
+*/
+ }
+ });
+
+ // This is for the namespaceConstraint feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_NamespaceConstraint_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_NamespaceConstraint_description"),
+ xsdPackage.getXSDWildcard_NamespaceConstraint(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE)
+ {
+ @Override
+ public Object getPropertyValue(Object o)
+ {
+ return ((XSDWildcard)o).getStringNamespaceConstraint();
+ }
+ });
+
+ // This is for the namespaceConstraintCategory feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_NamespaceConstraintCategory_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_NamespaceConstraintCategory_description"),
+ xsdPackage.getXSDWildcard_NamespaceConstraintCategory(),
+ false,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the processContents feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_ProcessContents_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_ProcessContents_description"),
+ xsdPackage.getXSDWildcard_ProcessContents(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ // This is for the annotation feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Annotation_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_AnnotationOfWildcard_description"),
+ xsdPackage.getXSDWildcard_Annotation(),
+ false));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(xsdPackage.getXSDWildcard_Annotation());
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * This returns XSDWildcard.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDWildcard xsdWildcard = ((XSDWildcard)object);
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (xsdWildcard.eContainer() instanceof XSDParticle ?
+ "full/obj16/XSDWildcardElement" :
+ "full/obj16/XSDWildcardAttribute");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDWildcard xsdWildcard = ((XSDWildcard)object);
+ String result = xsdWildcard.getStringLexicalNamespaceConstraint();
+ return result == null ? "" : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)msg.getNotifier();
+ if (msg.getFeature() == xsdPackage.getXSDWildcard_LexicalNamespaceConstraint() ||
+ msg.getFeature() == xsdPackage.getXSDWildcard_NamespaceConstraint())
+ {
+ fireNotifyChanged
+ (new ENotificationImpl((InternalEObject)msg.getNotifier(), Notification.SET, null, null, null, Notification.NO_INDEX));
+
+ XSDConcreteComponent container = xsdWildcard.getContainer();
+ if (container instanceof XSDParticle)
+ {
+ ((ItemProviderAdapter)adapterFactory.adapt(container, IItemLabelProvider.class)).fireNotifyChanged
+ (new ENotificationImpl((InternalEObject)container, Notification.SET, null, null, null, Notification.NO_INDEX));
+ }
+ return;
+ }
+ else if (msg.getFeature() == xsdPackage.getXSDWildcard_ProcessContents() ||
+ msg.getFeature() == xsdPackage.getXSDWildcard_NamespaceConstraintCategory() ||
+ msg.getFeature() == xsdPackage.getXSDWildcard_Annotation())
+ {
+ fireNotifyChanged(msg);
+ XSDConcreteComponent container = xsdWildcard.getContainer();
+ if (container instanceof XSDParticle)
+ {
+ ((ItemProviderAdapter)adapterFactory.adapt(container, IItemLabelProvider.class)).fireNotifyChanged
+ (new ENotificationImpl
+ ((InternalEObject)container,
+ msg.getEventType(),
+ (EStructuralFeature)msg.getFeature(),
+ msg.getOldValue(),
+ msg.getNewValue(),
+ msg.getPosition()));
+ }
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDWildcard_Annotation(), xsdFactory.createXSDAnnotation()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDXPathDefinitionItemProvider.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDXPathDefinitionItemProvider.java
new file mode 100644
index 0000000..71a0466
--- /dev/null
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDXPathDefinitionItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.XSDXPathVariety;
+
+
+/**
+ * This is the item provider adpater for a {@link org.eclipse.xsd.XSDXPathDefinition} object.
+ */
+public class XSDXPathDefinitionItemProvider
+ extends XSDComponentItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ */
+ public XSDXPathDefinitionItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ // This is for the variety feature.
+ //
+ itemPropertyDescriptors.add
+ (new ItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ XSDEditPlugin.INSTANCE.getString("_UI_Variety_label"),
+ XSDEditPlugin.INSTANCE.getString("_UI_VarietyOfXPath_description"),
+ xsdPackage.getXSDXPathDefinition_Variety(),
+ true,
+ ItemPropertyDescriptor.TEXT_VALUE_IMAGE));
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns XSDXPathDefinition.gif.
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ XSDXPathDefinition xsdXPathDefinition = ((XSDXPathDefinition)object);
+ return
+ XSDEditPlugin.INSTANCE.getImage
+ (XSDXPathVariety.SELECTOR_LITERAL == xsdXPathDefinition.getVariety() ?
+ "full/obj16/XSDXPathDefinitionSelector" :
+ "full/obj16/XSDXPathDefinitionField");
+ }
+
+ @Override
+ public String getText(Object object)
+ {
+ XSDXPathDefinition xsdXPathDefinition = ((XSDXPathDefinition)object);
+ String result = xsdXPathDefinition.getValue();
+ return result == null ? XSDEditPlugin.INSTANCE.getString("_UI_Absent_label") : result;
+ }
+
+ /**
+ * This handles notification by calling {@link #fireNotifyChanged fireNotifyChanged}.
+ */
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (
+ msg.getFeature() == xsdPackage.getXSDXPathDefinition_Variety()
+ )
+ {
+ fireNotifyChanged(msg);
+ return;
+ }
+ super.notifyChanged(msg);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ // annotation
+ newChildDescriptors.add(createChildParameter(xsdPackage.getXSDXPathDefinition_Annotation(), xsdFactory.createXSDAnnotation()));
+ }
+}
diff --git a/plugins/org.eclipse.xsd.editor/.classpath b/plugins/org.eclipse.xsd.editor/.classpath
new file mode 100644
index 0000000..196d49a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.xsd.editor/.gitignore b/plugins/org.eclipse.xsd.editor/.gitignore
new file mode 100644
index 0000000..3f8f9e7
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/.gitignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+*.jar
diff --git a/plugins/org.eclipse.xsd.editor/.project b/plugins/org.eclipse.xsd.editor/.project
new file mode 100644
index 0000000..b4a1c60
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/.project
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.editor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.editor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.xsd.editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..cc05150
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:02 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d8b141f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.editor; singleton:=true
+Bundle-Version: 2.12.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.xsd.presentation.XSDEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.xsd.presentation
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
+ org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
+ org.eclipse.ui.editors;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit.ui;bundle-version="[2.23.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.17.0,3.0.0)",
+ org.eclipse.xsd.edit;bundle-version="[2.12.0,3.0.0)";visibility:=reexport
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.xsd.editor
diff --git a/plugins/org.eclipse.xsd.editor/about.html b/plugins/org.eclipse.xsd.editor/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.editor/about.ini b/plugins/org.eclipse.xsd.editor/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.xsd.editor/about.mappings b/plugins/org.eclipse.xsd.editor/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.xsd.editor/about.properties b/plugins/org.eclipse.xsd.editor/about.properties
new file mode 100644
index 0000000..87e5a90
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Sample Editor
+
+featureText=XSD Sample Editor\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/plugins/org.eclipse.xsd.editor/build.properties b/plugins/org.eclipse.xsd.editor/build.properties
new file mode 100644
index 0000000..a89b402
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/build.properties
@@ -0,0 +1,14 @@
+bin.includes = icons/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ modeling32.png,\
+ META-INF/
+src.includes = about.html
+source.. = src/
+output.. = bin/
+exclude.. = **/doc-files/**
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectNextDiagnosticObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectNextDiagnosticObject.gif
new file mode 100644
index 0000000..7ccf2ee
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectNextDiagnosticObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectNextUseObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectNextUseObject.gif
new file mode 100644
index 0000000..072b184
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectNextUseObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectPreviousDiagnosticObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectPreviousDiagnosticObject.gif
new file mode 100644
index 0000000..8065fa3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectPreviousDiagnosticObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectPreviousUseObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectPreviousUseObject.gif
new file mode 100644
index 0000000..0716475
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/clcl16/SelectPreviousUseObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/ctool16/NewXSD.gif b/plugins/org.eclipse.xsd.editor/icons/full/ctool16/NewXSD.gif
new file mode 100644
index 0000000..b6efdd3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/ctool16/NewXSD.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectNextDiagnosticObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectNextDiagnosticObject.gif
new file mode 100644
index 0000000..61128c3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectNextDiagnosticObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectNextUseObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectNextUseObject.gif
new file mode 100644
index 0000000..effdbb0
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectNextUseObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectPreviousDiagnosticObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectPreviousDiagnosticObject.gif
new file mode 100644
index 0000000..1db973c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectPreviousDiagnosticObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectPreviousUseObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectPreviousUseObject.gif
new file mode 100644
index 0000000..585c31e
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/dlcl16/SelectPreviousUseObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectNextDiagnosticObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectNextDiagnosticObject.gif
new file mode 100644
index 0000000..7ccf2ee
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectNextDiagnosticObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectNextUseObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectNextUseObject.gif
new file mode 100644
index 0000000..072b184
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectNextUseObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectPreviousDiagnosticObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectPreviousDiagnosticObject.gif
new file mode 100644
index 0000000..8065fa3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectPreviousDiagnosticObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectPreviousUseObject.gif b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectPreviousUseObject.gif
new file mode 100644
index 0000000..0716475
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/elcl16/SelectPreviousUseObject.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/obj16/XSDModelFile.gif b/plugins/org.eclipse.xsd.editor/icons/full/obj16/XSDModelFile.gif
new file mode 100644
index 0000000..13dcfce
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/obj16/XSDModelFile.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/icons/full/wizban/NewXSD.gif b/plugins/org.eclipse.xsd.editor/icons/full/wizban/NewXSD.gif
new file mode 100644
index 0000000..390f482
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/icons/full/wizban/NewXSD.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/modeling32.png b/plugins/org.eclipse.xsd.editor/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.xsd.editor/plugin.properties b/plugins/org.eclipse.xsd.editor/plugin.properties
new file mode 100644
index 0000000..949b9c3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/plugin.properties
@@ -0,0 +1,62 @@
+# /**
+# * Copyright (c) 2002-2009 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Sample Editor
+providerName = Eclipse Modeling Project
+sampleEditor = Sample XML Schema Editor
+
+_UI_Source_title = Source
+_UI_Semantics_title = Semantics
+_UI_Syntax_title = Syntax
+
+_UI_XSDEditor_menu = &XSD Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_XSDEditorFilenameDefaultBase = MySchema
+_UI_XSDEditorFilenameExtensions = xsd
+
+_UI_Wizard_category = Example EMF Model Creation Wizards
+_UI_XSDModelWizard_label = XSD Model
+_UI_XSDModelWizard_description = Create a new XSD model
+
+_WARN_FilenameExtension = The filename must end in ".{0}"
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_SchemaPrefix_label = Target Namespace &Prefix
+_UI_SchemaNamespaceURI_label = Target &Namespace
+
+_UI_SchemaForSchemaPrefix_label = &Schema for Schema Prefix
+_UI_SchemaForSchemaNamespaceURI_label = Schema for Schema Namespace &URI
+
+_UI_Validating_message = Validating
+_UI_ReportingErrors_message = Reporting errors
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+_UI_ValidateAutomatically_menu_item = &Validate Automatically
+
+_UI_XMLEncoding = &XML Encoding
+
+# These are the XML encodings that will be presented in the new model wizard.
+# The translated version of this property should include the encodings popular in the locale.
+# The first one listed here will be the default, so please list the most popular choice first.
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
diff --git a/plugins/org.eclipse.xsd.editor/plugin.xml b/plugins/org.eclipse.xsd.editor/plugin.xml
new file mode 100644
index 0000000..8316c99
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/plugin.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.ui.editors">
+ <editor
+ id="org.eclipse.xsd.presentation.XSDEditorID"
+ name="%sampleEditor"
+ icon="icons/full/obj16/XSDModelFile.gif"
+ class="org.eclipse.xsd.presentation.XSDEditor"
+ contributorClass="org.eclipse.xsd.presentation.XSDEditor$ActionBarContributor">
+ <contentTypeBinding contentTypeId="org.eclipse.xsd"/>
+ </editor>
+ </extension>
+
+ <extension point="org.eclipse.ui.editorActions">
+ <editorContribution
+ id="org.eclipse.xsd.action.xsdContributionID"
+ targetID="org.eclipse.xsd.presentation.XSDEditorID">
+ <menu
+ id="org.eclipse.xsdMenuID"
+ label="%_UI_XSDEditor_menu"
+ path="additions">
+ <separator name="settings"/>
+ <separator name="actions"/>
+ <separator name="additions"/>
+ <separator name="additions-end"/>
+ </menu>
+ </editorContribution>
+ </extension>
+
+ <extension point="org.eclipse.ui.newWizards">
+ <category
+ id="org.eclipse.emf.ecore.Wizard.category.ID"
+ name="%_UI_Wizard_category"/>
+ <wizard
+ id="org.eclipse.xsd.presentation.XSDModelWizardID"
+ name="%_UI_XSDModelWizard_label"
+ class="org.eclipse.xsd.presentation.XSDModelWizard"
+ category="org.eclipse.emf.ecore.Wizard.category.ID"
+ icon="icons/full/ctool16/NewXSD.gif">
+ <description>%_UI_XSDModelWizard_description</description>
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ </extension>
+
+ <!--
+ <extension point = "org.eclipse.ui.popupMenus">
+ <objectContribution
+ id="org.eclipse.xsd.editor.GenericXMLLoad"
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="*.xml">
+ <action
+ id="org.eclipse.xsd.editor.GenericXMLLoadAction"
+ label="Test Load and Save as XML..."
+ menubarPath="additions"
+ class="org.eclipse.xsd.presentation.XSDEditor$GenericXMLLoadAction"
+ enablesFor="1"/>
+ </objectContribution>
+ </extension>
+
+ <extension point = "org.eclipse.ui.popupMenus">
+ <objectContribution
+ id="org.eclipse.xsd.editor.GenericXMLLoad"
+ objectClass="org.eclipse.core.resources.IContainer">
+ <action
+ id="org.eclipse.xsd.editor.GenericXMLLoadAction"
+ label="Test Load and Save as XML..."
+ menubarPath="additions"
+ class="org.eclipse.xsd.presentation.XSDEditor$GenericXMLLoadAction"/>
+ </objectContribution>
+ </extension>
+ -->
+</plugin>
diff --git a/plugins/org.eclipse.xsd.editor/pom.xml b/plugins/org.eclipse.xsd.editor/pom.xml
new file mode 100644
index 0000000..32eccac
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.editor</artifactId>
+ <version>2.12.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java
new file mode 100644
index 0000000..a154166
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java
@@ -0,0 +1,2949 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.presentation;
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.helpers.DefaultHandler;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IDocumentListener;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.IVerticalRuler;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.celleditor.ExtendedComboBoxCellEditor;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicMonitor;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.XMLLoad;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.SAXXMLHandler;
+import org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+import org.eclipse.emf.ecore.xml.type.internal.DataValue.EncodingMap;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ItemProvider;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.emf.edit.ui.provider.PropertyDescriptor;
+import org.eclipse.emf.edit.ui.provider.PropertySource;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.ecore.XSDEcoreBuilder;
+import org.eclipse.xsd.provider.XSDItemProviderAdapterFactory;
+import org.eclipse.xsd.provider.XSDSemanticItemProviderAdapterFactory;
+import org.eclipse.xsd.util.XSDParser;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.eclipse.xsd.util.XSDResourceImpl;
+import org.eclipse.xsd.util.XSDSwitch;
+
+
+
+/**
+ * This is a an example of a xsd model editor.
+ */
+public class XSDEditor
+ extends MultiPageEditorPart
+ implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider
+{
+ /**
+ * This keeps track of the root object of the model.
+ */
+ protected XSDSchema xsdSchema;
+
+ /**
+ * This keeps track of the editing domain that is used to track all changes to the model.
+ */
+ protected AdapterFactoryEditingDomain editingDomain;
+
+ /**
+ * This is the adapter factory used for providing the syntactic views of the model.
+ */
+ protected ComposedAdapterFactory syntacticAdapterFactory;
+
+ /**
+ * This is the adapter factory used for providing the semantic views of the model.
+ */
+ protected ComposedAdapterFactory semanticAdapterFactory;
+
+ /**
+ * This is the content outline page.
+ */
+ protected IContentOutlinePage contentOutlinePage;
+
+ /**
+ * This is a kludge...
+ */
+ protected IStatusLineManager contentOutlineStatusLineManager;
+
+ /**
+ * This is the content outline page's viewer.
+ */
+ protected TreeViewer contentOutlineViewer;
+
+ /**
+ * This is the property sheet page.
+ */
+ protected PropertySheetPage propertySheetPage;
+
+ /**
+ * This source part of the editor.
+ */
+ protected TextEditor textEditor;
+ protected ISourceViewer sourceViewer;
+
+ /**
+ * This is the syntactic viewer that shadows the selection in the content outline.
+ * The parent relation must be correctly defined for this to work.
+ */
+ protected TreeViewer syntacticSelectionViewer;
+
+ /**
+ * This is the semantic viewer that shadows the selection in the content outline.
+ */
+ protected TreeViewer semanticSelectionViewer;
+
+ /**
+ * This keeps track of the active viewer pane, in the book.
+ */
+ protected ViewerPane currentViewerPane;
+
+ /**
+ * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+ */
+ protected Viewer currentViewer;
+
+ /**
+ * This listens to which ever viewer is active.
+ */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /**
+ * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+ */
+ protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+ /**
+ * This keeps track of the selection of the editor as a whole.
+ */
+ protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+ /**
+ * This is the outline action to select the next unresolved component.
+ */
+ protected SelectDiagnosticAction selectNextDiagnosticsAction;
+
+ /**
+ * This is the outline action to select the previous unresolved component.
+ */
+ protected SelectDiagnosticAction selectPreviousDiagnosticsAction;
+
+ /**
+ * This is the outline action to select the next use of a component.
+ */
+ protected SelectUseAction selectNextUseAction;
+
+ /**
+ * This is the outline action to select the previous use of a component.
+ */
+ protected SelectUseAction selectPreviousUseAction;
+
+ /**
+ * This listens for when things becomes active.
+ */
+ protected IPartListener partListener =
+ new IPartListener()
+ {
+ public void partActivated(IWorkbenchPart p)
+ {
+ handlePartActivated(p);
+ }
+ public void partBroughtToTop(IWorkbenchPart p)
+ {
+ // Ignore
+ }
+ public void partClosed(IWorkbenchPart p)
+ {
+ // Ignore
+ }
+ public void partDeactivated(IWorkbenchPart p)
+ {
+ // Ignore
+ }
+ public void partOpened(IWorkbenchPart p)
+ {
+ // Ignore
+ }
+ };
+
+ /**
+ * This creates a model editor.
+ */
+ public XSDEditor()
+ {
+ super();
+
+ // Create an adapter factory that yields item providers.
+ //
+ syntacticAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+ syntacticAdapterFactory.addAdapterFactory(new XSDItemProviderAdapterFactory());
+ semanticAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+ semanticAdapterFactory.addAdapterFactory(new XSDSemanticItemProviderAdapterFactory());
+
+ // Create the command stack that will notify this editor as commands are executed.
+ //
+ BasicCommandStack commandStack = new BasicCommandStack();
+
+ // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+ //
+ commandStack.addCommandStackListener
+ (new CommandStackListener()
+ {
+ public void commandStackChanged(final EventObject event)
+ {
+ getContainer().getDisplay().asyncExec
+ (new Runnable()
+ {
+ public void run()
+ {
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+
+ // Try to select the affected objects.
+ //
+ Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+ if (mostRecentCommand != null)
+ {
+ setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+ }
+
+ if (!(mostRecentCommand instanceof AbstractCommand.NonDirtying))
+ {
+ handleStructuredModelChange();
+ }
+
+ updateActions();
+
+ if (propertySheetPage != null)
+ {
+ propertySheetPage.refresh();
+ }
+ }
+ });
+
+ }
+ });
+
+ // Create the editing domain with a special command stack.
+ //
+ editingDomain = new AdapterFactoryEditingDomain(syntacticAdapterFactory, commandStack);
+
+ // Register our xsd resource factory for this context.
+ //
+ editingDomain.getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+ }
+
+ protected void updateActions()
+ {
+ if (selectNextDiagnosticsAction != null)
+ {
+ selectNextDiagnosticsAction.updateAction();
+ selectPreviousDiagnosticsAction.updateAction();
+
+ selectNextUseAction.updateAction();
+ selectPreviousUseAction.updateAction();
+ }
+ }
+
+ protected String determineEncoding()
+ {
+ String encoding = (String)((XSDResourceImpl)xsdSchema.eResource()).getDefaultSaveOptions().get(XSDResourceImpl.XSD_ENCODING);
+ if (encoding != null && EncodingMap.getIANA2JavaMapping(encoding) != null)
+ {
+ encoding = EncodingMap.getIANA2JavaMapping(encoding);
+ }
+ return encoding;
+ }
+
+ protected boolean handledStructuredModelChange = false;
+ protected void handleStructuredModelChange()
+ {
+ IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+ if (xsdSchema.getElement() == null)
+ {
+ xsdSchema.updateElement();
+ }
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ try
+ {
+ xsdSchema.eResource().save(out, null);
+
+ String encoding = determineEncoding();
+ String newContent = encoding == null ? out.toString() : out.toString(encoding);
+ String oldContent = document.get();
+
+ int startIndex = 0;
+ while (startIndex < newContent.length() &&
+ startIndex < oldContent.length() &&
+ newContent.charAt(startIndex) == oldContent.charAt(startIndex))
+ {
+ ++startIndex;
+ }
+ int newEndIndex = newContent.length() - 1;
+ int oldEndIndex = oldContent.length() - 1;
+ while (newEndIndex >= startIndex &&
+ oldEndIndex >= startIndex &&
+ newContent.charAt(newEndIndex) == oldContent.charAt(oldEndIndex))
+ {
+ --newEndIndex;
+ --oldEndIndex;
+ }
+
+ String replacement = newContent.substring(startIndex, newEndIndex + 1);
+ int length = oldEndIndex - startIndex + 1;
+ handledStructuredModelChange = true;
+ document.replace(startIndex, length, replacement);
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ /**
+ * This handles part activation.
+ */
+ protected void handlePartActivated(IWorkbenchPart workbenchPart)
+ {
+ if (workbenchPart == this)
+ {
+ if (getActivePage() == 0)
+ {
+ setCurrentViewer((Viewer)sourceViewer);
+ }
+ }
+ else if (workbenchPart instanceof ContentOutline)
+ {
+ if (((ContentOutline)workbenchPart).getCurrentPage() == contentOutlinePage)
+ {
+ getEditorSite().getActionBarContributor().setActiveEditor(XSDEditor.this);
+
+ setCurrentViewer(contentOutlineViewer);
+ }
+ }
+ else if (workbenchPart instanceof PropertySheet)
+ {
+ if (((PropertySheet)workbenchPart).getCurrentPage() == propertySheetPage)
+ {
+ getActionBarContributor().setActiveEditor(XSDEditor.this);
+ }
+ }
+ }
+
+ /**
+ * This is here for the listener to be able to call it.
+ */
+ @Override
+ protected void firePropertyChange(int action)
+ {
+ super.firePropertyChange(action);
+ }
+
+ /**
+ * This sets the selection into whichever viewer is active.
+ */
+ public void setSelectionToViewer(final Collection<?> collection)
+ {
+ // Make sure it's okay.
+ //
+ if (collection != null && !collection.isEmpty())
+ {
+ Runnable runnable =
+ new Runnable()
+ {
+ public void run()
+ {
+ Viewer viewer = currentViewer;
+ if (viewer == sourceViewer)
+ {
+ if (contentOutlineViewer != null && !contentOutlineViewer.getControl().isDisposed())
+ {
+ viewer = contentOutlineViewer;
+ }
+ }
+
+ // Try to select the items in the current content viewer of the editor.
+ //
+ if (viewer != null)
+ {
+ StructuredSelection selection = new StructuredSelection(collection.toArray());
+ viewer.setSelection(selection, true);
+ if (currentViewer == sourceViewer)
+ {
+ handleContentOutlineSelectionForTextEditor(selection, true);
+ }
+ }
+ }
+ };
+ getSite().getShell().getDisplay().asyncExec(runnable);
+ }
+ }
+
+ /**
+ * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+ * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+ * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+ */
+ public EditingDomain getEditingDomain()
+ {
+ return editingDomain;
+ }
+
+ public void setCurrentViewerPane(ViewerPane viewerPane)
+ {
+ if (currentViewerPane != viewerPane)
+ {
+ if (currentViewerPane != null)
+ {
+ currentViewerPane.showFocus(false);
+ }
+ currentViewerPane = viewerPane;
+ }
+
+ if (currentViewerPane != null)
+ {
+ setCurrentViewer(currentViewerPane.getViewer());
+ }
+ }
+
+ /**
+ * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+ * is the current one.
+ */
+ public void setCurrentViewer(Viewer viewer)
+ {
+ // If it is changing...
+ //
+ if (currentViewer != viewer)
+ {
+ if (selectionChangedListener == null)
+ {
+ // Create the listener on demand.
+ //
+ selectionChangedListener =
+ new ISelectionChangedListener()
+ {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent)
+ {
+ setSelection(selectionChangedEvent.getSelection());
+ }
+ };
+ }
+
+ // Stop listening to the old one.
+ //
+ if (currentViewer != null)
+ {
+ currentViewer.removeSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Start listening to the new one.
+ //
+ if (viewer != null)
+ {
+ viewer.addSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Remember it.
+ //
+ currentViewer = viewer;
+
+ // Set the editors selection based on the current viewer's selection.
+ //
+ setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+ }
+ }
+
+ /**
+ * This is the contributor for the XSD model editor.
+ */
+ static public class ActionBarContributor
+ extends EditingDomainActionBarContributor
+ implements ISelectionChangedListener
+ {
+ protected IEditorPart activeEditorPart;
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ */
+ protected IAction refreshViewerAction =
+ new Action(XSDEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item"))
+ {
+ @Override
+ public boolean isEnabled()
+ {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run()
+ {
+ if (activeEditorPart instanceof IViewerProvider)
+ {
+ Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+ if (viewer != null)
+ {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This action opens the Properties view.
+ */
+ protected IAction showPropertiesViewAction =
+ new Action(XSDEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item"))
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action enable or disable automatic validation.
+ */
+ protected IAction validateAutomaticallyAction =
+ new Action(XSDEditorPlugin.INSTANCE.getString("_UI_ValidateAutomatically_menu_item"))
+ {
+ @Override
+ public void run()
+ {
+ ((XSDEditor)activeEditorPart).setValidateAutomatically(isChecked());
+ }
+ };
+
+ /**
+ * This will contain one CreateChildAction corresponding to each
+ * descriptor generated for the current selection.
+ */
+ protected Collection<IAction> createChildActions = Collections.emptyList();
+
+ /**
+ * This is the menu manager into which menu contribution items should be
+ * added for the child creation actions.
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one CreateSiblingAction corresponding to each
+ * descriptor generated for the current selection's parent.
+ */
+ protected Collection<IAction> createSiblingActions = Collections.emptyList();
+
+ /**
+ * This is the menu manager into which menu contribution items should be
+ * added for sibling creation actions.
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This creates an instance of the contributor.
+ */
+ public ActionBarContributor()
+ {
+ super(ADDITIONS_LAST_STYLE);
+ }
+
+ /**
+ * This adds to the menu bar a menu for editor actions, duplicating
+ * the menu contribution made in the plugin.xml, so that the new menu is
+ * accessible for modification in code. Also, sub-menus are created for
+ * the addition and removal of child and sibling creation items.
+ */
+ @Override
+ public void contributeToMenu(IMenuManager menuManager)
+ {
+ super.contributeToMenu(menuManager);
+
+ // duplicate the menu contribution in the plugin.xml
+ IMenuManager submenuManager = new MenuManager(XSDEditorPlugin.INSTANCE.getString("_UI_XSDEditor_menu"), "org.eclipse.xsdMenuID");
+ menuManager.insertAfter("additions", submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // prepare for child and sibling creation item addition/removal
+ createChildMenuManager = new MenuManager(XSDEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ createSiblingMenuManager = new MenuManager(XSDEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", new Separator("actions"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener
+ (new IMenuListener()
+ {
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ menuManager.updateAll(true);
+ }
+ });
+
+ validateAutomaticallyAction.setChecked(true);
+ submenuManager.insertAfter("additions-end", validateAutomaticallyAction);
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * This adds Separators to the tool bar.
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager)
+ {
+ toolBarManager.add(new Separator("xsd-settings"));
+ toolBarManager.add(new Separator("xsd-additions"));
+ }
+
+ /**
+ * When the active editor changes, this remembers the change, and
+ * registers with it as a selection provider.
+ */
+ @Override
+ public void setActiveEditor(IEditorPart part)
+ {
+ super.setActiveEditor(part);
+ activeEditorPart = part;
+
+ // switch to the new selection provider
+ if (selectionProvider != null)
+ {
+ selectionProvider.removeSelectionChangedListener(this);
+ }
+ selectionProvider = part.getSite().getSelectionProvider();
+ selectionProvider.addSelectionChangedListener(this);
+
+ // fake a selection changed event to update the menus
+ if (selectionProvider.getSelection() != null)
+ selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+
+ if (part instanceof XSDEditor)
+ {
+ validateAutomaticallyAction.setChecked(((XSDEditor)part).isValidateAutomatically());
+ }
+ }
+
+ /**
+ * This implements {@link ISelectionChangedListener}, handling
+ * SelectionChangedEvents by querying for the children and siblings that
+ * can be added to the selected object and updating the menus
+ * accordingly.
+ */
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ // remove any menu items for old selection
+ if (createChildMenuManager != null)
+ {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null)
+ {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // query new selection for appropriate new child/sibling descriptors...
+ Collection<?> newChildDescriptors = Collections.emptyList();
+ Collection<?> newSiblingDescriptors = Collections.emptyList();
+ ISelection sel = event.getSelection();
+
+ if (sel instanceof IStructuredSelection
+ && ((IStructuredSelection) sel).size() == 1)
+ {
+ Object object = ((IStructuredSelection) sel).getFirstElement();
+ EditingDomain domain =
+ ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(domain.getParent(object), object);
+ }
+
+ // generate actions for selection, populate and redraw menu
+ createChildActions = generateCreateChildActions(newChildDescriptors, sel);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, sel);
+
+ if (createChildMenuManager != null)
+ {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null)
+ {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link CreateChildAction} for each object in
+ * <code>descriptors</code>, and returns the collection of these actions.
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection)
+ {
+ Collection<IAction> actions = new LinkedList<IAction>();
+ for (Object descriptor : descriptors)
+ {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link CreateSiblingAction} for each object in
+ * <code>descriptors</code>, and returns the collection of these actions.
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection)
+ {
+ Collection<IAction> actions = new LinkedList<IAction>();
+ for (Object descriptor : descriptors)
+ {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified IContributionManager with
+ * ActionContributionItems based on the IActions contained in
+ * the actions collection, by inserting them before the specified
+ * contribution item ID. If ID is null, they are simply added.
+ */
+ protected void populateManager(IContributionManager manager, Collection<IAction> actions, String ID)
+ {
+ for (IAction action : actions)
+ {
+ if (ID != null)
+ {
+ manager.insertBefore(ID, action);
+ }
+ else
+ {
+ manager.add(action);
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified IContributionManager all
+ * ActionContributionItems based on the IActions contained in the
+ * actions collection.
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<IAction> actions)
+ {
+ IContributionItem[] item = manager.getItems();
+ for (int i = 0; i < item.length; i++)
+ {
+ // look into SubContributionItems
+ IContributionItem curItem = item[i];
+ while (curItem instanceof SubContributionItem)
+ {
+ curItem = ((SubContributionItem) curItem).getInnerItem();
+ }
+
+ // delete ActionContributionItems with matching action
+ if (curItem instanceof ActionContributionItem)
+ {
+ IAction action = ((ActionContributionItem) curItem).getAction();
+ if (actions.contains(action))
+ {
+ manager.remove(curItem);
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ */
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ super.menuAboutToShow(menuManager);
+
+ MenuManager submenuManager = new MenuManager(XSDEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+
+ submenuManager = new MenuManager(XSDEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ */
+ @Override
+ protected void addGlobalActions(IMenuManager menuManager)
+ {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ super.addGlobalActions(menuManager);
+ }
+ }
+
+ /**
+ * This returns the viewer as required by the {@link IViewerProvider} interface.
+ */
+ public Viewer getViewer()
+ {
+ return currentViewer;
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+ */
+ protected void createContextMenuFor(StructuredViewer viewer)
+ {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+ contextMenu.addMenuListener(this);
+ Menu menu= contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(contextMenu, viewer);
+
+ int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+ Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+ viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+ viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+
+ /**
+ * This is the method used by the framework to install your own controls.
+ */
+ @Override
+ public void createPages()
+ {
+ createSourcePage();
+ createSemanticsPage();
+ createSyntaxPage();
+
+ setActivePage(0);
+ setCurrentViewer((Viewer)sourceViewer);
+ }
+
+ protected void createResource(String uri)
+ {
+ extendedCreateResource(uri);
+ }
+
+ protected void standardCreateResource(String uri)
+ {
+
+ // Load the resource through the editing domain.
+ // This will creat a context and associate it with the resource set.
+ //
+ XSDResourceImpl xsdResource = (XSDResourceImpl)editingDomain.loadResource(uri);
+ xsdSchema = xsdResource.getSchema();
+ }
+
+ protected void extendedCreateResource(String uri)
+ {
+ editingDomain.getResourceSet().getLoadOptions().put(XSDResourceImpl.XSD_TRACK_LOCATION, Boolean.TRUE);
+ try
+ {
+ XSDResourceImpl xsdResource = (XSDResourceImpl)editingDomain.getResourceSet().createResource(URI.createURI(uri), XSDPackage.eCONTENT_TYPE);
+ xsdResource.load(editingDomain.getResourceSet().getLoadOptions());
+ xsdSchema = xsdResource.getSchema();
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ protected void createModel()
+ {
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation()
+ {
+ // This is the method that gets invoked when the operation runs.
+ //
+ @Override
+ protected void execute(IProgressMonitor progressMonitor) throws CoreException
+ {
+ try
+ {
+ progressMonitor.beginTask("", 12);
+
+ editingDomain.getResourceSet().getLoadOptions().put(XSDResourceImpl.XSD_PROGRESS_MONITOR, progressMonitor);
+ createResource(EditUIUtil.getURI(getEditorInput()).toString());
+ editingDomain.getResourceSet().getLoadOptions().remove(XSDResourceImpl.XSD_PROGRESS_MONITOR);
+
+ progressMonitor.worked(1);
+ progressMonitor.subTask(XSDEditorPlugin.INSTANCE.getString("_UI_Validating_message"));
+ if (xsdSchema.getDiagnostics().isEmpty())
+ {
+ xsdSchema.validate();
+ }
+
+ if (determineEncoding() != null && getEditorInput() instanceof IFileEditorInput)
+ {
+ ((IFileEditorInput)getEditorInput()).getFile().setCharset(determineEncoding(), BasicMonitor.subProgress(progressMonitor, 2));
+ }
+
+ progressMonitor.worked(1);
+ progressMonitor.subTask(XSDEditorPlugin.INSTANCE.getString("_UI_ReportingErrors_message"));
+ }
+ finally
+ {
+ progressMonitor.done();
+ }
+ }
+ };
+
+ try
+ {
+ // This runs the operation, and shows progress.
+ // (It appears to be a bad thing to fork this onto another thread.)
+ //
+ new ProgressMonitorDialog(getSite().getShell()).run(false, false, operation);
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ protected void handleSourceCaretPosition()
+ {
+ int offset = sourceViewer.getTextWidget().getCaretOffset();
+ Element element = xsdSchema.getElement();
+ if (element != null)
+ {
+ IDocument document = sourceViewer.getDocument();
+ int line = 0;
+ int lineOffset = 0;
+ try
+ {
+ line = document.getLineOfOffset(offset);
+ lineOffset = document.getLineOffset(line);
+ }
+ catch (BadLocationException exception)
+ {
+ // Ignore
+ }
+ int column = offset - lineOffset;
+ // System.out.println("[" + line + "," + column + "]");
+
+ Element bestElement = findBestElement(element, line + 1, column + 1);
+ if (bestElement != null)
+ {
+ handleSelectedNodes(Collections.singleton(bestElement));
+ }
+ }
+ }
+
+ public Element findBestElement(Element element, int line, int column)
+ {
+ int startLine = XSDParser.getStartLine(element);
+ int startColumn = XSDParser.getStartColumn(element);
+ int endLine = XSDParser.getEndLine(element);
+ int endColumn = XSDParser.getEndColumn(element);
+
+ Element candidate = null;
+ if ((line == startLine ? column >= startColumn : line > startLine) &&
+ (line == endLine ? column <= endColumn : line < endLine))
+ {
+ candidate = element;
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (child.getNodeType() == Node.ELEMENT_NODE)
+ {
+ Element childElement = (Element)child;
+ Element betterCandidate = findBestElement(childElement, line, column);
+ if (betterCandidate != null)
+ {
+ candidate = betterCandidate;
+ break;
+ }
+ }
+ }
+ }
+ return candidate;
+ }
+
+
+ public void handleSelectedNodes(Collection<? extends Node> nodes)
+ {
+ Collection<Object> selection = new ArrayList<Object>();
+ for (Node node : nodes)
+ {
+ XSDConcreteComponent bestXSDConcreteComponent = xsdSchema.getCorrespondingComponent(node);
+ if (bestXSDConcreteComponent != null)
+ {
+ boolean add = true;
+ for (XSDConcreteComponent parent = bestXSDConcreteComponent;
+ parent != null;
+ parent = parent.getContainer())
+ {
+ if (selection.contains(parent))
+ {
+ add = false;
+ break;
+ }
+ }
+ if (add)
+ {
+ XSDConcreteComponent container = bestXSDConcreteComponent.getContainer();
+ if (container instanceof XSDParticle || container instanceof XSDAttributeUse)
+ {
+ bestXSDConcreteComponent = container;
+ }
+ selection.add(bestXSDConcreteComponent);
+ }
+ }
+ }
+ if (!selection.isEmpty())
+ {
+ ISelection newSelection = new StructuredSelection(selection.toArray());
+ if (contentOutlineViewer != null)
+ {
+ contentOutlineViewer.setSelection(newSelection, true);
+ }
+ setSelection(newSelection);
+ handleContentOutlineSelectionForTextEditor(newSelection, false);
+ }
+ }
+
+ protected void handleDocumentChange()
+ {
+ try
+ {
+ XSDParser xsdParser = new XSDParser(null);
+ String documentContent = sourceViewer.getDocument().get();
+ xsdParser.parseString(documentContent);
+ xsdSchema.clearDiagnostics();
+ xsdParser.setSchema(xsdSchema);
+ if (validateAutomatically)
+ {
+ xsdSchema.validate();
+ handleDiagnostics(null);
+ }
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ protected void createSourcePage()
+ {
+ try
+ {
+ // Create the SED Editor.
+ //
+ textEditor =
+ new TextEditor()
+ {
+ @Override
+ public ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles)
+ {
+ final ISourceViewer result = super.createSourceViewer(parent, ruler, styles);
+ result.getTextWidget().addMouseListener
+ (new MouseAdapter()
+ {
+ @Override
+ public void mouseDown(MouseEvent event)
+ {
+ handleSourceCaretPosition();
+ }
+ });
+ result.getTextWidget().addKeyListener
+ (new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent event)
+ {
+ switch (event.keyCode)
+ {
+ case SWT.ARROW_UP:
+ case SWT.ARROW_DOWN:
+ case SWT.ARROW_LEFT:
+ case SWT.ARROW_RIGHT:
+ case SWT.PAGE_UP:
+ case SWT.PAGE_DOWN:
+ {
+ handleSourceCaretPosition();
+ break;
+ }
+ }
+ }
+ });
+ sourceViewer = result;
+ return result;
+ }
+ };
+
+ createModel();
+
+ int pageIndex = addPage(textEditor, getEditorInput());
+
+ handleDiagnostics(null);
+
+ setPageText(pageIndex, XSDEditorPlugin.INSTANCE.getString("_UI_Source_title"));
+
+ IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+
+ document.addDocumentListener
+ (new IDocumentListener()
+ {
+ protected Timer timer = new Timer();
+ protected TimerTask timerTask;
+
+ public void documentAboutToBeChanged(DocumentEvent documentEvent)
+ {
+ // Ingore
+ }
+
+ public void documentChanged(final DocumentEvent documentEvent)
+ {
+ try
+ {
+ // This is need for the Properties view.
+ //
+ // setSelection(StructuredSelection.EMPTY);
+
+ if (timerTask != null)
+ {
+ timerTask.cancel();
+ }
+
+ if (handledStructuredModelChange)
+ {
+ handledStructuredModelChange = false;
+ handleDocumentChange();
+ }
+ else
+ {
+ timerTask =
+ new TimerTask()
+ {
+ @Override
+ public void run()
+ {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable()
+ {
+ public void run()
+ {
+ handleDocumentChange();
+ }
+ });
+ }
+ };
+
+ timer.schedule(timerTask, 1000);
+ }
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ });
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ protected void createSemanticsPage()
+ {
+ // Create a page for the selection tree view.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), XSDEditor.this)
+ {
+ @Override
+ public Viewer createViewer(Composite composite)
+ {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ @Override
+ public void requestActivation()
+ {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ semanticSelectionViewer = (TreeViewer)viewerPane.getViewer();
+ semanticSelectionViewer.setContentProvider(new AdapterFactoryContentProvider(semanticAdapterFactory));
+ semanticSelectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(semanticAdapterFactory));
+ semanticSelectionViewer.setAutoExpandLevel(2);
+
+ semanticSelectionViewer.addSelectionChangedListener
+ (new ISelectionChangedListener()
+ {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent)
+ {
+ if (currentViewer == semanticSelectionViewer && contentOutlineViewer != null)
+ {
+ contentOutlineViewer.setSelection(selectionChangedEvent.getSelection(), true);
+ }
+ }
+ });
+
+ semanticSelectionViewer.setInput(new ItemProvider(Collections.singleton(xsdSchema)));
+ viewerPane.setTitle(xsdSchema);
+
+ new AdapterFactoryTreeEditor(semanticSelectionViewer.getTree(), semanticAdapterFactory);
+
+ createContextMenuFor(semanticSelectionViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, XSDEditorPlugin.INSTANCE.getString("_UI_Semantics_title"));
+ }
+ }
+
+ protected void createSyntaxPage()
+ {
+ // Create a page for the selection tree view.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), XSDEditor.this)
+ {
+ @Override
+ public Viewer createViewer(Composite composite)
+ {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ @Override
+ public void requestActivation()
+ {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ syntacticSelectionViewer = (TreeViewer)viewerPane.getViewer();
+ syntacticSelectionViewer.setContentProvider(new AdapterFactoryContentProvider(syntacticAdapterFactory));
+ syntacticSelectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(syntacticAdapterFactory));
+ syntacticSelectionViewer.setAutoExpandLevel(2);
+
+ syntacticSelectionViewer.setInput(new ItemProvider(Collections.singleton(xsdSchema)));
+ viewerPane.setTitle(xsdSchema);
+
+ new AdapterFactoryTreeEditor(syntacticSelectionViewer.getTree(), syntacticAdapterFactory);
+
+ createContextMenuFor(syntacticSelectionViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, XSDEditorPlugin.INSTANCE.getString("_UI_Syntax_title"));
+ }
+ }
+
+ protected void initializeMarkerPosition(IMarker marker, XSDDiagnostic xsdDiagnostic) throws CoreException
+ {
+ Node node = xsdDiagnostic.getNode();
+ if (node != null && node.getNodeType() == Node.ATTRIBUTE_NODE)
+ {
+ node = ((Attr)node).getOwnerElement();
+ }
+ if (node != null && /* !xsdDiagnostic.isSetLine() && */ XSDParser.getUserData(node) != null)
+ {
+ int startLine = XSDParser.getStartLine(node) - 1;
+ int startColumn = XSDParser.getStartColumn(node);
+ int endLine = XSDParser.getEndLine(node) - 1;
+ int endColumn = XSDParser.getEndColumn(node);
+
+ marker.setAttribute(IMarker.LINE_NUMBER, startLine);
+
+ try
+ {
+ IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+ marker.setAttribute(IMarker.CHAR_START, document.getLineOffset(startLine) + startColumn - 1);
+ marker.setAttribute(IMarker.CHAR_END, document.getLineOffset(endLine) + endColumn - 1);
+ }
+ catch (BadLocationException exception)
+ {
+ // Ignore
+ }
+ }
+ else
+ {
+ marker.setAttribute(IMarker.LINE_NUMBER, xsdDiagnostic.getLine());
+ }
+ }
+
+ protected void handleDiagnostics(IProgressMonitor progressMonitor)
+ {
+ if (progressMonitor == null)
+ {
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ IWorkspaceRunnable operation =
+ new IWorkspaceRunnable()
+ {
+ // This is the method that gets invoked when the operation runs.
+ //
+ public void run(IProgressMonitor localProgressMonitor) throws CoreException
+ {
+ handleDiagnostics(localProgressMonitor);
+ }
+ };
+
+ try
+ {
+ ResourcesPlugin.getWorkspace().run(operation, new NullProgressMonitor());
+ // getSite().getWorkbenchWindow().run(false, false, operation);
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ else
+ {
+ XSDConcreteComponent newSelection = null;
+ if (getEditorInput() instanceof IFileEditorInput)
+ {
+ try
+ {
+ // I assume that the input is a file object.
+ //
+ IFileEditorInput modelFile = (IFileEditorInput)getEditorInput();
+ IFile file = modelFile.getFile();
+
+ IMarker[] markers = file.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_ZERO);
+ Collection<IMarker> deletableMarkers = new ArrayList<IMarker>(Arrays.asList(markers));
+
+ if (validateAutomatically)
+ {
+ for (XSDDiagnostic xsdDiagnostic : xsdSchema.getAllDiagnostics())
+ {
+ String uriReferencePath = xsdSchema.eResource().getURIFragment(xsdDiagnostic);
+
+ IMarker marker = null;
+ for (int i = 0; i < markers.length; ++i)
+ {
+ if (markers[i].getAttribute(XSDDiagnostic.URI_FRAGMENT_ATTRIBUTE, "").equals(uriReferencePath))
+ {
+ marker = markers[i];
+ deletableMarkers.remove(marker);
+ break;
+ }
+ }
+
+ if (marker == null)
+ {
+ marker = file.createMarker(XSDDiagnostic.MARKER);
+ marker.setAttribute(XSDDiagnostic.URI_FRAGMENT_ATTRIBUTE, uriReferencePath);
+ }
+
+ initializeMarkerPosition(marker, xsdDiagnostic);
+
+ marker.setAttribute(IMarker.MESSAGE, xsdDiagnostic.getMessage());
+
+ switch (xsdDiagnostic.getSeverity().getValue())
+ {
+ case XSDDiagnosticSeverity.FATAL:
+ case XSDDiagnosticSeverity.ERROR:
+ {
+ if (newSelection == null)
+ {
+ newSelection = xsdDiagnostic.getPrimaryComponent();
+ }
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
+ break;
+ }
+ case XSDDiagnosticSeverity.WARNING:
+ {
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
+ break;
+ }
+ case XSDDiagnosticSeverity.INFORMATION:
+ {
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);
+ break;
+ }
+ }
+ }
+ }
+
+ for (IMarker marker : deletableMarkers)
+ {
+ marker.delete();
+ }
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ // This will refresh the status.
+ //
+ if (editorSelection != null)
+ {
+ setSelection(editorSelection);
+ }
+ // This is the startup case.
+ //
+ else if (newSelection != null)
+ {
+ final IStructuredSelection errorSelection = new StructuredSelection(newSelection);
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable()
+ {
+ public void run()
+ {
+ if (contentOutlineViewer != null)
+ {
+ contentOutlineViewer.setSelection(errorSelection, true);
+ }
+ if (sourceViewer != null)
+ {
+ handleContentOutlineSelectionForTextEditor(errorSelection, true);
+ }
+ setSelection(errorSelection);
+ handleSourceCaretPosition();
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * This is used to track the active viewer.
+ */
+ @Override
+ protected void pageChange(int pageIndex)
+ {
+ super.pageChange(pageIndex);
+
+ if (pageIndex == 0)
+ {
+ setCurrentViewerPane(null);
+ setCurrentViewer((Viewer)sourceViewer);
+ }
+
+ if (contentOutlinePage != null)
+ {
+ handleContentOutlineSelection(contentOutlinePage.getSelection());
+ }
+ }
+
+ /**
+ * This is how the framework determines which interfaces we implement.
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public Object getAdapter(Class key)
+ {
+ if (key.equals(IContentOutlinePage.class))
+ {
+ return getContentOutlinePage();
+ }
+ else if (key.equals(IPropertySheetPage.class))
+ {
+ return getPropertySheetPage();
+ }
+ else
+ {
+ return textEditor.getAdapter(key);
+ }
+ }
+
+ /**
+ * This is a utility function to resolve a component.
+ */
+ public static XSDConcreteComponent getResolvedObject(XSDConcreteComponent xsdConcreteComponent)
+ {
+ XSDConcreteComponent result =
+ (XSDConcreteComponent)new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDAttributeUse(XSDAttributeUse xsdAttributeUse)
+ {
+ return xsdAttributeUse.getAttributeDeclaration().getResolvedAttributeDeclaration();
+ }
+ @Override
+ public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration xsdAttributeDeclaration)
+ {
+ return xsdAttributeDeclaration.getResolvedAttributeDeclaration();
+ }
+ @Override
+ public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition xsdAttributeGroupDefinition)
+ {
+ return xsdAttributeGroupDefinition.getResolvedAttributeGroupDefinition();
+ }
+ @Override
+ public Object caseXSDElementDeclaration(XSDElementDeclaration xsdElementDeclaration)
+ {
+ return xsdElementDeclaration.getResolvedElementDeclaration();
+ }
+ @Override
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ return xsdModelGroupDefinition.getResolvedModelGroupDefinition();
+ }
+ @Override
+ public Object caseXSDParticle(XSDParticle xsdParticle)
+ {
+ Object resolvedObject = getResolvedObject(xsdParticle.getContent());
+ if (resolvedObject instanceof XSDModelGroup)
+ {
+ return xsdParticle;
+ }
+ else
+ {
+ return resolvedObject;
+ }
+ }
+ }.doSwitch(xsdConcreteComponent);
+
+ return result == null ? xsdConcreteComponent : result;
+ }
+
+ /**
+ * This accesses a cached version of the content outliner.
+ */
+ public IContentOutlinePage getContentOutlinePage()
+ {
+ if (contentOutlinePage == null)
+ {
+ // The content outline is just a tree.
+ //
+ class MyContentOutlinePage extends ContentOutlinePage
+ {
+ @Override
+ public void createControl(Composite parent)
+ {
+ super.createControl(parent);
+ contentOutlineViewer = getTreeViewer();
+ contentOutlineViewer.addSelectionChangedListener(this);
+ contentOutlineViewer.setAutoExpandLevel(2);
+
+ selectNextDiagnosticsAction = new SelectDiagnosticAction(true, contentOutlineViewer);
+ selectPreviousDiagnosticsAction = new SelectDiagnosticAction(false, contentOutlineViewer);
+
+ selectNextUseAction = new SelectUseAction(true, contentOutlineViewer);
+ selectPreviousUseAction = new SelectUseAction(false, contentOutlineViewer);
+
+ contentOutlineViewer.getTree().addMouseListener
+ (new MouseAdapter()
+ {
+ @Override
+ public void mouseDoubleClick(MouseEvent event)
+ {
+ // Do fancy navigation selections when double clicking.
+ //
+ IStructuredSelection selection = (IStructuredSelection)contentOutlineViewer.getSelection();
+ for (Object object : selection.toList())
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)object;
+ Object resolvedObject = getResolvedObject(xsdConcreteComponent);
+ if (xsdConcreteComponent != resolvedObject)
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(new Object [] {resolvedObject}), true);
+ break;
+ }
+ else if (xsdConcreteComponent instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdConcreteComponent;
+ XSDSimpleTypeDefinition typeDefinition = xsdAttributeDeclaration.getTypeDefinition();
+ if (typeDefinition != null && typeDefinition.getSchema() == xsdAttributeDeclaration.getSchema())
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(new Object [] {typeDefinition}), true);
+ break;
+ }
+ }
+ else if (xsdConcreteComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdConcreteComponent;
+ XSDTypeDefinition typeDefinition = xsdElementDeclaration.getTypeDefinition();
+ if (typeDefinition != null && typeDefinition.getSchema() == xsdElementDeclaration.getSchema())
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(new Object [] {typeDefinition}), true);
+ break;
+ }
+ }
+ else if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdConcreteComponent;
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null && baseTypeDefinition.getSchema() == xsdSimpleTypeDefinition.getSchema())
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(new Object [] {baseTypeDefinition}), true);
+ break;
+ }
+ XSDSimpleTypeDefinition itemTypeDefinition = xsdSimpleTypeDefinition.getItemTypeDefinition();
+ if (itemTypeDefinition != null && itemTypeDefinition.getSchema() == xsdSimpleTypeDefinition.getSchema())
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(new Object [] {itemTypeDefinition}), true);
+ break;
+ }
+ List<?> memberTypeDefinitions = xsdSimpleTypeDefinition.getMemberTypeDefinitions();
+ if (!memberTypeDefinitions.isEmpty())
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(memberTypeDefinitions.toArray()), true);
+ break;
+ }
+ }
+ else if (xsdConcreteComponent instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)xsdConcreteComponent;
+ XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null && baseTypeDefinition.getSchema() == xsdComplexTypeDefinition.getSchema())
+ {
+ contentOutlineViewer.setSelection(new StructuredSelection(new Object [] {baseTypeDefinition}), true);
+ break;
+ }
+ }
+ }
+ }
+ });
+
+ // Set up the tree viewer.
+ //
+ contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(syntacticAdapterFactory));
+ contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(syntacticAdapterFactory));
+ contentOutlineViewer.setInput(new ItemProvider(Collections.singleton(xsdSchema)));
+
+ // Make sure our popups work.
+ //
+ createContextMenuFor(contentOutlineViewer);
+
+ // Select the root object in the view.
+ //
+ ArrayList<Object> selection = new ArrayList<Object>();
+ selection.add(xsdSchema);
+ contentOutlineViewer.setSelection(new StructuredSelection(selection), true);
+
+ // Listen to selection so that we can handle it is a special way.
+ //
+ this.addSelectionChangedListener
+ (new ISelectionChangedListener()
+ {
+ // This ensures that we handle selections correctly.
+ //
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ ISelection s = event.getSelection();
+ if (contentOutlineViewer == currentViewer)
+ {
+ handleContentOutlineSelection(s);
+ }
+ selectNextDiagnosticsAction.setCurrentObjects(((IStructuredSelection)s).toList());
+ selectPreviousDiagnosticsAction.setCurrentObjects(((IStructuredSelection)s).toList());
+
+ selectNextUseAction.setCurrentObjects(((IStructuredSelection)s).toList());
+ selectPreviousUseAction.setCurrentObjects(((IStructuredSelection)s).toList());
+ }
+ });
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars)
+ {
+ super.setActionBars(actionBars);
+
+ contentOutlineStatusLineManager = actionBars.getStatusLineManager();
+
+ actionBars.getToolBarManager().add(selectNextUseAction);
+ actionBars.getToolBarManager().add(selectPreviousUseAction);
+
+ actionBars.getToolBarManager().add(selectNextDiagnosticsAction);
+ actionBars.getToolBarManager().add(selectPreviousDiagnosticsAction);
+
+
+ actionBars.getMenuManager().add(selectNextDiagnosticsAction);
+ actionBars.getMenuManager().add(selectPreviousDiagnosticsAction);
+
+ actionBars.getMenuManager().add(selectNextUseAction);
+ actionBars.getMenuManager().add(selectPreviousUseAction);
+
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ }
+
+ contentOutlinePage = new MyContentOutlinePage();
+
+ // Listen to selection so that we can handle it is a special way.
+ //
+ contentOutlinePage.addSelectionChangedListener
+ (new ISelectionChangedListener()
+ {
+ // This ensures that we handle selections correctly.
+ //
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ if (contentOutlineViewer == currentViewer)
+ {
+ handleContentOutlineSelection(event.getSelection());
+ }
+ }
+ });
+ }
+
+ return contentOutlinePage;
+ }
+
+ /**
+ * This accesses a cached version of the property sheet.
+ */
+ public IPropertySheetPage getPropertySheetPage()
+ {
+ if (propertySheetPage == null)
+ {
+ propertySheetPage =
+ new ExtendedPropertySheetPage(editingDomain)
+ {
+ @Override
+ public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager)
+ {
+ super.makeContributions(menuManager, toolBarManager, statusLineManager);
+ }
+
+ @Override
+ public void setSelectionToViewer(List<?> selection)
+ {
+ XSDEditor.this.setSelectionToViewer(selection);
+ XSDEditor.this.setFocus();
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars)
+ {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider
+ (new AdapterFactoryContentProvider(syntacticAdapterFactory)
+ {
+ @Override
+ protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource)
+ {
+ return
+ new PropertySource(object, itemPropertySource)
+ {
+ @Override
+ protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor)
+ {
+ return
+ new PropertyDescriptor(this.object, itemPropertyDescriptor)
+ {
+ @Override
+ public CellEditor createPropertyEditor(Composite composite)
+ {
+ if (!this.itemPropertyDescriptor.canSetProperty(this.object))
+ {
+ return null;
+ }
+
+ CellEditor result = null;
+
+ Object genericFeature = this.itemPropertyDescriptor.getFeature(this.object);
+ if (genericFeature instanceof EStructuralFeature)
+ {
+ EStructuralFeature feature = (EStructuralFeature)genericFeature;
+ EObject getEType = feature.getEType();
+ if (getEType == ecorePackage.getEBoolean())
+ {
+ Collection<?> choiceOfValues = this.itemPropertyDescriptor.getChoiceOfValues(this.object);
+ if (choiceOfValues != null)
+ {
+ result =
+ new ExtendedComboBoxCellEditor
+ (composite, new ArrayList<Object>(choiceOfValues), getLabelProvider(), true);
+ }
+ }
+ }
+ if (result == null)
+ {
+ result = super.createPropertyEditor(composite);
+ }
+ return result;
+ }
+ };
+ }
+ };
+ }
+ });
+ }
+
+ return propertySheetPage;
+ }
+
+ /**
+ * This deals with how we want selection in the outliner to affect the other views.
+ */
+ public void handleContentOutlineSelection(ISelection selection)
+ {
+ if ((currentViewerPane != null || getActivePage() == 0) && !selection.isEmpty() && selection instanceof IStructuredSelection)
+ {
+ if (getActivePage() == 0)
+ {
+ handleContentOutlineSelectionForTextEditor(selection, true);
+ }
+ else if (currentViewerPane.getViewer() == syntacticSelectionViewer)
+ {
+ // Set the selection to the widget.
+ //
+ syntacticSelectionViewer.setSelection(selection);
+ }
+ else if (currentViewerPane.getViewer() == semanticSelectionViewer)
+ {
+ ArrayList<Object> selectionList = new ArrayList<Object>();
+ for (Object object : ((IStructuredSelection)selection).toList())
+ {
+ selectionList.add(getResolvedObject((XSDConcreteComponent)object));
+ }
+
+ // Set the selection to the widget.
+ //
+ semanticSelectionViewer.setSelection(new StructuredSelection(selectionList));
+ }
+ }
+ }
+
+ /**
+ * This deals with how we want selection in the outliner to affect the text editor.
+ */
+ public void handleContentOutlineSelectionForTextEditor(ISelection selection, boolean reveal)
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)((IStructuredSelection)selection).iterator().next();
+ if (xsdConcreteComponent instanceof XSDParticle)
+ {
+ XSDParticle xsdParticle = (XSDParticle)xsdConcreteComponent;
+ XSDConcreteComponent content = xsdParticle.getContent();
+ if (content != null)
+ {
+ xsdConcreteComponent = content;
+ }
+ }
+
+ Element element = xsdConcreteComponent.getElement();
+ if (element != null)
+ {
+ try
+ {
+ IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+ int startLine = XSDParser.getStartLine(element);
+ int startColumn = XSDParser.getStartColumn(element);
+ int endLine = XSDParser.getEndLine(element);
+ int endColumn = XSDParser.getEndColumn(element);
+
+ int startOffset = document.getLineOffset(startLine - 1);
+ startOffset += startColumn - 1;
+ int endOffset = document.getLineOffset(endLine - 1);
+ endOffset += endColumn - 1;
+ if (startLine == endLine)
+ {
+ textEditor.setHighlightRange(startOffset, endOffset - startOffset, false);
+ if (reveal)
+ {
+ textEditor.selectAndReveal(startOffset, endOffset - startOffset);
+ }
+ }
+ else
+ {
+ textEditor.setHighlightRange(startOffset, endOffset - startOffset, reveal);
+ }
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply tests the command stack.
+ */
+ @Override
+ public boolean isDirty()
+ {
+ return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded() || textEditor != null && textEditor.isDirty();
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply saves the model file.
+ */
+ @Override
+ public void doSave(IProgressMonitor progressMonitor)
+ {
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation()
+ {
+ // This is the method that gets invoked when the operation runs.
+ //
+ @Override
+ protected void execute(IProgressMonitor monitor) throws CoreException
+ {
+ try
+ {
+ // Save the resource to the file system.
+ //
+ xsdSchema.eResource().save(Collections.EMPTY_MAP);
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ try
+ {
+ // This runs the operation, and shows progress.
+ // (It appears to be a bad thing to fork this onto another thread.)
+ //
+ new ProgressMonitorDialog(getSite().getShell()).run(false, false, operation);
+
+ // Refresh the necessary state.
+ //
+ ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+ textEditor.doRevertToSaved();
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+ }
+ catch (Exception exception)
+ {
+ // Something went wrong that shouldn't.
+ //
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ /**
+ * This always returns false because it is not current supported.
+ */
+ @Override
+ public boolean isSaveAsAllowed()
+ {
+ return true;
+ }
+
+ /**
+ * This also changes the editor's input.
+ */
+ @Override
+ public void doSaveAs()
+ {
+ SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+ saveAsDialog.open();
+ IPath path = saveAsDialog.getResult();
+ if (path != null)
+ {
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ if (file != null)
+ {
+ xsdSchema.eResource().setURI(URI.createPlatformResourceURI(file.getFullPath().toString(), true));
+ IFileEditorInput modelFile = new FileEditorInput(file);
+ setInput(modelFile);
+ setPartName(file.getName());
+ doSave(getActionBars().getStatusLineManager().getProgressMonitor());
+ }
+ }
+ }
+
+ public void gotoMarker(IMarker marker)
+ {
+ try
+ {
+/*
+ if (marker.getType().equals(XSDDiagnostic.MARKER) && xsdSchema != null)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ xsdSchema.getDiagnosticForURIReferencePath(marker.getAttribute(XSDDiagnostic.URI_FRAGMENT_ATTRIBUTE, "/0/"));
+ }
+*/
+ setActivePage(0);
+ ((IGotoMarker)textEditor.getAdapter(IGotoMarker.class)).gotoMarker(marker);
+ }
+ catch (Exception exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ /**
+ * This is called during startup.
+ */
+ @Override
+ public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException
+ {
+ setSite(site);
+ setInput(editorInput);
+ setPartName(editorInput.getName());
+ site.setSelectionProvider(new MultiPageSelectionProvider(this));
+ site.getPage().addPartListener(partListener);
+ }
+
+ @Override
+ public void setFocus()
+ {
+ if (currentViewerPane != null)
+ {
+ currentViewerPane.setFocus();
+ }
+ else
+ {
+ getControl(getActivePage()).setFocus();
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener)
+ {
+ selectionChangedListeners.add(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener)
+ {
+ selectionChangedListeners.remove(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+ */
+ public ISelection getSelection()
+ {
+ return editorSelection;
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+ * Calling this result will notify the listeners.
+ */
+ public void setSelection(ISelection selection)
+ {
+ editorSelection = selection;
+
+ SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);
+ ((MultiPageSelectionProvider)getSite().getSelectionProvider()).fireSelectionChanged(selectionChangedEvent);
+ for (ISelectionChangedListener listener : selectionChangedListeners)
+ {
+ listener.selectionChanged(selectionChangedEvent);
+ }
+
+ setStatusLineManager(selection);
+ }
+
+ /**
+ * This shows the selection on the status line.
+ */
+ public void setStatusLineManager(ISelection selection)
+ {
+ IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+ contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+ if (statusLineManager != null)
+ {
+ if (selection instanceof IStructuredSelection)
+ {
+ Collection<?> collection = ((IStructuredSelection)selection).toList();
+ switch (collection.size())
+ {
+ case 0:
+ {
+ statusLineManager.setMessage(XSDEditorPlugin.INSTANCE.getString("_UI_NoObjectSelected"));
+ break;
+ }
+ case 1:
+ {
+ Object object = collection.iterator().next();
+ String text = new AdapterFactoryItemDelegator(syntacticAdapterFactory).getText(object);
+ text = XSDEditorPlugin.INSTANCE.getString("_UI_SingleObjectSelected", new Object [] { text });
+ if (object instanceof XSDConcreteComponent)
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)object;
+ if (!xsdConcreteComponent.getDiagnostics().isEmpty())
+ {
+ text = (xsdConcreteComponent.getDiagnostics().get(0)).getMessage();
+ }
+ }
+
+ statusLineManager.setMessage(text);
+ break;
+ }
+ default:
+ {
+ statusLineManager.setMessage
+ (XSDEditorPlugin.INSTANCE.getString("_UI_MultiObjectSelected", new Object [] { Integer.toString(collection.size()) }));
+ break;
+ }
+ }
+ }
+ else
+ {
+ statusLineManager.setMessage("");
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+ */
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+ }
+
+ /**
+ * This convenience method provides typed access to the contributor.
+ */
+ public EditingDomainActionBarContributor getActionBarContributor()
+ {
+ return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+ }
+
+ /**
+ * This convenience method provides access to the actionbars.
+ */
+ public IActionBars getActionBars()
+ {
+ return getActionBarContributor().getActionBars();
+ }
+
+ /**
+ * This is called when the editor is disposed.
+ */
+ @Override
+ public void dispose()
+ {
+ super.dispose();
+ getSite().getPage().removePartListener(partListener);
+ ((IDisposable)semanticAdapterFactory).dispose();
+ ((IDisposable)syntacticAdapterFactory).dispose();
+ }
+
+ protected boolean validateAutomatically = true;
+ public void setValidateAutomatically(boolean validateAutomatically)
+ {
+ this.validateAutomatically = validateAutomatically;
+ if (validateAutomatically)
+ {
+ handleDocumentChange();
+ }
+ else
+ {
+ handleDiagnostics(null);
+ }
+ }
+
+ public boolean isValidateAutomatically()
+ {
+ return validateAutomatically;
+ }
+
+ /**
+ * This is the base action for the outline actions.
+ */
+ class SelectObjectAction extends Action
+ {
+ protected Collection<?> objectsToSelect;
+ protected StructuredViewer structuredViewer;
+
+ public SelectObjectAction(StructuredViewer structuredViewer, String text, ImageDescriptor imageDescriptor)
+ {
+ super(text, imageDescriptor);
+ this.structuredViewer = structuredViewer;
+ setEnabled(false);
+ }
+
+ public void setObjectToSelect(Object objectToSelect)
+ {
+ setObjectsToSelect
+ (objectToSelect != null ?
+ Collections.singleton(objectToSelect) :
+ Collections.EMPTY_LIST);
+ }
+
+ public void setObjectsToSelect(Collection<?> objectsToSelect)
+ {
+ this.objectsToSelect = new ArrayList<Object>(objectsToSelect);
+ setEnabled(!objectsToSelect.isEmpty());
+ }
+
+ @Override
+ public void run()
+ {
+ structuredViewer.setSelection(new StructuredSelection(objectsToSelect.toArray()), true);
+ }
+ }
+
+ /**
+ * This is used to implement the select next/previous unresolved component action.
+ */
+ class SelectDiagnosticAction extends SelectObjectAction
+ {
+ boolean isForward;
+ public SelectDiagnosticAction(boolean isForward, StructuredViewer structuredViewer)
+ {
+ super
+ (structuredViewer,
+ isForward ? "Select &Next Diagnosed Object" : "Select &Previous Diagnosed Object",
+ ExtendedImageRegistry.INSTANCE.getImageDescriptor
+ (XSDEditorPlugin.INSTANCE.getImage
+ (isForward ? "full/elcl16/SelectNextDiagnosticObject" : "full/elcl16/SelectPreviousDiagnosticObject")));
+ this.isForward = isForward;
+
+ setHoverImageDescriptor
+ (ExtendedImageRegistry.INSTANCE.getImageDescriptor
+ (XSDEditorPlugin.INSTANCE.getImage
+ (isForward ? "full/clcl16/SelectNextDiagnosticObject" : "full/clcl16/SelectPreviousDiagnosticObject")));
+
+ setDisabledImageDescriptor
+ (ExtendedImageRegistry.INSTANCE.getImageDescriptor
+ (XSDEditorPlugin.INSTANCE.getImage
+ (isForward ? "full/dlcl16/SelectNextDiagnosticObject" : "full/dlcl16/SelectPreviousDiagnosticObject")));
+ }
+
+ public void updateAction()
+ {
+ setCurrentObjects(((IStructuredSelection)structuredViewer.getSelection()).toList());
+ }
+
+ public void setCurrentObjects(List<?> objects)
+ {
+ XSDConcreteComponent result = null;
+
+ boolean isStarted = false;
+ for (TreeIterator<?> tree = editingDomain.treeIterator(xsdSchema); tree.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)tree.next();
+ if (!isForward && objects.contains(xsdConcreteComponent))
+ {
+ break;
+ }
+ else if (isStarted || !isForward)
+ {
+ if (!xsdConcreteComponent.getDiagnostics().isEmpty() ||
+ xsdConcreteComponent instanceof XSDParticle &&
+ !((XSDParticle)xsdConcreteComponent).getContent().getDiagnostics().isEmpty() ||
+ xsdConcreteComponent instanceof XSDAttributeUse &&
+ !((XSDAttributeUse)xsdConcreteComponent).getContent().getDiagnostics().isEmpty())
+ {
+ if (isStarted)
+ {
+ result = xsdConcreteComponent;
+ break;
+ }
+ else
+ {
+ result = xsdConcreteComponent;
+ }
+ }
+ }
+ else if (objects.contains(xsdConcreteComponent))
+ {
+ isStarted = true;
+ }
+ }
+
+ setObjectToSelect(result);
+ }
+ }
+
+ /**
+ * This is used to implement the select next/previous component use action.
+ */
+ class SelectUseAction extends SelectObjectAction
+ {
+ boolean isForward;
+ public SelectUseAction(boolean isForward, StructuredViewer structuredViewer)
+ {
+ super
+ (structuredViewer,
+ isForward ? "Select &Next Use" : "Select &Previous Use",
+ ExtendedImageRegistry.INSTANCE.getImageDescriptor
+ (XSDEditorPlugin.INSTANCE.getImage
+ (isForward ? "full/elcl16/SelectNextUseObject" : "full/elcl16/SelectPreviousUseObject")));
+ this.isForward = isForward;
+
+ setHoverImageDescriptor
+ (ExtendedImageRegistry.INSTANCE.getImageDescriptor
+ (XSDEditorPlugin.INSTANCE.getImage
+ (isForward ? "full/clcl16/SelectNextUseObject" : "full/clcl16/SelectPreviousUseObject")));
+ setDisabledImageDescriptor
+ (ExtendedImageRegistry.INSTANCE.getImageDescriptor
+ (XSDEditorPlugin.INSTANCE.getImage
+ (isForward ? "full/dlcl16/SelectNextUseObject" : "full/dlcl16/SelectPreviousUseObject")));
+ }
+
+ public void updateAction()
+ {
+ setCurrentObjects(((IStructuredSelection)structuredViewer.getSelection()).toList());
+ }
+
+ public void setCurrentObjects(List<?> objects)
+ {
+ XSDConcreteComponent result = null;
+
+ final List<Object> resolvedObjects = new ArrayList<Object>();
+ for (Object object : objects)
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)object;
+ XSDConcreteComponent resolvedObject = getResolvedObject(xsdConcreteComponent);
+ if (resolvedObject != this)
+ {
+ resolvedObjects.add(resolvedObject);
+ }
+ }
+
+ boolean isStarted = false;
+ for (TreeIterator<?> tree = editingDomain.treeIterator(xsdSchema); tree.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)tree.next();
+ if (!isForward && objects.contains(xsdConcreteComponent))
+ {
+ break;
+ }
+ else if (isStarted || !isForward)
+ {
+ XSDConcreteComponent resolvedObject = getResolvedObject(xsdConcreteComponent);
+ if (resolvedObjects.contains(resolvedObject))
+ {
+ if (isStarted)
+ {
+ result = xsdConcreteComponent;
+ break;
+ }
+ else
+ {
+ result = xsdConcreteComponent;
+ }
+ }
+ }
+ else if (objects.contains(xsdConcreteComponent))
+ {
+ isStarted = true;
+ }
+ }
+
+ setObjectToSelect(result);
+ }
+ }
+
+ public static class GenericXMLResourceFactoryImpl extends XMLResourceFactoryImpl
+ {
+ public GenericXMLResourceFactoryImpl()
+ {
+ super();
+ }
+
+ @Override
+ public Resource createResource(URI uri)
+ {
+ XMLResource result = new GenericXMLResourceImpl(uri);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_LINE_WIDTH, 80);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ return result;
+ }
+ }
+
+ public static class GenericXMLResourceImpl extends XMLResourceImpl
+ {
+ protected XSDEcoreBuilder xsdEcoreBuilder;
+
+ public GenericXMLResourceImpl(URI uri)
+ {
+ super(uri);
+ }
+
+ @Override
+ protected XMLLoad createXMLLoad()
+ {
+ return
+ new XMLLoadImpl(createXMLHelper())
+ {
+ @Override
+ protected DefaultHandler makeDefaultHandler()
+ {
+ return
+ new SAXXMLHandler(resource, helper, options)
+ {
+ @Override
+ protected void handleTopLocations(String prefix, String name)
+ {
+ if (urisToLocations != null)
+ {
+ xsdEcoreBuilder = new XSDEcoreBuilder(extendedMetaData);
+ Collection<Resource> resources = xsdEcoreBuilder.generateResources(urisToLocations.values());
+ resource.getResourceSet().getResources().addAll(resources);
+ }
+
+ // Ensure that anything can be handled, even if it's not recognized.
+ //
+ String namespaceURI = helper.getURI(prefix);
+ if (extendedMetaData.getPackage(namespaceURI) == null)
+ {
+ extendedMetaData.demandFeature(namespaceURI, name, true);
+ }
+ }
+ };
+ }
+ };
+ }
+
+/*
+ public void doLoad(InputStream inputStream, final Map op) throws IOException
+ {
+ XMLLoad xmlStart =
+ new XMLLoadImpl(createXMLHelper())
+ {
+ protected DefaultHandler makeDefaultHandler()
+ {
+ SAXXMLHandler saxXMLHandler =
+ new SAXXMLHandler(resource, helper, op)
+ {
+ protected MyStack elementDeclarations = new MyStack();
+ protected MyStack dfaStates = new MyStack();
+
+ protected void createTopObject(String prefix, String name)
+ {
+ String namespaceURI = helper.getURI(prefix);
+ for (int i = 0, size = attribs.getLength(); i < size; ++i)
+ {
+ String attributeName = attribs.getQName(i);
+ int index = attributeName.indexOf(":");
+ String attributeNamespaceURI = null;
+ String attributeLocalName = attributeName;
+ if (index != -1)
+ {
+ attributeNamespaceURI = helper.getURI(attributeName.substring(0, index));
+ attributeLocalName = attributeName.substring(index + 1);
+ }
+
+ if (XSDConstants.SCHEMA_INSTANCE_URI_2001.equals(attributeNamespaceURI) &&
+ (namespaceURI == null ? "noNamespaceSchemaLocation" : "schemaLocation").equals(attributeLocalName))
+ {
+ String schemaLocationHint = null;
+
+ if (namespaceURI == null)
+ {
+ schemaLocationHint = attribs.getValue(i);
+ }
+ else
+ {
+ for (StringTokenizer stringTokenizer = new StringTokenizer(attribs.getValue(i));
+ stringTokenizer.hasMoreTokens(); )
+ {
+ String namespaceURIHint = stringTokenizer.nextToken();
+ if (stringTokenizer.hasMoreTokens())
+ {
+ if (namespaceURIHint.equals(namespaceURI))
+ {
+ schemaLocationHint = stringTokenizer.nextToken();
+ break;
+ }
+ else
+ {
+ stringTokenizer.nextToken();
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ if (schemaLocationHint != null)
+ {
+ URI uri = URI.createURI(schemaLocationHint);
+ if (resolve && uri.isRelative() && uri.hasRelativePath())
+ {
+ uri = uri.resolve(resourceURI);
+ }
+
+ xsdEcoreBuilder = new XSDEcoreBuilder();
+ Collection resources = xsdEcoreBuilder.generateResources(uri);
+ resource.getResourceSet().getResources().addAll(resources);
+ }
+ }
+ }
+
+ if (xsdEcoreBuilder == null)
+ {
+ error(new XMIException("Cannot resolve schema location", getLocation(), getLineNumber(), getColumnNumber()));
+ }
+ else
+ {
+ XSDElementDeclaration xsdElementDeclaration =
+ xsdEcoreBuilder.getSchema().resolveElementDeclaration(namespaceURI, name);
+ EClass eClass = (EClass)xsdEcoreBuilder.getXSDComponentToEModelElementMap().get(xsdElementDeclaration);
+ if (eClass != null)
+ {
+ processTopObject(eClass.getEPackage().getEFactoryInstance().create(eClass));
+ elementDeclarations.push(xsdElementDeclaration);
+ XSDParticle xsdParticle = xsdElementDeclaration.getTypeDefinition().getComplexType();
+ if (xsdParticle != null)
+ {
+ dfaStates.push(xsdParticle.getDFA().getInitialState());
+ }
+ else
+ {
+ dfaStates.push(null);
+ }
+ }
+ else
+ {
+ error(new XMIException("Cannot resolve EClass ", getLocation(), getLineNumber(), getColumnNumber()));
+ }
+ }
+ }
+
+ protected void processElement(String name, String prefix, String localName)
+ {
+ if (isError())
+ {
+ types.push(ERROR_TYPE);
+ }
+ else
+ {
+ if (objects.isEmpty())
+ {
+ createTopObject(prefix, localName);
+
+ }
+ else
+ {
+ EObject peekObject = (EObject)objects.peek();
+ XSDParticle.DFA.State state = (XSDParticle.DFA.State)dfaStates.peek();
+ if (state == null)
+ {
+ error(new XMIException("Cannot contain content ", getLocation(), getLineNumber(), getColumnNumber()));
+ }
+ else
+ {
+ XSDParticle.DFA.Transition transition = state.accept(helper.getURI(prefix), localName);
+ if (transition == null)
+ {
+ error(new XMIException("Not expecting this element ", getLocation(), getLineNumber(), getColumnNumber()));
+ }
+ else
+ {
+ dfaStates.set(dfaStates.size() - 1, transition.getState());
+
+ XSDParticle transitionXSDParticle = transition.getParticle();
+ XSDTerm xsdTerm = transitionXSDParticle.getTerm();
+ XSDElementDeclaration xsdElementDeclaration = null;
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ }
+ else
+ {
+ xsdElementDeclaration = xsdEcoreBuilder.getSchema().resolveElementDeclaration(helper.getURI(prefix), name);
+ }
+
+ EClass eClass = (EClass)xsdEcoreBuilder.getXSDComponentToEModelElementMap().get(xsdElementDeclaration);
+ if (eClass != null)
+ {
+ EObject eObject = eClass.getEPackage().getEFactoryInstance().create(eClass);
+ ((EList)peekObject.eGet(peekObject.eClass().getEStructuralFeature("contents"))).add(eObject);
+
+ processObject(eObject);
+ elementDeclarations.push(xsdElementDeclaration);
+ XSDParticle xsdParticle = xsdElementDeclaration.getTypeDefinition().getComplexType();
+ if (xsdParticle != null)
+ {
+ dfaStates.push(xsdParticle.getDFA().getInitialState());
+ }
+ else
+ {
+ dfaStates.push(null);
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdElementDeclaration.getTypeDefinition().getSimpleType();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ EStructuralFeature valueFeature = eClass.getEStructuralFeature("value");
+ if (valueFeature != null)
+ {
+ text = new StringBuffer();
+ types.set(types.size() - 1, valueFeature);
+ }
+ }
+ }
+ }
+ else
+ {
+ error(new XMIException("Cannot resolve EClass ", getLocation(), getLineNumber(), getColumnNumber()));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void endElement(String uri, String localName, String name)
+ {
+ EObject topObject = (EObject)objects.pop();
+ elements.pop();
+ Object type = types.pop();
+
+ if (text != null)
+ {
+ EAttribute eAttribute = (EAttribute)type;
+ EDataType eDataType = eAttribute.getEAttributeType();
+ Object value = eDataType.getEPackage().getEFactoryInstance().createFromString(eDataType, text.toString());
+ topObject.eSet(eAttribute, value);
+ text = null;
+ }
+
+ XSDParticle.DFA.State state = (XSDParticle.DFA.State)dfaStates.pop();
+ if (state != null && !state.isAccepting())
+ {
+ error(new XMIException("Need more content ", getLocation(), getLineNumber(), getColumnNumber()));
+ }
+ elementDeclarations.pop();
+ }
+ };
+
+ return new SAXWrapper(saxXMLHandler);
+ }
+ };
+ xmlStart.load(this, inputStream, op);
+ }
+*/
+ }
+
+ public static class GenericXMLLoadAction extends org.eclipse.ui.actions.ActionDelegate implements org.eclipse.ui.IActionDelegate
+ {
+ protected IFile file;
+ protected IContainer container;
+
+ public GenericXMLLoadAction()
+ {
+ super();
+ }
+
+ @Override
+ public void run(IAction action)
+ {
+ if (file != null)
+ {
+ execute(file);
+ }
+ else
+ {
+ execute(container);
+ }
+ }
+
+ public void execute(IContainer container)
+ {
+ try
+ {
+ IResource [] contents = container.members();
+ for (int i = 0; i < contents.length; ++i)
+ {
+ IResource resource = contents[i];
+ if (resource.getType() == IResource.FILE)
+ {
+ if ("xml".equals(resource.getLocation().getFileExtension()) &&
+ resource.getName().indexOf(".xml") == resource.getName().lastIndexOf(".xml"))
+ {
+ execute((IFile)resource);
+ }
+ }
+ else
+ {
+ execute((IContainer)resource);
+ }
+ }
+ }
+ catch (CoreException exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ exception.printStackTrace();
+ }
+
+ }
+
+ public void execute(IFile file)
+ {
+ System.err.println("Processing: " + file.getFullPath());
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml", new GenericXMLResourceFactoryImpl());
+
+ Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(file.getFullPath().toString(), true), true);
+ resource.setURI(URI.createPlatformResourceURI(file.getFullPath().toString() + ".save.xml", true));
+ try
+ {
+ resource.save(Collections.EMPTY_MAP);
+ }
+ catch (IOException exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ exception.printStackTrace();
+ }
+
+ List<EPackage> ePackages = new ArrayList<EPackage>();
+ for (Resource otherResource : resourceSet.getResources())
+ {
+ for (Object object : otherResource.getContents())
+ {
+ if (object instanceof EPackage)
+ {
+ ePackages.add((EPackage)object);
+ }
+ }
+ }
+
+ Resource ePackagesResource = resourceSet.createResource(URI.createPlatformResourceURI(file.getFullPath().toString() + ".ecore", true));
+ ePackagesResource.getContents().addAll(EcoreUtil.copyAll(ePackages));
+ try
+ {
+ ePackagesResource.save(Collections.EMPTY_MAP);
+ }
+ catch (IOException exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ exception.printStackTrace();
+ }
+
+ try
+ {
+ XSDParser xsdParser = new XSDParser(null);
+ xsdParser.parse(URI.createPlatformResourceURI(file.getFullPath().toString(), true).toString());
+ Document document = xsdParser.getDocument();
+ OutputStream outputStream =
+ resourceSet.getURIConverter().createOutputStream
+ (URI.createPlatformResourceURI(file.getFullPath().toString() + ".format.xml", true));
+ XSDResourceImpl.serialize(outputStream, document);
+ outputStream.close();
+ }
+ catch (IOException exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ exception.printStackTrace();
+ }
+
+ try
+ {
+ XSDParser xsdParser = new XSDParser(null);
+ xsdParser.parse(URI.createPlatformResourceURI(file.getFullPath().toString() + ".save.xml", true).toString());
+ Document document = xsdParser.getDocument();
+ OutputStream outputStream =
+ resourceSet.getURIConverter().createOutputStream
+ (URI.createPlatformResourceURI(file.getFullPath().toString() + ".save.format.xml", true));
+ XSDResourceImpl.serialize(outputStream, document);
+ outputStream.close();
+ }
+ catch (IOException exception)
+ {
+ XSDEditorPlugin.INSTANCE.log(exception);
+ exception.printStackTrace();
+ }
+ }
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection)
+ {
+ if (selection instanceof IStructuredSelection)
+ {
+ Object object = ((IStructuredSelection)selection).getFirstElement();
+ if (object instanceof IFile)
+ {
+ file = (IFile)object;
+ action.setEnabled(true);
+ return;
+ }
+ else if (object instanceof IContainer)
+ {
+ container = (IContainer)object;
+ action.setEnabled(true);
+ return;
+ }
+ }
+ file = null;
+ container = null;
+ action.setEnabled(false);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditorPlugin.java b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditorPlugin.java
new file mode 100644
index 0000000..0ef697c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditorPlugin.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.presentation;
+
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+
+/**
+ * The <b>Plugin</b> for the XSD.Editor library.
+ * @see #INSTANCE
+ */
+public final class XSDEditorPlugin extends EMFPlugin
+{
+ /**
+ * The singleton instance of the plugin.
+ */
+ public static final XSDEditorPlugin INSTANCE = new XSDEditorPlugin();
+
+ /**
+ * The one instance of this class.
+ */
+ private static Implementation plugin;
+
+ /**
+ * Creates the singleton instance.
+ */
+ private XSDEditorPlugin()
+ {
+ super(new ResourceLocator[] {});
+ }
+
+ /*
+ * Javadoc copied from base class.
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * @return the singleton instance.
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ */
+ public static class Implementation extends EclipseUIPlugin
+ {
+ /**
+ * Creates an instance.
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDModelWizard.java b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDModelWizard.java
new file mode 100644
index 0000000..0793e67
--- /dev/null
+++ b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDModelWizard.java
@@ -0,0 +1,644 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSDModelWizard extends Wizard implements INewWizard
+{
+ /**
+ * * The file extensions supported by this editor.
+ * <!-- begin-user-doc -->
+ * @since 2.4
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<String> FILE_EXTENSIONS =
+ Collections.unmodifiableList(Arrays.asList(XSDEditorPlugin.INSTANCE.getString("_UI_XSDEditorFilenameExtensions").split("\\s*,\\s*")));
+
+ /**
+ * A formatted list of supported file extensions, suitable for display.
+ * <!-- begin-user-doc -->
+ * @since 2.4
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String FORMATTED_FILE_EXTENSIONS =
+ XSDEditorPlugin.INSTANCE.getString("_UI_XSDEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+ /**
+This caches an instance of the model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDPackage xsdPackage = XSDPackage.eINSTANCE;
+
+ /**
+ * This caches an instance of the model factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDFactory xsdFactory = xsdPackage.getXSDFactory();
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDModelWizardNewFileCreationPage newFileCreationPage;
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+ /**
+ * Remember the selection during initialization for populating the default container.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStructuredSelection selection;
+
+ /**
+ * Remember the workbench during initialization.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IWorkbench workbench;
+
+ /**
+ *
+ */
+ protected List<String> encodings;
+
+ /**
+ * This just records the information.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection)
+ {
+ this.workbench = workbench;
+ this.selection = selection;
+ setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(XSDEditorPlugin.INSTANCE.getImage("full/wizban/NewXSD")));
+ }
+
+ /**
+ * Create a new model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EObject createInitialModel()
+ {
+ return initialObjectCreationPage.createInitialModel();
+ }
+
+ /**
+ * Do the work after everything is specified.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean performFinish()
+ {
+ try
+ {
+ // Remember the file.
+ //
+ final IFile modelFile = getModelFile();
+
+ // Do the work within an operation.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation()
+ {
+ @Override
+ protected void execute(IProgressMonitor progressMonitor)
+ {
+ try
+ {
+ // Create a resource set
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Get the URI of the model file.
+ //
+ URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+ // Create a resource for this file.
+ //
+ Resource resource = resourceSet.createResource(fileURI, XSDPackage.eCONTENT_TYPE);
+
+ // Add the initial model object to the contents.
+ //
+ EObject rootObject = createInitialModel();
+ if (rootObject != null)
+ {
+ resource.getContents().add(rootObject);
+ }
+
+ // Save the contents of the resource to the file system.
+ //
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XSDResourceImpl.XSD_ENCODING, initialObjectCreationPage.getEncoding());
+ resource.save(options);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ progressMonitor.done();
+ }
+ }
+ };
+
+ getContainer().run(false, false, operation);
+
+ // Select the new file resource in the current view.
+ //
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IWorkbenchPage page = workbenchWindow.getActivePage();
+ final IWorkbenchPart activePart = page.getActivePart();
+ if (activePart instanceof ISetSelectionTarget)
+ {
+ final ISelection targetSelection = new StructuredSelection(modelFile);
+ getShell().getDisplay().asyncExec
+ (new Runnable()
+ {
+ public void run()
+ {
+ ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+ }
+ });
+ }
+
+ // Open an editor on the new file.
+ //
+ try
+ {
+ page.openEditor
+ (new FileEditorInput(modelFile),
+ workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+ }
+ catch (PartInitException exception)
+ {
+ MessageDialog.openError(workbenchWindow.getShell(), XSDEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+ return false;
+ }
+
+ return true;
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * This is the one page of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class XSDModelWizardNewFileCreationPage extends WizardNewFileCreationPage
+ {
+ /**
+ * Remember the model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IFile modelFile;
+
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection)
+ {
+ super(pageId, selection);
+ }
+
+ /**
+ * The framework calls this to see if the file is correct.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean validatePage()
+ {
+ if (super.validatePage())
+ {
+ String extension = new Path(getFileName()).getFileExtension();
+ if (extension == null || !FILE_EXTENSIONS.contains(extension))
+ {
+ String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+ setErrorMessage(XSDEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Store the dialog field settings upon completion.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean performFinish()
+ {
+ modelFile = getModelFile();
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile()
+ {
+ return
+ modelFile == null ?
+ ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())) :
+ modelFile;
+ }
+ }
+
+ /**
+ * This is the page where the type of object to create is selected.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public class XSDModelWizardInitialObjectCreationPage extends WizardPage
+ {
+ /**
+ */
+ protected Text schemaForSchemaPrefixText;
+
+ /**
+ */
+ protected Text schemaForSchemaNamespaceText;
+
+ /**
+ */
+ protected Text schemaPrefixText;
+
+ /**
+ */
+ protected Text schemaNamespaceText;
+
+ /**
+ */
+ protected Combo encodingField;
+
+ protected boolean isCustomSchemaNamespace = false;
+
+ /**
+ */
+ public XSDModelWizardInitialObjectCreationPage(String pageId)
+ {
+ super(pageId);
+ }
+
+ /**
+ */
+ public void createControl(Composite parent)
+ {
+ Composite composite = new Composite(parent, SWT.NONE);
+ {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 12;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ composite.setLayoutData(data);
+ }
+
+ Label schemaPrefixLabel = new Label(composite, SWT.LEFT);
+ {
+ schemaPrefixLabel.setText(XSDEditorPlugin.INSTANCE.getString("_UI_SchemaPrefix_label"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ schemaPrefixLabel.setLayoutData(data);
+ }
+
+ schemaPrefixText = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ schemaPrefixText.setLayoutData(data);
+ schemaPrefixText.setText("this");
+ }
+
+ Label schemaNamespaceLabel = new Label(composite, SWT.LEFT);
+ {
+ schemaNamespaceLabel.setText(XSDEditorPlugin.INSTANCE.getString("_UI_SchemaNamespaceURI_label"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ schemaNamespaceLabel.setLayoutData(data);
+ }
+
+ schemaNamespaceText = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ schemaNamespaceText.setLayoutData(data);
+ schemaNamespaceText.addKeyListener(new KeyListener()
+ {
+ public void keyReleased(KeyEvent e)
+ {
+ isCustomSchemaNamespace = true;
+ }
+
+ public void keyPressed(KeyEvent e)
+ {
+ // Ignore
+ }
+ });
+ }
+
+ Label schemaForSchemaPrefixLabel = new Label(composite, SWT.LEFT);
+ {
+ schemaForSchemaPrefixLabel.setText(XSDEditorPlugin.INSTANCE.getString("_UI_SchemaForSchemaPrefix_label"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ schemaForSchemaPrefixLabel.setLayoutData(data);
+ }
+
+ schemaForSchemaPrefixText = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ schemaForSchemaPrefixText.setLayoutData(data);
+ schemaForSchemaPrefixText.setText("xsd");
+ }
+
+ Label schemaForSchemaNamespaceLabel = new Label(composite, SWT.LEFT);
+ {
+ schemaForSchemaNamespaceLabel.setText(XSDEditorPlugin.INSTANCE.getString("_UI_SchemaForSchemaNamespaceURI_label"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ schemaForSchemaNamespaceLabel.setLayoutData(data);
+ }
+
+ schemaForSchemaNamespaceText = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ schemaForSchemaNamespaceText.setLayoutData(data);
+ schemaForSchemaNamespaceText.setText(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ }
+
+ Label encodingLabel = new Label(composite, SWT.LEFT);
+ {
+ encodingLabel.setText(XSDEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ encodingLabel.setLayoutData(data);
+ }
+ encodingField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ encodingField.setLayoutData(data);
+ }
+
+ for (String encoding : getEncodings())
+ {
+ encodingField.add(encoding);
+ }
+
+ encodingField.select(0);
+
+ setControl(composite);
+ }
+
+ /**
+ * Store the dialog field settings upon completion.
+ */
+ public boolean performFinish()
+ {
+ return true;
+ }
+
+ public EObject createInitialModel()
+ {
+ XSDSchema xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ Map<String, String> map = xsdSchema.getQNamePrefixToNamespaceMap();
+ map.put(schemaForSchemaPrefixText.getText(), schemaForSchemaNamespaceText.getText());
+ xsdSchema.setSchemaForSchemaQNamePrefix(schemaForSchemaPrefixText.getText());
+ if (schemaNamespaceText.getText() != null && schemaNamespaceText.getText().trim().length() != 0)
+ {
+ xsdSchema.setTargetNamespace(schemaNamespaceText.getText());
+ map.put(schemaPrefixText.getText(), schemaNamespaceText.getText());
+ }
+ return xsdSchema;
+ }
+
+ @Override
+ public void setVisible(boolean visible)
+ {
+ if (visible && !isCustomSchemaNamespace)
+ {
+ schemaNamespaceText.setText("http://" + getModelFile().getFullPath());
+ }
+ super.setVisible(visible);
+ }
+
+ public String getEncoding()
+ {
+ return encodingField.getText();
+ }
+ }
+
+ protected Collection<String> getEncodings()
+ {
+ if (encodings == null)
+ {
+ encodings = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(XSDEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); )
+ {
+ encodings.add(stringTokenizer.nextToken());
+ }
+ }
+ return encodings;
+ }
+
+ /**
+ * The framework calls this to create the contents of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void addPages()
+ {
+ // Create a page, set the title, and the initial model file name.
+ //
+ newFileCreationPage = new XSDModelWizardNewFileCreationPage("Whatever", selection);
+ newFileCreationPage.setTitle(XSDEditorPlugin.INSTANCE.getString("_UI_XSDModelWizard_label"));
+ newFileCreationPage.setDescription(XSDEditorPlugin.INSTANCE.getString("_UI_XSDModelWizard_description"));
+ newFileCreationPage.setFileName(XSDEditorPlugin.INSTANCE.getString("_UI_XSDEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+ addPage(newFileCreationPage);
+
+ // Try and get the resource selection to determine a current directory for the file dialog.
+ //
+ if (selection != null && !selection.isEmpty())
+ {
+ // Get the resource...
+ //
+ Object selectedElement = selection.iterator().next();
+ if (selectedElement instanceof IResource)
+ {
+ // Get the resource parent, if its a file.
+ //
+ IResource selectedResource = (IResource)selectedElement;
+ if (selectedResource.getType() == IResource.FILE)
+ {
+ selectedResource = selectedResource.getParent();
+ }
+
+ // This gives us a directory...
+ //
+ if (selectedResource instanceof IFolder || selectedResource instanceof IProject)
+ {
+ // Set this for the container.
+ //
+ newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+ // Make up a unique new name here.
+ //
+ String defaultModelBaseFilename = XSDEditorPlugin.INSTANCE.getString("_UI_XSDEditorFilenameDefaultBase");
+ String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+ String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+ for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i)
+ {
+ modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+ }
+ newFileCreationPage.setFileName(modelFilename);
+ }
+ }
+ }
+ initialObjectCreationPage = new XSDModelWizardInitialObjectCreationPage("Whatever2");
+ initialObjectCreationPage.setTitle(XSDEditorPlugin.INSTANCE.getString("_UI_XSDModelWizard_label"));
+ initialObjectCreationPage.setDescription(XSDEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+ addPage(initialObjectCreationPage);
+ }
+
+ /**
+ * Get the file from the page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile()
+ {
+ return newFileCreationPage.getModelFile();
+ }
+}
diff --git a/plugins/org.eclipse.xsd.example.installer/.gitignore b/plugins/org.eclipse.xsd.example.installer/.gitignore
new file mode 100644
index 0000000..c14487c
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/.gitignore
@@ -0,0 +1 @@
+build.xml
diff --git a/plugins/org.eclipse.xsd.example.installer/.project b/plugins/org.eclipse.xsd.example.installer/.project
new file mode 100644
index 0000000..228957b
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.example.installer</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.example.installer/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.example.installer/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..900f916
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.example.installer;singleton:=true
+Bundle-Version: 1.5.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.emf.common.ui;bundle-version="[2.21.0,3.0.0)",
+ org.eclipse.xsd;bundle-version="[2.19.0,3.0.0)"
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.xsd.example.installer/about.html b/plugins/org.eclipse.xsd.example.installer/about.html
new file mode 100644
index 0000000..16292be
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>May 5, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.example.installer/build.properties b/plugins/org.eclipse.xsd.example.installer/build.properties
new file mode 100644
index 0000000..dab86eb
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/build.properties
@@ -0,0 +1,6 @@
+bin.includes = about.html,\
+ plugin.properties,\
+ META-INF/,\
+ examples/,\
+ plugin.xml,\
+ icons/
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.example.installer/copyExampleLib.ant b/plugins/org.eclipse.xsd.example.installer/copyExampleLib.ant
new file mode 100644
index 0000000..33ca7d2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/copyExampleLib.ant
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+ Copyright (c) 2012 Eclispe contributors and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v2.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v20.html
+-->
+<project name="copyExampleLib" basedir="..">
+
+ <property name="examples.path" value="../plugins/org.eclipse.xsd.example.installer/examples" />
+ <basename file="${build.project}" property="project" />
+
+ <macrodef name="copyExample">
+ <attribute name="project" />
+ <sequential>
+ <delete includeemptydirs="true" failonerror="false">
+ <fileset dir="${examples.path}/@{project}">
+ <include name="**" />
+ </fileset>
+ </delete>
+
+ <copy todir="${examples.path}/@{project}" overwrite="true">
+ <fileset dir="@{project}">
+ <exclude name=".externalToolBuilders/" />
+ <exclude name="database/" />
+ <exclude name="bin/" />
+ <exclude name="pom.xml" />
+ <exclude name="target/" />
+ <exclude name=".settings/org.eclipse.mylyn*" />
+ <exclude name=".settings/org.eclipse.pde.api.tools.prefs" />
+ <exclude name="**/.gitignore" />
+ <exclude name="**/release.*" />
+ <include name="**" />
+ </fileset>
+ </copy>
+
+ <replaceregexp file="${examples.path}/@{project}/.project"
+ byline="false"
+ flags="sg"
+ match="\s*<buildCommand>\s+<name>org.eclipse.ui.externaltools.ExternalToolBuilder.*?</buildCommand>"
+ replace="" />
+
+ <replaceregexp file="${examples.path}/@{project}/.project"
+ byline="false"
+ flags="s"
+ match="\s*<buildCommand>\s+<name>org.eclipse.pde.api.tools.apiAnalysisBuilder.*?</buildCommand>"
+ replace="" />
+
+ <replaceregexp file="${examples.path}/@{project}/.project"
+ byline="false"
+ flags="s"
+ match="\s*<buildCommand>\s+<name>org.eclipse.oomph.version.VersionBuilder.*?</buildCommand>"
+ replace="" />
+
+ <replaceregexp file="${examples.path}/@{project}/.project"
+ byline="false"
+ flags="s"
+ match="\s*<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>"
+ replace="" />
+
+ <replaceregexp file="${examples.path}/@{project}/.project"
+ byline="false"
+ flags="s"
+ match="\s*<nature>org.eclipse.oomph.version.VersionNature</nature>"
+ replace="" />
+ </sequential>
+ </macrodef>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.example.installer/examples/.gitignore b/plugins/org.eclipse.xsd.example.installer/examples/.gitignore
new file mode 100644
index 0000000..8df44f9
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/examples/.gitignore
@@ -0,0 +1 @@
+/org.eclipse.*
diff --git a/plugins/org.eclipse.xsd.example.installer/icons/full/ctool16/NewXSDExample.gif b/plugins/org.eclipse.xsd.example.installer/icons/full/ctool16/NewXSDExample.gif
new file mode 100644
index 0000000..b6efdd3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/icons/full/ctool16/NewXSDExample.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.example.installer/icons/full/wizban/NewXSDExample.gif b/plugins/org.eclipse.xsd.example.installer/icons/full/wizban/NewXSDExample.gif
new file mode 100644
index 0000000..390f482
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/icons/full/wizban/NewXSDExample.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd.example.installer/plugin.properties b/plugins/org.eclipse.xsd.example.installer/plugin.properties
new file mode 100644
index 0000000..4a41841
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/plugin.properties
@@ -0,0 +1,21 @@
+# /**
+# * Copyright (c) 2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Example Installer
+providerName=Eclipse Modeling Project
+
+_UI_XSDExampleCategory_name = XML Schema Definition
+
+_UI_XSDWizard_name = XML Schema Example
+_UI_XSDWizard_desc = Create a plug-in project that uses the XSD model APIs to load, validate, and manipulate XML Schemas
+_UI_XSDProject_desc = This project contains source that uses the XSD model APIs to load, validate, and manipulate XML Schemas.
diff --git a/plugins/org.eclipse.xsd.example.installer/plugin.xml b/plugins/org.eclipse.xsd.example.installer/plugin.xml
new file mode 100644
index 0000000..cf82d65
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/plugin.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.ui.newWizards">
+ <category
+ id="org.eclipse.xsd.examples.XSD"
+ name="%_UI_XSDExampleCategory_name"
+ parentCategory="org.eclipse.ui.Examples">
+ </category>
+ <wizard
+ id="org.eclipse.xsd.examples.XSDWizard"
+ name="%_UI_XSDWizard_name"
+ class="org.eclipse.emf.common.ui.wizard.ExampleInstallerWizard"
+ category="org.eclipse.ui.Examples/org.eclipse.xsd.examples.XSD"
+ project="true"
+ icon="icons/full/ctool16/NewXSDExample.gif">
+ <description>%_UI_XSDWizard_desc</description>
+ <selection class="org.eclipse.ui.IWorkingSet" />
+ </wizard>
+ </extension>
+
+ <extension point="org.eclipse.emf.common.ui.examples">
+ <example
+ id="org.eclipse.xsd.examples.XSD"
+ wizardID="org.eclipse.xsd.examples.XSDWizard"
+ pageImage="icons/full/wizban/NewXSDExample.gif">
+ <projectDescriptor
+ name="org.eclipse.xsd.example"
+ contentURI="examples/org.eclipse.xsd.example/"
+ description="%_UI_XSDProject_desc"/>
+ </example>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.xsd.example.installer/pom.xml b/plugins/org.eclipse.xsd.example.installer/pom.xml
new file mode 100644
index 0000000..c25c53d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.example.installer/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.example.installer</artifactId>
+ <version>1.5.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.mapping.editor/.project b/plugins/org.eclipse.xsd.mapping.editor/.project
new file mode 100644
index 0000000..0b7c06f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.mapping.editor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.mapping.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.mapping.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2fd1e8f
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.mapping.editor;singleton:=true
+Bundle-Version: 2.10.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.xsd.mapping.editor/about.html b/plugins/org.eclipse.xsd.mapping.editor/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.mapping.editor/about.ini b/plugins/org.eclipse.xsd.mapping.editor/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.xsd.mapping.editor/about.mappings b/plugins/org.eclipse.xsd.mapping.editor/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.xsd.mapping.editor/about.properties b/plugins/org.eclipse.xsd.mapping.editor/about.properties
new file mode 100644
index 0000000..823430a
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Mapping Editor
+
+featureText=XSD Mapping Editor\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/plugins/org.eclipse.xsd.mapping.editor/build.properties b/plugins/org.eclipse.xsd.mapping.editor/build.properties
new file mode 100644
index 0000000..d363fd3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ plugin.properties,\
+ modeling32.png,\
+ META-INF/
+src.includes = about.html
diff --git a/plugins/org.eclipse.xsd.mapping.editor/modeling32.png b/plugins/org.eclipse.xsd.mapping.editor/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.xsd.mapping.editor/plugin.properties b/plugins/org.eclipse.xsd.mapping.editor/plugin.properties
new file mode 100644
index 0000000..ca92779
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/plugin.properties
@@ -0,0 +1,15 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName=XSD Mapping Editor
+providerName=Eclipse Modeling Project
diff --git a/plugins/org.eclipse.xsd.mapping.editor/pom.xml b/plugins/org.eclipse.xsd.mapping.editor/pom.xml
new file mode 100644
index 0000000..c296068
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping.editor/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.mapping.editor</artifactId>
+ <version>2.10.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd.mapping/.project b/plugins/org.eclipse.xsd.mapping/.project
new file mode 100644
index 0000000..29c0a5d
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd.mapping</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd.mapping/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.mapping/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b7bb349
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd.mapping;singleton:=true
+Bundle-Version: 2.9.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.xsd.mapping/about.html b/plugins/org.eclipse.xsd.mapping/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd.mapping/about.ini b/plugins/org.eclipse.xsd.mapping/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.xsd.mapping/about.mappings b/plugins/org.eclipse.xsd.mapping/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.xsd.mapping/about.properties b/plugins/org.eclipse.xsd.mapping/about.properties
new file mode 100644
index 0000000..4883e61
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD Mapping
+
+featureText=XSD Mapping\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/plugins/org.eclipse.xsd.mapping/build.properties b/plugins/org.eclipse.xsd.mapping/build.properties
new file mode 100644
index 0000000..d363fd3
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ plugin.properties,\
+ modeling32.png,\
+ META-INF/
+src.includes = about.html
diff --git a/plugins/org.eclipse.xsd.mapping/modeling32.png b/plugins/org.eclipse.xsd.mapping/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.xsd.mapping/plugin.properties b/plugins/org.eclipse.xsd.mapping/plugin.properties
new file mode 100644
index 0000000..d5b8913
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/plugin.properties
@@ -0,0 +1,15 @@
+# /**
+# * Copyright (c) 2002-2008 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName=XSD Mapping
+providerName=Eclipse Modeling Project
diff --git a/plugins/org.eclipse.xsd.mapping/pom.xml b/plugins/org.eclipse.xsd.mapping/pom.xml
new file mode 100644
index 0000000..5533711
--- /dev/null
+++ b/plugins/org.eclipse.xsd.mapping/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd.mapping</artifactId>
+ <version>2.9.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd/.classpath b/plugins/org.eclipse.xsd/.classpath
new file mode 100644
index 0000000..196d49a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.xsd/.gitignore b/plugins/org.eclipse.xsd/.gitignore
new file mode 100644
index 0000000..3f8f9e7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/.gitignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+*.jar
diff --git a/plugins/org.eclipse.xsd/.project b/plugins/org.eclipse.xsd/.project
new file mode 100644
index 0000000..61be9ad
--- /dev/null
+++ b/plugins/org.eclipse.xsd/.project
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xsd</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.missing.export.versions</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.schema.builder</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.xsd/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.xsd/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.xsd/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..952be83
--- /dev/null
+++ b/plugins/org.eclipse.xsd/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 10:52:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.xsd/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bf47a69
--- /dev/null
+++ b/plugins/org.eclipse.xsd/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xsd; singleton:=true
+Bundle-Version: 2.19.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.xsd.XSDPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.xsd,
+ org.eclipse.xsd.ecore,
+ org.eclipse.xsd.impl,
+ org.eclipse.xsd.impl.type,
+ org.eclipse.xsd.util
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)";resolution:=optional;x-installation:=greedy,
+ org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.xsd
diff --git a/plugins/org.eclipse.xsd/XSD.setup b/plugins/org.eclipse.xsd/XSD.setup
new file mode 100644
index 0000000..9a0682e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/XSD.setup
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<setup:Project
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:git="http://www.eclipse.org/oomph/setup/git/1.0"
+ xmlns:jdt="http://www.eclipse.org/oomph/setup/jdt/1.0"
+ xmlns:predicates="http://www.eclipse.org/oomph/predicates/1.0"
+ xmlns:setup="http://www.eclipse.org/oomph/setup/1.0"
+ xmlns:setup.p2="http://www.eclipse.org/oomph/setup/p2/1.0"
+ xmlns:setup.targlets="http://www.eclipse.org/oomph/setup/targlets/1.0"
+ xmlns:setup.workingsets="http://www.eclipse.org/oomph/setup/workingsets/1.0"
+ xmlns:workingsets="http://www.eclipse.org/oomph/workingsets/1.0"
+ xsi:schemaLocation="http://www.eclipse.org/oomph/setup/git/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/Git.ecore http://www.eclipse.org/oomph/setup/jdt/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/JDT.ecore http://www.eclipse.org/oomph/predicates/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/Predicates.ecore http://www.eclipse.org/oomph/setup/targlets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/SetupTarglets.ecore http://www.eclipse.org/oomph/setup/workingsets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/SetupWorkingSets.ecore http://www.eclipse.org/oomph/workingsets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/WorkingSets.ecore"
+ name="xsd"
+ label="XSD">
+ <annotation
+ source="http://www.eclipse.org/oomph/setup/BrandingInfo">
+ <detail
+ key="imageURI">
+ <value>https://git.eclipse.org/c/emf/org.eclipse.emf.git/plain/plugins/org.eclipse.emf/modeling32.png</value>
+ </detail>
+ <detail
+ key="siteURI">
+ <value>https://www.eclipse.org/modeling/mdt/?project=xsd</value>
+ </detail>
+ </annotation>
+ <setupTask
+ xsi:type="jdt:JRETask"
+ version="JavaSE-11"
+ location="${jre.location-11}"/>
+ <setupTask
+ xsi:type="setup:EclipseIniTask"
+ option="-Xmx"
+ value="2048m"
+ vm="true"/>
+ <setupTask
+ xsi:type="setup:PreferenceTask"
+ key="/instance/org.eclipse.jdt.launching/org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE"
+ value="ignore"/>
+ <setupTask
+ xsi:type="setup:PreferenceTask"
+ key="/instance/org.eclipse.jdt.launching/org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE"
+ value="ignore"/>
+ <setupTask
+ xsi:type="setup:ResourceCreationTask"
+ excludedTriggers="STARTUP MANUAL"
+ targetURL="${workspace.location|uri}/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml"
+ encoding="UTF-8">
+ <content>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <section name="Workbench">
+ <section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
+ <item value="true" key="group_libraries"/>
+ <item value="false" key="linkWithEditor"/>
+ <item value="2" key="layout"/>
+ <item value="2" key="rootMode"/>
+ <item value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0D;&#x0A;&lt;packageExplorer configured=&quot;true&quot; group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;2&quot; sortWorkingSets=&quot;false&quot; workingSetName=&quot;&quot;&gt;&#x0D;&#x0A;&lt;localWorkingSetManager&gt;&#x0D;&#x0A;&lt;workingSet editPageId=&quot;org.eclipse.jdt.internal.ui.OthersWorkingSet&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; id=&quot;1382792884467_1&quot; label=&quot;Other Projects&quot; name=&quot;Other Projects&quot;/&gt;&#x0D;&#x0A;&lt;/localWorkingSetManager&gt;&#x0D;&#x0A;&lt;activeWorkingSet workingSetName=&quot;Other Projects&quot;/&gt;&#x0D;&#x0A;&lt;allWorkingSets workingSetName=&quot;Other Projects&quot;/&gt;&#x0D;&#x0A;&lt;/packageExplorer&gt;" key="memento"/>
+ </section>
+ </section>
+
+ </content>
+ </setupTask>
+ <setupTask
+ xsi:type="setup.p2:P2Task"
+ label="PDE/JDT">
+ <requirement
+ name="org.eclipse.pde.feature.group"/>
+ <requirement
+ name="org.eclipse.jdt.feature.group"/>
+ </setupTask>
+ <setupTask
+ xsi:type="setup.p2:P2Task"
+ label="Oomph Tools">
+ <requirement
+ name="org.eclipse.oomph.version.feature.group"/>
+ <requirement
+ name="org.eclipse.oomph.launches.feature.group"/>
+ <requirement
+ name="org.eclipse.oomph.manifests.feature.group"/>
+ <requirement
+ name="org.eclipse.oomph.projectconfig.feature.group"/>
+ <requirement
+ name="org.eclipse.oomph.projectcopy.feature.group"/>
+ <requirement
+ name="org.eclipse.oomph.workingsets.feature.group"/>
+ </setupTask>
+ <setupTask
+ xsi:type="setup.p2:P2Task"
+ label="EMF/XSD/Ecore Tools">
+ <requirement
+ name="org.eclipse.emf.sdk.feature.group"/>
+ <requirement
+ name="org.eclipse.emf.ecoretools.sdk.feature.group"
+ versionRange="(0.0.1,3.0.0)"
+ optional="true"/>
+ <requirement
+ name="org.eclipse.xsd.sdk.feature.group"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ <repository
+ url="https://download.eclipse.org/ecoretools/updates/0.10/R201006151639"/>
+ </setupTask>
+ <setupTask
+ xsi:type="setup:VariableTask"
+ name="eclipse.target.platform"
+ defaultValue="${eclipse.target.platform.latest}"
+ storageURI="scope://Workspace"/>
+ <setupTask
+ xsi:type="git:GitCloneTask"
+ id="xsd.git.clone"
+ remoteURI="xsd/org.eclipse.xsd">
+ <annotation
+ source="http://www.eclipse.org/oomph/setup/InducedChoices">
+ <detail
+ key="inherit">
+ <value>eclipse.git.gerrit.remoteURIs</value>
+ </detail>
+ <detail
+ key="label">
+ <value>XSD Git or Gerrit Repository</value>
+ </detail>
+ <detail
+ key="target">
+ <value>remoteURI</value>
+ </detail>
+ </annotation>
+ <description>XSD</description>
+ </setupTask>
+ <setupTask
+ xsi:type="setup.targlets:TargletTask">
+ <targlet
+ name="XSD Target Platform"
+ activeRepositoryList="${eclipse.target.platform}">
+ <requirement
+ name="org.eclipse.platform.feature.group"/>
+ <requirement
+ name="org.eclipse.jdt.feature.group"/>
+ <requirement
+ name="org.eclipse.pde.feature.group"/>
+ <requirement
+ name="org.eclipse.equinox.executable.feature.group"/>
+ <requirement
+ name="org.eclipse.emf.ant"/>
+ <requirement
+ name="org.eclipse.xsd.sdk.feature.group"/>
+ <requirement
+ name="org.eclipse.xsd.example.feature.group"/>
+ <sourceLocator
+ rootFolder="${xsd.git.clone.location}"/>
+ <repositoryList
+ name="2022-12">
+ <repository
+ url="https://download.eclipse.org/releases/2022-12"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2022-09">
+ <repository
+ url="https://download.eclipse.org/releases/2022-09"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2022-06">
+ <repository
+ url="https://download.eclipse.org/releases/2022-06"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2022-03">
+ <repository
+ url="https://download.eclipse.org/releases/2022-03"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2021-12">
+ <repository
+ url="https://download.eclipse.org/releases/2021-12"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2021-09">
+ <repository
+ url="https://download.eclipse.org/releases/2021-09"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2021-06">
+ <repository
+ url="https://download.eclipse.org/releases/2021-06"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2021-03">
+ <repository
+ url="https://download.eclipse.org/releases/2021-03"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2020-12">
+ <repository
+ url="https://download.eclipse.org/releases/2020-12"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2020-09">
+ <repository
+ url="https://download.eclipse.org/releases/2020-09"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2020-06">
+ <repository
+ url="https://download.eclipse.org/releases/2020-06"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2020-03">
+ <repository
+ url="https://download.eclipse.org/releases/2020-03"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2019-12">
+ <repository
+ url="https://download.eclipse.org/releases/2019-12"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2019-09">
+ <repository
+ url="https://download.eclipse.org/releases/2019-09"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2019-06">
+ <repository
+ url="https://download.eclipse.org/releases/2019-06"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2019-03">
+ <repository
+ url="https://download.eclipse.org/releases/2019-03"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2018-12">
+ <repository
+ url="https://download.eclipse.org/releases/2018-12"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="2018-09">
+ <repository
+ url="https://download.eclipse.org/releases/2018-09"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Photon">
+ <repository
+ url="https://download.eclipse.org/releases/photon"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Oxygen">
+ <repository
+ url="https://download.eclipse.org/releases/oxygen"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Neon">
+ <repository
+ url="https://download.eclipse.org/releases/neon/201705151400"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Mars">
+ <repository
+ url="https://download.eclipse.org/releases/mars/201602261000"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Luna">
+ <repository
+ url="https://download.eclipse.org/releases/luna/201502271000"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Kepler">
+ <repository
+ url="https://download.eclipse.org/releases/kepler/201402280900"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Juno">
+ <repository
+ url="https://download.eclipse.org/releases/juno/201303010900"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Indigo">
+ <repository
+ url="https://download.eclipse.org/releases/indigo/201202240900"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ <repositoryList
+ name="Helios">
+ <repository
+ url="https://download.eclipse.org/releases/helios/201102250900"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
+ </repositoryList>
+ </targlet>
+ </setupTask>
+ <setupTask
+ xsi:type="setup.workingsets:WorkingSetTask"
+ id="workingsets.xsd">
+ <workingSet
+ name="XSD"
+ id="EMF XSD">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.PluginNature"/>
+ <operand
+ xsi:type="workingsets:ExclusionPredicate"
+ excludedWorkingSet="//'workingsets.xsd'/@workingSets[name='XSD%20Examples']"/>
+ <operand
+ xsi:type="workingsets:ExclusionPredicate"
+ excludedWorkingSet="//'workingsets.xsd'/@workingSets[name='XSD%20Documentation']"/>
+ </predicate>
+ </workingSet>
+ <workingSet
+ name="XSD Examples"
+ id="EMF XSD Examples">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.PluginNature"/>
+ <operand
+ xsi:type="predicates:OrPredicate">
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern="org\.eclipse\.xsd\.cheatsheets.*"/>
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern="org\.eclipse\.xsd\.example.*"/>
+ </operand>
+ </predicate>
+ </workingSet>
+ <workingSet
+ name="XSD Features"
+ id="EMF XSD Features">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.FeatureNature"/>
+ </predicate>
+ </workingSet>
+ <workingSet
+ name="XSD Documentation"
+ id="EMF XSD Documentation">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.PluginNature"/>
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern="org\.eclipse\.xsd\.doc"/>
+ </predicate>
+ </workingSet>
+ </setupTask>
+ <stream name="master">
+ <setupTask
+ xsi:type="setup:EclipseIniTask"
+ option="-Doomph.redirection.xsd.setup"
+ value="=http://git.eclipse.org/c/xsd/org.eclipse.xsd.git/plain/plugins/org.eclipse.xsd/XSD.setup->${xsd.git.clone.location|uri}/plugins/org.eclipse.xsd/XSD.setup"
+ vm="true"/>
+ </stream>
+ <logicalProjectContainer
+ xsi:type="setup:ProjectCatalog"
+ href="index:/org.eclipse.setup#//@projectCatalogs[name='org.eclipse']"/>
+ <description>The development environment for XSD</description>
+</setup:Project>
diff --git a/plugins/org.eclipse.xsd/about.html b/plugins/org.eclipse.xsd/about.html
new file mode 100644
index 0000000..b761da5
--- /dev/null
+++ b/plugins/org.eclipse.xsd/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 22, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v20.html">http://www.eclipse.org/legal/epl-v20.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/about.ini b/plugins/org.eclipse.xsd/about.ini
new file mode 100644
index 0000000..945d061
--- /dev/null
+++ b/plugins/org.eclipse.xsd/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.xsd/about.mappings b/plugins/org.eclipse.xsd/about.mappings
new file mode 100644
index 0000000..cf26020
--- /dev/null
+++ b/plugins/org.eclipse.xsd/about.mappings
@@ -0,0 +1,5 @@
+# about.mappings
+# contains fill-ins for about.properties
+
+0=${build.id}
+1=${commit.id}
diff --git a/plugins/org.eclipse.xsd/about.properties b/plugins/org.eclipse.xsd/about.properties
new file mode 100644
index 0000000..b9447cb
--- /dev/null
+++ b/plugins/org.eclipse.xsd/about.properties
@@ -0,0 +1,25 @@
+# /**
+# * Copyright (c) 2002-2010 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=XSD - XML Schema Definition Model
+
+featureText=XML Schema Definition Model\n\
+Version: {featureVersion}\n\
+Build: {0}\n\
+Commit: {1}\n\
+\n\
+(c) Copyright Eclipse contributors and others. 2002, 2018. All rights reserved.\n\
+\n\
+XSD is a reference library for manipulating the components of an\n\
+XML Schema as described by the W3C XML Schema specifications.\n\
+Visit http://www.eclipse.org/xsd/
diff --git a/plugins/org.eclipse.xsd/build.properties b/plugins/org.eclipse.xsd/build.properties
new file mode 100644
index 0000000..8de63ba
--- /dev/null
+++ b/plugins/org.eclipse.xsd/build.properties
@@ -0,0 +1,16 @@
+bin.includes = plugin.xml,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cache/,\
+ model/,\
+ modeling32.png,\
+ META-INF/
+output.. = bin/
+src.includes = about.html,\
+ release.*
+exclude.. = **/doc-files**
+source.. = src/
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/1999/MagicXMLSchema.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/MagicXMLSchema.xsd
new file mode 100644
index 0000000..2144986
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/MagicXMLSchema.xsd
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- XML Schema schema for magic parts of XML Schemas -->
+<xs:schema targetNamespace="http://www.w3.org/1999/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/1999/XMLSchema" xml:lang="EN">
+
+ <xs:annotation>
+ <xs:documentation>
+ This defines two magic types,
+ namely anyType, the simple type definition almost equivalent to the ur-type definition,
+ and anySimpleType, the base type of all built-in datatypes.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="anyType" id="anyType">
+ <xs:restriction base="xs:anyType">
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anySimpleType" id="anySimpleType">
+ <xs:restriction base="xs:anyType">
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/1999/XMLSchema.dtd b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/XMLSchema.dtd
new file mode 100644
index 0000000..651374e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/XMLSchema.dtd
@@ -0,0 +1,401 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+ Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+ Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
+<!-- prose copy in the structures REC is the definitive version --> <!--d-->
+<!-- (which shouldn't differ from this one except for this --> <!--d-->
+<!-- comment and entity expansions, but just in case) --> <!--d-->
+<!-- With the exception of cases with multiple namespace
+ prefixes for the XML Schema namespace, any XML document which is
+ not valid per this DTD given redefinitions in its internal subset of the
+ 'p' and 's' parameter entities below appropriate to its namespace
+ declaration of the XML Schema namespace is almost certainly not
+ a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+ are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+ schema document to establish a different
+ namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+ also define %s as the suffix for the appropriate
+ namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+ Define one of these if your schema takes advantage of the
+ anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+ <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+ <!-- #all or space-separated list drawn from
+ derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+ which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+ ((%simpleType; | %complexType;
+ | %element; | %attribute;
+ | %attributeGroup; | %group;
+ | %notation; ),
+ (%annotation;)*)* )>
+<!ATTLIST %schema;
+ targetNamespace %URIref; #IMPLIED
+ version CDATA #IMPLIED
+ %nds; %URIref; #FIXED 'http://www.w3.org/1999/XMLSchema'
+ xmlns CDATA #IMPLIED
+ finalDefault %complexDerivationSet; ''
+ blockDefault %blockSet; ''
+ id ID #IMPLIED
+ elementFormDefault %formValues; 'unqualified'
+ attributeFormDefault %formValues; 'unqualified'
+ xml:lang CDATA #IMPLIED
+ %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+ because at the Infoset level where schemas operate,
+ xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+
+<!-- The id attribute here and below is for use in external references
+ from non-schemas using simple fragment identifiers.
+ It is NOT used for schema-to-schema reference, internal or
+ external. -->
+
+<!-- a type is a named content type specification which allows attribute
+ declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+ (%simpleContent;|%complexContent;|
+ %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %complexDerivationSet; #IMPLIED
+ mixed (true|false) 'false'
+ %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+ has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+ and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; (%restriction;|%extension;)>
+<!ATTLIST %complexContent;
+ mixed (true|false) #IMPLIED
+ id ID #IMPLIED
+ %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+ one from part2; extension should use the full model -->
+
+<!ELEMENT %simpleContent; (%restriction;|%extension;)>
+<!ATTLIST %simpleContent;
+ id ID #IMPLIED
+ %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the
+ one defined above; extension should have no particle -->
+
+<!ELEMENT %extension; (%particleAndAttrs;)>
+<!ATTLIST %extension;
+ base %QName; #REQUIRED
+ id ID #IMPLIED
+ %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+ (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ nillable %boolean; #IMPLIED
+ substitutionGroup %QName; #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %blockSet; #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+ substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group;
+ name %NCName; #IMPLIED
+ ref %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+ minOccurs (1) #IMPLIED
+ maxOccurs (1) #IMPLIED
+ id ID #IMPLIED
+ %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+ a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+ If order is 'all' THIS group must be alone (or referenced alone) at
+ the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ minOccurs %nonNegativeInteger; '1'
+ maxOccurs CDATA '1'
+ id ID #IMPLIED
+ %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+ ##any - - any non-conflicting WFXML at all
+
+ ##other - - any non-conflicting WFXML from namespace other
+ than targetNamespace
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+ one or - - any non-conflicting WFXML from
+ more URI the listed namespaces
+ references
+
+ ##targetNamespace ##local may appear in the above list,
+ with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ id ID #IMPLIED
+ %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ use (prohibited|optional|required) #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+ reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+ (%attribute; | %attributeGroup;)*,
+ (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name. ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %uniqueAttrs;>
+
+<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+ name %NCName; #REQUIRED
+ refer %QName; #REQUIRED
+ id ID #IMPLIED
+ %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+ namespace %URIref; #IMPLIED
+ schemaLocation %URIref; #IMPLIED
+ id ID #IMPLIED
+ %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+ %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ public CDATA #REQUIRED
+ system %URIref; #IMPLIED
+ %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+ as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+ to work -->
+<!ELEMENT %appinfo; ANY> <!-- too restrictive -->
+<!ATTLIST %appinfo;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ %appinfoAttrs;>
+<!ELEMENT %documentation; ANY> <!-- too restrictive -->
+<!ATTLIST %documentation;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ xml:lang CDATA #IMPLIED
+ %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+ 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+ 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/1999/XMLSchema.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/XMLSchema.xsd
new file mode 100644
index 0000000..daaaa34
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/XMLSchema.xsd
@@ -0,0 +1,2359 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- DOCTYPE has been removed from this copy -->
+<xs:schema targetNamespace="http://www.w3.org/1999/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/1999/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xs:annotation>
+ <xs:documentation>
+ Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp
+ Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+ The schema corresponding to this document is normative,
+ with respect to the syntactic constraints it expresses in the
+ XML Schema language. The documentation (within <documentation> elements)
+ below, is not normative, but rather highlights important aspects of
+ the W3C Recommendation of which this is a part</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ The simpleType element and all of its members are defined
+ towards the end of this schema document</xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Get access to the xml: attribute groups for xml:lang
+ as declared on 'schema' and 'documentation' below
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:complexType name="openAttrs">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by almost all schema types
+ to allow attributes from other namespaces to be
+ added to user schemas.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="annotated">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by all types which allow annotation
+ other than <schema> itself
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="schemaTop">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which occur freely at the top level of schemas.
+ All of their types are based on the "annotated" type by extension.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="xs:redefinable"/>
+ <xs:element ref="xs:element"/>
+ <xs:element ref="xs:attribute"/>
+ <xs:element ref="xs:notation"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="redefinable">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which can self-redefine (see <redefine> below).</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:simpleType"/>
+ <xs:element ref="xs:complexType"/>
+ <xs:element ref="xs:group"/>
+ <xs:element ref="xs:attributeGroup"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="formChoice">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="qualified"/>
+ <xs:enumeration value="unqualified"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="reducedDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:reducedDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="fullDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:typeDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="schema" id="schema">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:include"/>
+ <xs:element ref="xs:import"/>
+ <xs:element ref="xs:redefine"/>
+ <xs:element ref="xs:annotation"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="xs:schemaTop"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="version" type="xs:token"/>
+ <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+ <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+ <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:key name="element">
+ <xs:selector xpath="xs:element"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attribute">
+ <xs:selector xpath="xs:attribute"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="type">
+ <xs:selector xpath="xs:complexType|xs:simpleType"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="group">
+ <xs:selector xpath="xs:group"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attributeGroup">
+ <xs:selector xpath="xs:attributeGroup"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="notation">
+ <xs:selector xpath="xs:notation"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="identityConstraint">
+ <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ </xs:element>
+
+ <xs:simpleType name="allNNI">
+ <xs:annotation><xs:documentation>
+ for maxOccurs</xs:documentation></xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="unbounded"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="occurs">
+ <xs:annotation><xs:documentation>
+ for all particles</xs:documentation></xs:annotation>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+ <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="defRef">
+ <xs:annotation><xs:documentation>
+ for element, group and attributeGroup,
+ which both define and reference</xs:documentation></xs:annotation>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+
+ <xs:group name="typeDefParticle">
+ <xs:annotation>
+ <xs:documentation>
+ 'complexType' uses this</xs:documentation></xs:annotation>
+ <xs:choice>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:group>
+
+
+
+ <xs:group name="nestedParticle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="particle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="attribute">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="use" use="optional" default="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="prohibited"/>
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelAttribute">
+ <xs:complexContent>
+ <xs:restriction base="xs:attribute">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="use" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="attrDecls">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="attribute" type="xs:attribute"/>
+ <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+ </xs:choice>
+ <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="complexTypeModel">
+ <xs:choice>
+ <xs:element ref="xs:simpleContent"/>
+ <xs:element ref="xs:complexContent"/>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ This branch is short for
+ <complexContent>
+ <restriction base="xs:anyType">
+ ...
+ </restriction>
+ </complexContent></xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="complexType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:complexTypeModel"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Will be restricted to required or forbidden</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>
+ Not allowed if simpleContent child is chosen.
+ May be overriden by setting on complexContent child.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:derivationSet"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="block" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="restrictionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:group ref="xs:typeDefParticle"/>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="complexRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="extensionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="complexContent" id="complexContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:complexRestrictionType"/>
+ <xs:element name="extension" type="xs:extensionType"/>
+ </xs:choice>
+ <xs:attribute name="mixed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Overrides any setting on complexType parent.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="simpleRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExtensionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:extensionType">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ No typeDefParticle group reference</xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleContent" id="simpleContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+ <xs:element name="extension" type="xs:simpleExtensionType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+ </xs:annotation>
+ </xs:element>
+
+
+ <xs:simpleType name="blockSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {substitution, extension,
+ restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="substitution"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="element" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ The element element can be used either
+ at the top level to define an element-type binding globally,
+ or within a content model to either reference a globally-defined
+ element or type or declare an element-type binding locally.
+ The ref form is not allowed at the top level.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="substitutionGroup" type="xs:QName"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:blockSet"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="substitutionGroup" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="group" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ group type for explicit groups, named top-level groups and
+ group references</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="realGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="all">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:all">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+ <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="groupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="explicitGroup">
+ <xs:annotation>
+ <xs:documentation>
+ group type for the three kinds of group</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+ <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExplicitGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="allModel">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>This choice with min/max is here to
+ avoid a pblm with the Elt:All/Choice/Seq
+ Particle derivation constraint</xs:documentation>
+ </xs:annotation>
+ <xs:element name="element" type="xs:narrowMaxMin"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+
+ <xs:complexType name="narrowMaxMin">
+ <xs:annotation>
+ <xs:documentation>restricted max/min</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:localElement">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="all">
+ <xs:annotation>
+ <xs:documentation>
+ Only elements allowed inside</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="all" id="all" type="xs:all">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="group" type="xs:namedGroup" id="group">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="wildcard">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+ <xs:attribute name="processContents" use="optional" default="strict">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="skip"/>
+ <xs:enumeration value="lax"/>
+ <xs:enumeration value="strict"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" id="any">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ simple type for the value of the 'namespace' attr of
+ 'any' and 'anyAttribute'</xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Value is
+ ##any - - any non-conflicting WFXML/attribute at all
+
+ ##other - - any non-conflicting WFXML/attribute from
+ namespace other than targetNS
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+
+ one or - - any non-conflicting WFXML/attribute from
+ more URI the listed namespaces
+ references
+ (space separated)
+
+ ##targetNamespace or ##local may appear in the above list, to
+ refer to the targetNamespace of the enclosing
+ schema or an absent targetNamespace respectively</xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="namespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##any"/>
+ <xs:enumeration value="##other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="attributeGroup" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:attrDecls"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedAttributeGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="attributeGroupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="include" id="include">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="redefine" id="redefine">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:annotation"/>
+ <xs:group ref="xs:redefinable"/>
+ </xs:choice>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="import" id="import">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="selector" id="selector">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the following EBNF:
+ Selector ::= Path ( '|' Path )*
+ Path ::= ('.//')? Step ( '/' Step )*
+ Step ::= '.' | NameTest
+ NameTest ::= QName | '*' | NCName ':' '*'
+ child:: is also allowed
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="field" id="field">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the same EBNF as for selector,
+ with the following change:
+ Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="keybase">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element ref="xs:selector"/>
+ <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="identityConstraint">
+ <xs:annotation>
+ <xs:documentation>The three kinds of identity constraints, all with
+ type of or derived from 'keybase'.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:unique"/>
+ <xs:element ref="xs:key"/>
+ <xs:element ref="xs:keyref"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element name="unique" type="xs:keybase" id="unique">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:keybase">
+ <xs:attribute name="refer" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="notation" id="notation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="public" type="xs:public"/>
+ <xs:attribute name="system" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="public">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ A public identifier, per ISO 8879</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+
+ <xs:element name="appinfo" id="appinfo">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="documentation" id="documentation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="annotation" id="annotation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:appinfo"/>
+ <xs:element ref="xs:documentation"/>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ notations for use within XML Schema schemas</xs:documentation>
+ </xs:annotation>
+
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+ <xs:complexType name="anyType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Not the real urType, but as close an approximation as we can
+ get in the XML representation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+
+ <xs:annotation>
+ <xs:documentation>
+ First the built-in primitive datatypes. These definitions are for
+ information only, the real built-in definitions are magic.
+ </xs:documentation>
+
+ <xs:documentation>
+ For each built-in datatype in this schema (both primitive and
+ derived) can be uniquely addressed via a URI constructed
+ as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the datatype
+
+ For example, to address the int datatype, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#int
+
+ Additionally, each facet definition element can be uniquely
+ addressed via a URI constructed as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the facet
+
+ For example, to address the maxInclusive facet, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#maxInclusive
+
+ Additionally, each facet usage in a built-in datatype definition
+ can be uniquely addressed via a URI constructed as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the datatype, followed
+ by a period (".") followed by the name of the facet
+
+ For example, to address the usage of the maxInclusive facet in
+ the definition of int, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="string" id="string">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="preserve" id="string.preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="boolean" id="boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="boolean.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="float" id="float">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="float.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="double" id="double">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="double.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="decimal" id="decimal">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="totalDigits"/>
+ <hfp:hasFacet name="fractionDigits"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="decimal.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="duration" id="duration">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="duration.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="dateTime" id="dateTime">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="time" id="time">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="time.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date" id="date">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="date.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYearMonth" id="gYearMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gYearMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYear" id="gYear">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gYear.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonthDay" id="gMonthDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gMonthDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gDay" id="gDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonth" id="gMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="hexBinary" id="hexBinary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="hexBinary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="base64Binary" id="base64Binary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="base64Binary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anyURI" id="anyURI">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="anyURI.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="QName" id="QName">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="QName.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NOTATION" id="NOTATION">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+ <xs:documentation>
+ NOTATION cannot be used directly in a schema; rather a type
+ must be derived from it by specifying at least one enumeration
+ facet whose value is the name of a NOTATION declared in the
+ schema.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="NOTATION.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ Now the derived primitive types
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="normalizedString" id="normalizedString">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="token" id="token">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token"/>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="language" id="language">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt">
+ pattern specifies the content of section 2.12 of XML 1.0e2
+ and RFC 3066 (Revised version of RFC 1766).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREFS" id="IDREFS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:IDREF"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="IDREFS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITIES" id="ENTITIES">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:ENTITY"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="ENTITIES.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\c+" id="NMTOKEN.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+ pattern matches production 7 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="NMTOKENS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Name" id="Name">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\i\c*" id="Name.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name">
+ pattern matches production 5 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NCName" id="NCName">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:Name">
+ <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+ pattern matches production 4 from the Namespaces in XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ID" id="ID">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREF" id="IDREF">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITY" id="ENTITY">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="integer" id="integer">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+ </xs:annotation>
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+ <xs:pattern value="[\-+]?[0-9]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="negativeInteger" id="negativeInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonPositiveInteger">
+ <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="long" id="long">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+ <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="int" id="int">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int"/>
+ </xs:annotation>
+ <xs:restriction base="xs:long">
+ <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+ <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="short" id="short">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short"/>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="-32768" id="short.minInclusive"/>
+ <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="byte" id="byte">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:short">
+ <xs:minInclusive value="-128" id="byte.minInclusive"/>
+ <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedLong" id="unsignedLong">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedInt" id="unsignedInt">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedLong">
+ <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedShort" id="unsignedShort">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedByte" id="unsignedByte">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedShort">
+ <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="positiveInteger" id="positiveInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="substitution"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:group name="simpleDerivation">
+ <xs:choice>
+ <xs:element ref="xs:restriction"/>
+ <xs:element ref="xs:list"/>
+ <xs:element ref="xs:union"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="simpleDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {restriction, union, list}
+ </xs:documentation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="simpleType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleDerivation"/>
+ <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Can be restricted to required or forbidden
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Required at the top level
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited">
+ <xs:annotation>
+ <xs:documentation>
+ Forbidden when nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="facets">
+ <xs:annotation>
+ <xs:documentation>
+ We should use a substitution group for facets, but
+ that's ruled out because it would allow users to
+ add their own, which we're not ready for yet.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:minExclusive"/>
+ <xs:element ref="xs:minInclusive"/>
+ <xs:element ref="xs:maxExclusive"/>
+ <xs:element ref="xs:maxInclusive"/>
+ <xs:element ref="xs:totalDigits"/>
+ <xs:element ref="xs:fractionDigits"/>
+ <xs:element ref="xs:length"/>
+ <xs:element ref="xs:minLength"/>
+ <xs:element ref="xs:maxLength"/>
+ <xs:element ref="xs:enumeration"/>
+ <xs:element ref="xs:whiteSpace"/>
+ <xs:element ref="xs:pattern"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="simpleRestrictionModel">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="restriction" id="restriction">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+ base attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ <xs:attribute name="base" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="list" id="list">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-list">
+ itemType attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="union" id="union">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-union">
+ memberTypes attribute must be non-empty or there must be
+ at least one simpleType child
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="memberTypes" use="optional">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="facet">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="value" use="required"/>
+ <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="noFixedFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fixed" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="numFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="totalDigits" id="totalDigits">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:numFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="length" id="length" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minLength" id="minLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="whiteSpace" id="whiteSpace">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="preserve"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="collapse"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="pattern" id="pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:noFixedFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/1999/datatypes.dtd b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/datatypes.dtd
new file mode 100644
index 0000000..fc4e196
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/datatypes.dtd
@@ -0,0 +1,202 @@
+<!--
+ DTD for XML Schemas: Part 2: Datatypes
+ Note this DTD is NOT normative, or even definitive. - - the
+ prose copy in the datatypes REC is the definitive version
+ (which shouldn't differ from this one except for this comment
+ and entity expansions, but just in case)
+ -->
+
+<!--
+ This DTD cannot be used on its own, it is intended
+ only for incorporation in XMLSchema.dtd, q.v.
+ -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+ Customisation entities for the ATTLIST of each element
+ type. Define one of these if your schema takes advantage
+ of the anyAttribute='##other' in the schema for schemas
+ -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+ types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+ #all or space-separated list drawn from derivationChoice
+ -->
+
+<!--
+ Note that the use of 'facet' below is less restrictive
+ than is really intended: There should in fact be no
+ more than one of each of minInclusive, minExclusive,
+ maxInclusive, maxExclusive, totalDigits, fractionDigits,
+ length, maxLength, minLength within datatype,
+ and the min- and max- variants of Inclusive and Exclusive
+ are mutually exclusive. On the other hand, pattern and
+ enumeration may repeat.
+ -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+ "%pattern; | %enumeration; | %whiteSpace; | %length; |
+ %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr
+ "value CDATA #REQUIRED
+ id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+ ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+ name %NCName; #IMPLIED
+ final %simpleDerivationSet; #IMPLIED
+ id ID #IMPLIED
+ %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+ (%restriction1; |
+ ((%simpleType;)?,(%facet;)*)),
+ (%attrDecls;))>
+<!ATTLIST %restriction;
+ base %QName; #IMPLIED
+ id ID #IMPLIED
+ %restrictionAttrs;>
+<!--
+ base and simpleType child are mutually exclusive,
+ one is required.
+
+ restriction is shared between simpleType and
+ simpleContent and complexContent (in XMLSchema.xsd).
+ restriction1 is for the latter cases, when this
+ is restricting a complex type, as is attrDecls.
+ -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+ itemType %QName; #IMPLIED
+ id ID #IMPLIED
+ %listAttrs;>
+<!--
+ itemType and simpleType child are mutually exclusive,
+ one is required
+ -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+ id ID #IMPLIED
+ memberTypes %QNames; #IMPLIED
+ %unionAttrs;>
+<!--
+ At least one item in memberTypes or one simpleType
+ child is required
+ -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+ %facetAttr;
+ %fixedAttr;
+ %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+ %facetAttr;
+ %fixedAttr;
+ %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+ %facetAttr;
+ %fixedAttr;
+ %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+ %facetAttr;
+ %fixedAttr;
+ %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+ %facetAttr;
+ %fixedAttr;
+ %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+ %facetAttr;
+ %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+ %facetAttr;
+ %fixedAttr;
+ %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+ %facetAttr;
+ %patternAttrs;>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/1999/xml.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/xml.xsd
new file mode 100644
index 0000000..e82f216
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/1999/xml.xsd
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/MagicXMLSchema.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/MagicXMLSchema.xsd
new file mode 100644
index 0000000..c08d3a7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/MagicXMLSchema.xsd
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- XML Schema schema for magic parts of XML Schemas -->
+<xs:schema targetNamespace="http://www.w3.org/2000/10/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2000/10/XMLSchema" xml:lang="EN">
+
+ <xs:annotation>
+ <xs:documentation>
+ This defines two magic types,
+ namely anyType, the simple type definition almost equivalent to the ur-type definition,
+ and anySimpleType, the base type of all built-in datatypes.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="anyType" id="anyType">
+ <xs:restriction base="xs:anyType">
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anySimpleType" id="anySimpleType">
+ <xs:restriction base="xs:anyType">
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/XMLSchema.dtd b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/XMLSchema.dtd
new file mode 100644
index 0000000..8ac3e88
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/XMLSchema.dtd
@@ -0,0 +1,401 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+ Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+ Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
+<!-- prose copy in the structures REC is the definitive version --> <!--d-->
+<!-- (which shouldn't differ from this one except for this --> <!--d-->
+<!-- comment and entity expansions, but just in case) --> <!--d-->
+<!-- With the exception of cases with multiple namespace
+ prefixes for the XML Schema namespace, any XML document which is
+ not valid per this DTD given redefinitions in its internal subset of the
+ 'p' and 's' parameter entities below appropriate to its namespace
+ declaration of the XML Schema namespace is almost certainly not
+ a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+ are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+ schema document to establish a different
+ namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+ also define %s as the suffix for the appropriate
+ namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+ Define one of these if your schema takes advantage of the
+ anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+ <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+ <!-- #all or space-separated list drawn from
+ derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+ which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+ ((%simpleType; | %complexType;
+ | %element; | %attribute;
+ | %attributeGroup; | %group;
+ | %notation; ),
+ (%annotation;)*)* )>
+<!ATTLIST %schema;
+ targetNamespace %URIref; #IMPLIED
+ version CDATA #IMPLIED
+ %nds; %URIref; #FIXED 'http://www.w3.org/2000/10/XMLSchema'
+ xmlns CDATA #IMPLIED
+ finalDefault %complexDerivationSet; ''
+ blockDefault %blockSet; ''
+ id ID #IMPLIED
+ elementFormDefault %formValues; 'unqualified'
+ attributeFormDefault %formValues; 'unqualified'
+ xml:lang CDATA #IMPLIED
+ %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+ because at the Infoset level where schemas operate,
+ xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+
+<!-- The id attribute here and below is for use in external references
+ from non-schemas using simple fragment identifiers.
+ It is NOT used for schema-to-schema reference, internal or
+ external. -->
+
+<!-- a type is a named content type specification which allows attribute
+ declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+ (%simpleContent;|%complexContent;|
+ %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %complexDerivationSet; #IMPLIED
+ mixed (true|false) 'false'
+ %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+ has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+ and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; (%restriction;|%extension;)>
+<!ATTLIST %complexContent;
+ mixed (true|false) #IMPLIED
+ id ID #IMPLIED
+ %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+ one from part2; extension should use the full model -->
+
+<!ELEMENT %simpleContent; (%restriction;|%extension;)>
+<!ATTLIST %simpleContent;
+ id ID #IMPLIED
+ %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the
+ one defined above; extension should have no particle -->
+
+<!ELEMENT %extension; (%particleAndAttrs;)>
+<!ATTLIST %extension;
+ base %QName; #REQUIRED
+ id ID #IMPLIED
+ %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+ (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ nillable %boolean; #IMPLIED
+ substitutionGroup %QName; #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %blockSet; #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+ substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group;
+ name %NCName; #IMPLIED
+ ref %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+ minOccurs (1) #IMPLIED
+ maxOccurs (1) #IMPLIED
+ id ID #IMPLIED
+ %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+ a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+ If order is 'all' THIS group must be alone (or referenced alone) at
+ the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ minOccurs %nonNegativeInteger; '1'
+ maxOccurs CDATA '1'
+ id ID #IMPLIED
+ %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+ ##any - - any non-conflicting WFXML at all
+
+ ##other - - any non-conflicting WFXML from namespace other
+ than targetNamespace
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+ one or - - any non-conflicting WFXML from
+ more URI the listed namespaces
+ references
+
+ ##targetNamespace ##local may appear in the above list,
+ with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ id ID #IMPLIED
+ %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ use (prohibited|optional|required) #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+ reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+ (%attribute; | %attributeGroup;)*,
+ (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name. ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %uniqueAttrs;>
+
+<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+ name %NCName; #REQUIRED
+ refer %QName; #REQUIRED
+ id ID #IMPLIED
+ %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+ namespace %URIref; #IMPLIED
+ schemaLocation %URIref; #IMPLIED
+ id ID #IMPLIED
+ %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+ %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ public CDATA #REQUIRED
+ system %URIref; #IMPLIED
+ %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+ as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+ to work -->
+<!ELEMENT %appinfo; ANY> <!-- too restrictive -->
+<!ATTLIST %appinfo;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ %appinfoAttrs;>
+<!ELEMENT %documentation; ANY> <!-- too restrictive -->
+<!ATTLIST %documentation;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ xml:lang CDATA #IMPLIED
+ %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+ 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+ 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/XMLSchema.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/XMLSchema.xsd
new file mode 100644
index 0000000..f2d475e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/XMLSchema.xsd
@@ -0,0 +1,2359 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- DOCTYPE has been removed from this copy -->
+<xs:schema targetNamespace="http://www.w3.org/2000/10/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2000/10/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xs:annotation>
+ <xs:documentation>
+ Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp
+ Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+ The schema corresponding to this document is normative,
+ with respect to the syntactic constraints it expresses in the
+ XML Schema language. The documentation (within <documentation> elements)
+ below, is not normative, but rather highlights important aspects of
+ the W3C Recommendation of which this is a part</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ The simpleType element and all of its members are defined
+ towards the end of this schema document</xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Get access to the xml: attribute groups for xml:lang
+ as declared on 'schema' and 'documentation' below
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:complexType name="openAttrs">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by almost all schema types
+ to allow attributes from other namespaces to be
+ added to user schemas.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="annotated">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by all types which allow annotation
+ other than <schema> itself
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="schemaTop">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which occur freely at the top level of schemas.
+ All of their types are based on the "annotated" type by extension.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="xs:redefinable"/>
+ <xs:element ref="xs:element"/>
+ <xs:element ref="xs:attribute"/>
+ <xs:element ref="xs:notation"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="redefinable">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which can self-redefine (see <redefine> below).</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:simpleType"/>
+ <xs:element ref="xs:complexType"/>
+ <xs:element ref="xs:group"/>
+ <xs:element ref="xs:attributeGroup"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="formChoice">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="qualified"/>
+ <xs:enumeration value="unqualified"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="reducedDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:reducedDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="fullDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:typeDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="schema" id="schema">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:include"/>
+ <xs:element ref="xs:import"/>
+ <xs:element ref="xs:redefine"/>
+ <xs:element ref="xs:annotation"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="xs:schemaTop"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="version" type="xs:token"/>
+ <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+ <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+ <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:key name="element">
+ <xs:selector xpath="xs:element"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attribute">
+ <xs:selector xpath="xs:attribute"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="type">
+ <xs:selector xpath="xs:complexType|xs:simpleType"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="group">
+ <xs:selector xpath="xs:group"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attributeGroup">
+ <xs:selector xpath="xs:attributeGroup"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="notation">
+ <xs:selector xpath="xs:notation"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="identityConstraint">
+ <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ </xs:element>
+
+ <xs:simpleType name="allNNI">
+ <xs:annotation><xs:documentation>
+ for maxOccurs</xs:documentation></xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="unbounded"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="occurs">
+ <xs:annotation><xs:documentation>
+ for all particles</xs:documentation></xs:annotation>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+ <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="defRef">
+ <xs:annotation><xs:documentation>
+ for element, group and attributeGroup,
+ which both define and reference</xs:documentation></xs:annotation>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+
+ <xs:group name="typeDefParticle">
+ <xs:annotation>
+ <xs:documentation>
+ 'complexType' uses this</xs:documentation></xs:annotation>
+ <xs:choice>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:group>
+
+
+
+ <xs:group name="nestedParticle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="particle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="attribute">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="use" use="optional" default="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="prohibited"/>
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelAttribute">
+ <xs:complexContent>
+ <xs:restriction base="xs:attribute">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="use" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="attrDecls">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="attribute" type="xs:attribute"/>
+ <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+ </xs:choice>
+ <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="complexTypeModel">
+ <xs:choice>
+ <xs:element ref="xs:simpleContent"/>
+ <xs:element ref="xs:complexContent"/>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ This branch is short for
+ <complexContent>
+ <restriction base="xs:anyType">
+ ...
+ </restriction>
+ </complexContent></xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="complexType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:complexTypeModel"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Will be restricted to required or forbidden</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>
+ Not allowed if simpleContent child is chosen.
+ May be overriden by setting on complexContent child.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:derivationSet"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="block" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="restrictionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:group ref="xs:typeDefParticle"/>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="complexRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="extensionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="complexContent" id="complexContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:complexRestrictionType"/>
+ <xs:element name="extension" type="xs:extensionType"/>
+ </xs:choice>
+ <xs:attribute name="mixed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Overrides any setting on complexType parent.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="simpleRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExtensionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:extensionType">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ No typeDefParticle group reference</xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleContent" id="simpleContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+ <xs:element name="extension" type="xs:simpleExtensionType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+ </xs:annotation>
+ </xs:element>
+
+
+ <xs:simpleType name="blockSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {substitution, extension,
+ restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="substitution"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="element" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ The element element can be used either
+ at the top level to define an element-type binding globally,
+ or within a content model to either reference a globally-defined
+ element or type or declare an element-type binding locally.
+ The ref form is not allowed at the top level.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="substitutionGroup" type="xs:QName"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:blockSet"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="substitutionGroup" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="group" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ group type for explicit groups, named top-level groups and
+ group references</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="realGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="all">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:all">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+ <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="groupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="explicitGroup">
+ <xs:annotation>
+ <xs:documentation>
+ group type for the three kinds of group</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+ <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExplicitGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="allModel">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>This choice with min/max is here to
+ avoid a pblm with the Elt:All/Choice/Seq
+ Particle derivation constraint</xs:documentation>
+ </xs:annotation>
+ <xs:element name="element" type="xs:narrowMaxMin"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+
+ <xs:complexType name="narrowMaxMin">
+ <xs:annotation>
+ <xs:documentation>restricted max/min</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:localElement">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="all">
+ <xs:annotation>
+ <xs:documentation>
+ Only elements allowed inside</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="all" id="all" type="xs:all">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="group" type="xs:namedGroup" id="group">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="wildcard">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+ <xs:attribute name="processContents" use="optional" default="strict">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="skip"/>
+ <xs:enumeration value="lax"/>
+ <xs:enumeration value="strict"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" id="any">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ simple type for the value of the 'namespace' attr of
+ 'any' and 'anyAttribute'</xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Value is
+ ##any - - any non-conflicting WFXML/attribute at all
+
+ ##other - - any non-conflicting WFXML/attribute from
+ namespace other than targetNS
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+
+ one or - - any non-conflicting WFXML/attribute from
+ more URI the listed namespaces
+ references
+ (space separated)
+
+ ##targetNamespace or ##local may appear in the above list, to
+ refer to the targetNamespace of the enclosing
+ schema or an absent targetNamespace respectively</xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="namespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##any"/>
+ <xs:enumeration value="##other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="attributeGroup" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:attrDecls"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedAttributeGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="attributeGroupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="include" id="include">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="redefine" id="redefine">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:annotation"/>
+ <xs:group ref="xs:redefinable"/>
+ </xs:choice>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="import" id="import">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="selector" id="selector">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the following EBNF:
+ Selector ::= Path ( '|' Path )*
+ Path ::= ('.//')? Step ( '/' Step )*
+ Step ::= '.' | NameTest
+ NameTest ::= QName | '*' | NCName ':' '*'
+ child:: is also allowed
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="field" id="field">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the same EBNF as for selector,
+ with the following change:
+ Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="keybase">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element ref="xs:selector"/>
+ <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="identityConstraint">
+ <xs:annotation>
+ <xs:documentation>The three kinds of identity constraints, all with
+ type of or derived from 'keybase'.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:unique"/>
+ <xs:element ref="xs:key"/>
+ <xs:element ref="xs:keyref"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element name="unique" type="xs:keybase" id="unique">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:keybase">
+ <xs:attribute name="refer" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="notation" id="notation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="public" type="xs:public"/>
+ <xs:attribute name="system" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="public">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ A public identifier, per ISO 8879</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+
+ <xs:element name="appinfo" id="appinfo">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="documentation" id="documentation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="annotation" id="annotation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:appinfo"/>
+ <xs:element ref="xs:documentation"/>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ notations for use within XML Schema schemas</xs:documentation>
+ </xs:annotation>
+
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+ <xs:complexType name="anyType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Not the real urType, but as close an approximation as we can
+ get in the XML representation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+
+ <xs:annotation>
+ <xs:documentation>
+ First the built-in primitive datatypes. These definitions are for
+ information only, the real built-in definitions are magic.
+ </xs:documentation>
+
+ <xs:documentation>
+ For each built-in datatype in this schema (both primitive and
+ derived) can be uniquely addressed via a URI constructed
+ as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the datatype
+
+ For example, to address the int datatype, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#int
+
+ Additionally, each facet definition element can be uniquely
+ addressed via a URI constructed as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the facet
+
+ For example, to address the maxInclusive facet, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#maxInclusive
+
+ Additionally, each facet usage in a built-in datatype definition
+ can be uniquely addressed via a URI constructed as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the datatype, followed
+ by a period (".") followed by the name of the facet
+
+ For example, to address the usage of the maxInclusive facet in
+ the definition of int, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="string" id="string">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="preserve" id="string.preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="boolean" id="boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="boolean.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="float" id="float">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="float.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="double" id="double">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="double.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="decimal" id="decimal">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="totalDigits"/>
+ <hfp:hasFacet name="fractionDigits"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="decimal.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="duration" id="duration">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="duration.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="dateTime" id="dateTime">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="time" id="time">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="time.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date" id="date">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="date.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYearMonth" id="gYearMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gYearMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYear" id="gYear">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gYear.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonthDay" id="gMonthDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gMonthDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gDay" id="gDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonth" id="gMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="hexBinary" id="hexBinary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="hexBinary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="base64Binary" id="base64Binary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="base64Binary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anyURI" id="anyURI">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="anyURI.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="QName" id="QName">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="QName.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NOTATION" id="NOTATION">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+ <xs:documentation>
+ NOTATION cannot be used directly in a schema; rather a type
+ must be derived from it by specifying at least one enumeration
+ facet whose value is the name of a NOTATION declared in the
+ schema.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="NOTATION.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ Now the derived primitive types
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="normalizedString" id="normalizedString">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="token" id="token">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token"/>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="language" id="language">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt">
+ pattern specifies the content of section 2.12 of XML 1.0e2
+ and RFC 3066 (Revised version of RFC 1766).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREFS" id="IDREFS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:IDREF"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="IDREFS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITIES" id="ENTITIES">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:ENTITY"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="ENTITIES.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\c+" id="NMTOKEN.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+ pattern matches production 7 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="NMTOKENS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Name" id="Name">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\i\c*" id="Name.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name">
+ pattern matches production 5 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NCName" id="NCName">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:Name">
+ <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+ pattern matches production 4 from the Namespaces in XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ID" id="ID">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREF" id="IDREF">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITY" id="ENTITY">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="integer" id="integer">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+ </xs:annotation>
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+ <xs:pattern value="[\-+]?[0-9]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="negativeInteger" id="negativeInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonPositiveInteger">
+ <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="long" id="long">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+ <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="int" id="int">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int"/>
+ </xs:annotation>
+ <xs:restriction base="xs:long">
+ <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+ <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="short" id="short">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short"/>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="-32768" id="short.minInclusive"/>
+ <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="byte" id="byte">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:short">
+ <xs:minInclusive value="-128" id="byte.minInclusive"/>
+ <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedLong" id="unsignedLong">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedInt" id="unsignedInt">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedLong">
+ <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedShort" id="unsignedShort">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedByte" id="unsignedByte">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedShort">
+ <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="positiveInteger" id="positiveInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="substitution"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:group name="simpleDerivation">
+ <xs:choice>
+ <xs:element ref="xs:restriction"/>
+ <xs:element ref="xs:list"/>
+ <xs:element ref="xs:union"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="simpleDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {restriction, union, list}
+ </xs:documentation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="simpleType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleDerivation"/>
+ <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Can be restricted to required or forbidden
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Required at the top level
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited">
+ <xs:annotation>
+ <xs:documentation>
+ Forbidden when nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="facets">
+ <xs:annotation>
+ <xs:documentation>
+ We should use a substitution group for facets, but
+ that's ruled out because it would allow users to
+ add their own, which we're not ready for yet.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:minExclusive"/>
+ <xs:element ref="xs:minInclusive"/>
+ <xs:element ref="xs:maxExclusive"/>
+ <xs:element ref="xs:maxInclusive"/>
+ <xs:element ref="xs:totalDigits"/>
+ <xs:element ref="xs:fractionDigits"/>
+ <xs:element ref="xs:length"/>
+ <xs:element ref="xs:minLength"/>
+ <xs:element ref="xs:maxLength"/>
+ <xs:element ref="xs:enumeration"/>
+ <xs:element ref="xs:whiteSpace"/>
+ <xs:element ref="xs:pattern"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="simpleRestrictionModel">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="restriction" id="restriction">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+ base attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ <xs:attribute name="base" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="list" id="list">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-list">
+ itemType attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="union" id="union">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-union">
+ memberTypes attribute must be non-empty or there must be
+ at least one simpleType child
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="memberTypes" use="optional">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="facet">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="value" use="required"/>
+ <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="noFixedFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fixed" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="numFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="totalDigits" id="totalDigits">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:numFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="length" id="length" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minLength" id="minLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="whiteSpace" id="whiteSpace">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="preserve"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="collapse"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="pattern" id="pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:noFixedFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/datatypes.dtd b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/datatypes.dtd
new file mode 100644
index 0000000..fc4e196
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/datatypes.dtd
@@ -0,0 +1,202 @@
+<!--
+ DTD for XML Schemas: Part 2: Datatypes
+ Note this DTD is NOT normative, or even definitive. - - the
+ prose copy in the datatypes REC is the definitive version
+ (which shouldn't differ from this one except for this comment
+ and entity expansions, but just in case)
+ -->
+
+<!--
+ This DTD cannot be used on its own, it is intended
+ only for incorporation in XMLSchema.dtd, q.v.
+ -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+ Customisation entities for the ATTLIST of each element
+ type. Define one of these if your schema takes advantage
+ of the anyAttribute='##other' in the schema for schemas
+ -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+ types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+ #all or space-separated list drawn from derivationChoice
+ -->
+
+<!--
+ Note that the use of 'facet' below is less restrictive
+ than is really intended: There should in fact be no
+ more than one of each of minInclusive, minExclusive,
+ maxInclusive, maxExclusive, totalDigits, fractionDigits,
+ length, maxLength, minLength within datatype,
+ and the min- and max- variants of Inclusive and Exclusive
+ are mutually exclusive. On the other hand, pattern and
+ enumeration may repeat.
+ -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+ "%pattern; | %enumeration; | %whiteSpace; | %length; |
+ %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr
+ "value CDATA #REQUIRED
+ id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+ ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+ name %NCName; #IMPLIED
+ final %simpleDerivationSet; #IMPLIED
+ id ID #IMPLIED
+ %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+ (%restriction1; |
+ ((%simpleType;)?,(%facet;)*)),
+ (%attrDecls;))>
+<!ATTLIST %restriction;
+ base %QName; #IMPLIED
+ id ID #IMPLIED
+ %restrictionAttrs;>
+<!--
+ base and simpleType child are mutually exclusive,
+ one is required.
+
+ restriction is shared between simpleType and
+ simpleContent and complexContent (in XMLSchema.xsd).
+ restriction1 is for the latter cases, when this
+ is restricting a complex type, as is attrDecls.
+ -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+ itemType %QName; #IMPLIED
+ id ID #IMPLIED
+ %listAttrs;>
+<!--
+ itemType and simpleType child are mutually exclusive,
+ one is required
+ -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+ id ID #IMPLIED
+ memberTypes %QNames; #IMPLIED
+ %unionAttrs;>
+<!--
+ At least one item in memberTypes or one simpleType
+ child is required
+ -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+ %facetAttr;
+ %fixedAttr;
+ %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+ %facetAttr;
+ %fixedAttr;
+ %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+ %facetAttr;
+ %fixedAttr;
+ %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+ %facetAttr;
+ %fixedAttr;
+ %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+ %facetAttr;
+ %fixedAttr;
+ %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+ %facetAttr;
+ %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+ %facetAttr;
+ %fixedAttr;
+ %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+ %facetAttr;
+ %patternAttrs;>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/xml.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/xml.xsd
new file mode 100644
index 0000000..e82f216
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2000/10/xml.xsd
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2001/MagicXMLSchema.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/MagicXMLSchema.xsd
new file mode 100644
index 0000000..a14f7dc
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/MagicXMLSchema.xsd
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- XML Schema schema for magic parts of XML Schemas -->
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN">
+
+ <xs:annotation>
+ <xs:documentation>
+ This defines two magic types,
+ namely anyType, the simple type definition almost equivalent to the ur-type definition,
+ and anySimpleType, the base type of all built-in datatypes.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="anyType" id="anyType">
+ <xs:restriction base="xs:anyType">
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anySimpleType" id="anySimpleType">
+ <xs:restriction base="xs:anyType">
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema-instance.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema-instance.xsd
new file mode 100644
index 0000000..c50ba5b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema-instance.xsd
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- XML Schema schema for XML Schema instance -->
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema-instance" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN">
+
+ <xs:annotation>
+ <xs:documentation>
+ This provides XML Schema instance declarations.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="type" type="xs:QName" id="type"/>
+ <xs:attribute name="nil" type="xs:boolean" id="nil"/>
+ <xs:attribute name="schemaLocation" id="schemaLocation">
+ <xs:simpleType>
+ <xs:list itemType="xs:anyURI">
+ </xs:list>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="noNamespaceSchemaLocation" type="xs:anyURI" id="noNamespaceSchemaLocation"/>
+
+</xs:schema>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema.dtd b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema.dtd
new file mode 100644
index 0000000..e1dbaeb
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema.dtd
@@ -0,0 +1,401 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+ Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+ Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
+<!-- prose copy in the structures REC is the definitive version --> <!--d-->
+<!-- (which shouldn't differ from this one except for this --> <!--d-->
+<!-- comment and entity expansions, but just in case) --> <!--d-->
+<!-- With the exception of cases with multiple namespace
+ prefixes for the XML Schema namespace, any XML document which is
+ not valid per this DTD given redefinitions in its internal subset of the
+ 'p' and 's' parameter entities below appropriate to its namespace
+ declaration of the XML Schema namespace is almost certainly not
+ a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+ are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+ schema document to establish a different
+ namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+ also define %s as the suffix for the appropriate
+ namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+ Define one of these if your schema takes advantage of the
+ anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+ <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+ <!-- #all or space-separated list drawn from
+ derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+ which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+ ((%simpleType; | %complexType;
+ | %element; | %attribute;
+ | %attributeGroup; | %group;
+ | %notation; ),
+ (%annotation;)*)* )>
+<!ATTLIST %schema;
+ targetNamespace %URIref; #IMPLIED
+ version CDATA #IMPLIED
+ %nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema'
+ xmlns CDATA #IMPLIED
+ finalDefault %complexDerivationSet; ''
+ blockDefault %blockSet; ''
+ id ID #IMPLIED
+ elementFormDefault %formValues; 'unqualified'
+ attributeFormDefault %formValues; 'unqualified'
+ xml:lang CDATA #IMPLIED
+ %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+ because at the Infoset level where schemas operate,
+ xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+
+<!-- The id attribute here and below is for use in external references
+ from non-schemas using simple fragment identifiers.
+ It is NOT used for schema-to-schema reference, internal or
+ external. -->
+
+<!-- a type is a named content type specification which allows attribute
+ declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+ (%simpleContent;|%complexContent;|
+ %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %complexDerivationSet; #IMPLIED
+ mixed (true|false) 'false'
+ %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+ has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+ and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; (%restriction;|%extension;)>
+<!ATTLIST %complexContent;
+ mixed (true|false) #IMPLIED
+ id ID #IMPLIED
+ %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+ one from part2; extension should use the full model -->
+
+<!ELEMENT %simpleContent; (%restriction;|%extension;)>
+<!ATTLIST %simpleContent;
+ id ID #IMPLIED
+ %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the
+ one defined above; extension should have no particle -->
+
+<!ELEMENT %extension; (%particleAndAttrs;)>
+<!ATTLIST %extension;
+ base %QName; #REQUIRED
+ id ID #IMPLIED
+ %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+ (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ nillable %boolean; #IMPLIED
+ substitutionGroup %QName; #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %blockSet; #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+ substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group;
+ name %NCName; #IMPLIED
+ ref %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+ minOccurs (1) #IMPLIED
+ maxOccurs (1) #IMPLIED
+ id ID #IMPLIED
+ %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+ a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+ If order is 'all' THIS group must be alone (or referenced alone) at
+ the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ minOccurs %nonNegativeInteger; '1'
+ maxOccurs CDATA '1'
+ id ID #IMPLIED
+ %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+ ##any - - any non-conflicting WFXML at all
+
+ ##other - - any non-conflicting WFXML from namespace other
+ than targetNamespace
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+ one or - - any non-conflicting WFXML from
+ more URI the listed namespaces
+ references
+
+ ##targetNamespace ##local may appear in the above list,
+ with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ id ID #IMPLIED
+ %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ use (prohibited|optional|required) #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+ reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+ (%attribute; | %attributeGroup;)*,
+ (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name. ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %uniqueAttrs;>
+
+<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+ name %NCName; #REQUIRED
+ refer %QName; #REQUIRED
+ id ID #IMPLIED
+ %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+ namespace %URIref; #IMPLIED
+ schemaLocation %URIref; #IMPLIED
+ id ID #IMPLIED
+ %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+ %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ public CDATA #REQUIRED
+ system %URIref; #IMPLIED
+ %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+ as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+ to work -->
+<!ELEMENT %appinfo; ANY> <!-- too restrictive -->
+<!ATTLIST %appinfo;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ %appinfoAttrs;>
+<!ELEMENT %documentation; ANY> <!-- too restrictive -->
+<!ATTLIST %documentation;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ xml:lang CDATA #IMPLIED
+ %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+ 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+ 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema.xsd
new file mode 100644
index 0000000..fce2291
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/XMLSchema.xsd
@@ -0,0 +1,2359 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- DOCTYPE has been removed from this copy -->
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xs:annotation>
+ <xs:documentation>
+ Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp
+ Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+ The schema corresponding to this document is normative,
+ with respect to the syntactic constraints it expresses in the
+ XML Schema language. The documentation (within <documentation> elements)
+ below, is not normative, but rather highlights important aspects of
+ the W3C Recommendation of which this is a part</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ The simpleType element and all of its members are defined
+ towards the end of this schema document</xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Get access to the xml: attribute groups for xml:lang
+ as declared on 'schema' and 'documentation' below
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:complexType name="openAttrs">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by almost all schema types
+ to allow attributes from other namespaces to be
+ added to user schemas.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="annotated">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by all types which allow annotation
+ other than <schema> itself
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="schemaTop">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which occur freely at the top level of schemas.
+ All of their types are based on the "annotated" type by extension.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="xs:redefinable"/>
+ <xs:element ref="xs:element"/>
+ <xs:element ref="xs:attribute"/>
+ <xs:element ref="xs:notation"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="redefinable">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which can self-redefine (see <redefine> below).</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:simpleType"/>
+ <xs:element ref="xs:complexType"/>
+ <xs:element ref="xs:group"/>
+ <xs:element ref="xs:attributeGroup"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="formChoice">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="qualified"/>
+ <xs:enumeration value="unqualified"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="reducedDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:reducedDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="fullDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:typeDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="schema" id="schema">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:include"/>
+ <xs:element ref="xs:import"/>
+ <xs:element ref="xs:redefine"/>
+ <xs:element ref="xs:annotation"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="xs:schemaTop"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="version" type="xs:token"/>
+ <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+ <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+ <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:key name="element">
+ <xs:selector xpath="xs:element"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attribute">
+ <xs:selector xpath="xs:attribute"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="type">
+ <xs:selector xpath="xs:complexType|xs:simpleType"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="group">
+ <xs:selector xpath="xs:group"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attributeGroup">
+ <xs:selector xpath="xs:attributeGroup"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="notation">
+ <xs:selector xpath="xs:notation"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="identityConstraint">
+ <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ </xs:element>
+
+ <xs:simpleType name="allNNI">
+ <xs:annotation><xs:documentation>
+ for maxOccurs</xs:documentation></xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="unbounded"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="occurs">
+ <xs:annotation><xs:documentation>
+ for all particles</xs:documentation></xs:annotation>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+ <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="defRef">
+ <xs:annotation><xs:documentation>
+ for element, group and attributeGroup,
+ which both define and reference</xs:documentation></xs:annotation>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+
+ <xs:group name="typeDefParticle">
+ <xs:annotation>
+ <xs:documentation>
+ 'complexType' uses this</xs:documentation></xs:annotation>
+ <xs:choice>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:group>
+
+
+
+ <xs:group name="nestedParticle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="particle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="attribute">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="use" use="optional" default="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="prohibited"/>
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelAttribute">
+ <xs:complexContent>
+ <xs:restriction base="xs:attribute">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="use" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="attrDecls">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="attribute" type="xs:attribute"/>
+ <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+ </xs:choice>
+ <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="complexTypeModel">
+ <xs:choice>
+ <xs:element ref="xs:simpleContent"/>
+ <xs:element ref="xs:complexContent"/>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ This branch is short for
+ <complexContent>
+ <restriction base="xs:anyType">
+ ...
+ </restriction>
+ </complexContent></xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="complexType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:complexTypeModel"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Will be restricted to required or forbidden</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>
+ Not allowed if simpleContent child is chosen.
+ May be overriden by setting on complexContent child.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:derivationSet"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="block" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="restrictionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:group ref="xs:typeDefParticle"/>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="complexRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="extensionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="complexContent" id="complexContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:complexRestrictionType"/>
+ <xs:element name="extension" type="xs:extensionType"/>
+ </xs:choice>
+ <xs:attribute name="mixed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Overrides any setting on complexType parent.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="simpleRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExtensionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:extensionType">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ No typeDefParticle group reference</xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleContent" id="simpleContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+ <xs:element name="extension" type="xs:simpleExtensionType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+ </xs:annotation>
+ </xs:element>
+
+
+ <xs:simpleType name="blockSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {substitution, extension,
+ restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="substitution"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="element" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ The element element can be used either
+ at the top level to define an element-type binding globally,
+ or within a content model to either reference a globally-defined
+ element or type or declare an element-type binding locally.
+ The ref form is not allowed at the top level.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="substitutionGroup" type="xs:QName"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:blockSet"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="substitutionGroup" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="group" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ group type for explicit groups, named top-level groups and
+ group references</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="realGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="all">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:all">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+ <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="groupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="explicitGroup">
+ <xs:annotation>
+ <xs:documentation>
+ group type for the three kinds of group</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+ <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExplicitGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="allModel">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>This choice with min/max is here to
+ avoid a pblm with the Elt:All/Choice/Seq
+ Particle derivation constraint</xs:documentation>
+ </xs:annotation>
+ <xs:element name="element" type="xs:narrowMaxMin"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+
+ <xs:complexType name="narrowMaxMin">
+ <xs:annotation>
+ <xs:documentation>restricted max/min</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:localElement">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="all">
+ <xs:annotation>
+ <xs:documentation>
+ Only elements allowed inside</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="all" id="all" type="xs:all">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="group" type="xs:namedGroup" id="group">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="wildcard">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+ <xs:attribute name="processContents" use="optional" default="strict">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="skip"/>
+ <xs:enumeration value="lax"/>
+ <xs:enumeration value="strict"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" id="any">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ simple type for the value of the 'namespace' attr of
+ 'any' and 'anyAttribute'</xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Value is
+ ##any - - any non-conflicting WFXML/attribute at all
+
+ ##other - - any non-conflicting WFXML/attribute from
+ namespace other than targetNS
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+
+ one or - - any non-conflicting WFXML/attribute from
+ more URI the listed namespaces
+ references
+ (space separated)
+
+ ##targetNamespace or ##local may appear in the above list, to
+ refer to the targetNamespace of the enclosing
+ schema or an absent targetNamespace respectively</xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="namespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##any"/>
+ <xs:enumeration value="##other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="attributeGroup" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:attrDecls"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedAttributeGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="attributeGroupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="include" id="include">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="redefine" id="redefine">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:annotation"/>
+ <xs:group ref="xs:redefinable"/>
+ </xs:choice>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="import" id="import">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="selector" id="selector">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the following EBNF:
+ Selector ::= Path ( '|' Path )*
+ Path ::= ('.//')? Step ( '/' Step )*
+ Step ::= '.' | NameTest
+ NameTest ::= QName | '*' | NCName ':' '*'
+ child:: is also allowed
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="field" id="field">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the same EBNF as for selector,
+ with the following change:
+ Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="keybase">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element ref="xs:selector"/>
+ <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="identityConstraint">
+ <xs:annotation>
+ <xs:documentation>The three kinds of identity constraints, all with
+ type of or derived from 'keybase'.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:unique"/>
+ <xs:element ref="xs:key"/>
+ <xs:element ref="xs:keyref"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element name="unique" type="xs:keybase" id="unique">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:keybase">
+ <xs:attribute name="refer" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="notation" id="notation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="public" type="xs:public"/>
+ <xs:attribute name="system" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="public">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ A public identifier, per ISO 8879</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+
+ <xs:element name="appinfo" id="appinfo">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="documentation" id="documentation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="annotation" id="annotation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:appinfo"/>
+ <xs:element ref="xs:documentation"/>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ notations for use within XML Schema schemas</xs:documentation>
+ </xs:annotation>
+
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+ <xs:complexType name="anyType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Not the real urType, but as close an approximation as we can
+ get in the XML representation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+
+ <xs:annotation>
+ <xs:documentation>
+ First the built-in primitive datatypes. These definitions are for
+ information only, the real built-in definitions are magic.
+ </xs:documentation>
+
+ <xs:documentation>
+ For each built-in datatype in this schema (both primitive and
+ derived) can be uniquely addressed via a URI constructed
+ as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the datatype
+
+ For example, to address the int datatype, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#int
+
+ Additionally, each facet definition element can be uniquely
+ addressed via a URI constructed as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the facet
+
+ For example, to address the maxInclusive facet, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#maxInclusive
+
+ Additionally, each facet usage in a built-in datatype definition
+ can be uniquely addressed via a URI constructed as follows:
+ 1) the base URI is the URI of the XML Schema namespace
+ 2) the fragment identifier is the name of the datatype, followed
+ by a period (".") followed by the name of the facet
+
+ For example, to address the usage of the maxInclusive facet in
+ the definition of int, the URI is:
+
+ http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="string" id="string">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="preserve" id="string.preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="boolean" id="boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="boolean.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="float" id="float">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="float.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="double" id="double">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="double.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="decimal" id="decimal">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="totalDigits"/>
+ <hfp:hasFacet name="fractionDigits"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="decimal.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="duration" id="duration">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="duration.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="dateTime" id="dateTime">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="time" id="time">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="time.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date" id="date">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="date.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYearMonth" id="gYearMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gYearMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYear" id="gYear">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gYear.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonthDay" id="gMonthDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gMonthDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gDay" id="gDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonth" id="gMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="gMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="hexBinary" id="hexBinary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="hexBinary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="base64Binary" id="base64Binary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="base64Binary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anyURI" id="anyURI">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="anyURI.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="QName" id="QName">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="QName.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NOTATION" id="NOTATION">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+ <xs:documentation>
+ NOTATION cannot be used directly in a schema; rather a type
+ must be derived from it by specifying at least one enumeration
+ facet whose value is the name of a NOTATION declared in the
+ schema.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true" id="NOTATION.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ Now the derived primitive types
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="normalizedString" id="normalizedString">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="token" id="token">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token"/>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="language" id="language">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt">
+ pattern specifies the content of section 2.12 of XML 1.0e2
+ and RFC 3066 (Revised version of RFC 1766).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREFS" id="IDREFS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:IDREF"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="IDREFS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITIES" id="ENTITIES">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:ENTITY"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="ENTITIES.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\c+" id="NMTOKEN.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+ pattern matches production 7 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="NMTOKENS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Name" id="Name">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\i\c*" id="Name.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name">
+ pattern matches production 5 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NCName" id="NCName">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:Name">
+ <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+ pattern matches production 4 from the Namespaces in XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ID" id="ID">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREF" id="IDREF">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITY" id="ENTITY">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="integer" id="integer">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+ </xs:annotation>
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+ <xs:pattern value="[\-+]?[0-9]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="negativeInteger" id="negativeInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonPositiveInteger">
+ <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="long" id="long">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+ <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="int" id="int">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int"/>
+ </xs:annotation>
+ <xs:restriction base="xs:long">
+ <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+ <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="short" id="short">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short"/>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="-32768" id="short.minInclusive"/>
+ <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="byte" id="byte">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:short">
+ <xs:minInclusive value="-128" id="byte.minInclusive"/>
+ <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedLong" id="unsignedLong">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedInt" id="unsignedInt">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedLong">
+ <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedShort" id="unsignedShort">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedByte" id="unsignedByte">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedShort">
+ <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="positiveInteger" id="positiveInteger">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="substitution"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:group name="simpleDerivation">
+ <xs:choice>
+ <xs:element ref="xs:restriction"/>
+ <xs:element ref="xs:list"/>
+ <xs:element ref="xs:union"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="simpleDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {restriction, union, list}
+ </xs:documentation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="simpleType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleDerivation"/>
+ <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Can be restricted to required or forbidden
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Required at the top level
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited">
+ <xs:annotation>
+ <xs:documentation>
+ Forbidden when nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="facets">
+ <xs:annotation>
+ <xs:documentation>
+ We should use a substitution group for facets, but
+ that's ruled out because it would allow users to
+ add their own, which we're not ready for yet.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:minExclusive"/>
+ <xs:element ref="xs:minInclusive"/>
+ <xs:element ref="xs:maxExclusive"/>
+ <xs:element ref="xs:maxInclusive"/>
+ <xs:element ref="xs:totalDigits"/>
+ <xs:element ref="xs:fractionDigits"/>
+ <xs:element ref="xs:length"/>
+ <xs:element ref="xs:minLength"/>
+ <xs:element ref="xs:maxLength"/>
+ <xs:element ref="xs:enumeration"/>
+ <xs:element ref="xs:whiteSpace"/>
+ <xs:element ref="xs:pattern"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="simpleRestrictionModel">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="restriction" id="restriction">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+ base attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ <xs:attribute name="base" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="list" id="list">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-list">
+ itemType attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="union" id="union">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-union">
+ memberTypes attribute must be non-empty or there must be
+ at least one simpleType child
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="memberTypes" use="optional">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="facet">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="value" use="required"/>
+ <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="noFixedFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fixed" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="numFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="totalDigits" id="totalDigits">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:numFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="length" id="length" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minLength" id="minLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="whiteSpace" id="whiteSpace">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="preserve"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="collapse"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="pattern" id="pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:noFixedFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2001/datatypes.dtd b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/datatypes.dtd
new file mode 100644
index 0000000..fc4e196
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/datatypes.dtd
@@ -0,0 +1,202 @@
+<!--
+ DTD for XML Schemas: Part 2: Datatypes
+ Note this DTD is NOT normative, or even definitive. - - the
+ prose copy in the datatypes REC is the definitive version
+ (which shouldn't differ from this one except for this comment
+ and entity expansions, but just in case)
+ -->
+
+<!--
+ This DTD cannot be used on its own, it is intended
+ only for incorporation in XMLSchema.dtd, q.v.
+ -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+ Customisation entities for the ATTLIST of each element
+ type. Define one of these if your schema takes advantage
+ of the anyAttribute='##other' in the schema for schemas
+ -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+ types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+ #all or space-separated list drawn from derivationChoice
+ -->
+
+<!--
+ Note that the use of 'facet' below is less restrictive
+ than is really intended: There should in fact be no
+ more than one of each of minInclusive, minExclusive,
+ maxInclusive, maxExclusive, totalDigits, fractionDigits,
+ length, maxLength, minLength within datatype,
+ and the min- and max- variants of Inclusive and Exclusive
+ are mutually exclusive. On the other hand, pattern and
+ enumeration may repeat.
+ -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+ "%pattern; | %enumeration; | %whiteSpace; | %length; |
+ %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr
+ "value CDATA #REQUIRED
+ id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+ ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+ name %NCName; #IMPLIED
+ final %simpleDerivationSet; #IMPLIED
+ id ID #IMPLIED
+ %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+ (%restriction1; |
+ ((%simpleType;)?,(%facet;)*)),
+ (%attrDecls;))>
+<!ATTLIST %restriction;
+ base %QName; #IMPLIED
+ id ID #IMPLIED
+ %restrictionAttrs;>
+<!--
+ base and simpleType child are mutually exclusive,
+ one is required.
+
+ restriction is shared between simpleType and
+ simpleContent and complexContent (in XMLSchema.xsd).
+ restriction1 is for the latter cases, when this
+ is restricting a complex type, as is attrDecls.
+ -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+ itemType %QName; #IMPLIED
+ id ID #IMPLIED
+ %listAttrs;>
+<!--
+ itemType and simpleType child are mutually exclusive,
+ one is required
+ -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+ id ID #IMPLIED
+ memberTypes %QNames; #IMPLIED
+ %unionAttrs;>
+<!--
+ At least one item in memberTypes or one simpleType
+ child is required
+ -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+ %facetAttr;
+ %fixedAttr;
+ %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+ %facetAttr;
+ %fixedAttr;
+ %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+ %facetAttr;
+ %fixedAttr;
+ %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+ %facetAttr;
+ %fixedAttr;
+ %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+ %facetAttr;
+ %fixedAttr;
+ %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+ %facetAttr;
+ %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+ %facetAttr;
+ %fixedAttr;
+ %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+ %facetAttr;
+ %patternAttrs;>
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/2001/xml.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/xml.xsd
new file mode 100644
index 0000000..e82f216
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/2001/xml.xsd
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/cache/www.w3.org/XML/1998/namespace.xsd b/plugins/org.eclipse.xsd/cache/www.w3.org/XML/1998/namespace.xsd
new file mode 100644
index 0000000..c09b386
--- /dev/null
+++ b/plugins/org.eclipse.xsd/cache/www.w3.org/XML/1998/namespace.xsd
@@ -0,0 +1,60 @@
+<?xml version='1.0'?>
+<schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <annotation>
+ <documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:lang, xml:space or xml:base attributes
+ on elements they define.
+
+ To enable this, such a schema must first declare the XML
+ namespace, and then import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . . xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2000/10/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate a instance
+ element with any of those attributes</documentation>
+ </annotation>
+
+ <attribute name="lang" type="language">
+ <annotation>
+ <documentation>In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .</documentation>
+ </annotation>
+ </attribute>
+
+ <attribute name="space" default="preserve">
+ <simpleType>
+ <restriction base="NCName">
+ <enumeration value="default"/>
+ <enumeration value="preserve"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+
+ <attribute name="base" type="anyURI"/>
+
+ <attributeGroup name="specialAttrs">
+ <attribute ref="xml:lang"/>
+ <attribute ref="xml:space"/>
+ <attribute ref="xml:base"/>
+ </attributeGroup>
+
+</schema>
diff --git a/plugins/org.eclipse.xsd/model/XSD.ecore b/plugins/org.eclipse.xsd/model/XSD.ecore
new file mode 100644
index 0000000..570d0bb
--- /dev/null
+++ b/plugins/org.eclipse.xsd/model/XSD.ecore
@@ -0,0 +1,650 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="xsd"
+ nsURI="http://www.eclipse.org/xsd/2002/XSD" nsPrefix="xsd">
+ <eClassifiers xsi:type="ecore:EClass" name="XSDAnnotation" eSuperTypes="#//XSDComponent #//XSDRedefineContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="applicationInformation"
+ upperBound="-1" eType="#//DOMElement"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="userInformation" upperBound="-1"
+ eType="#//DOMElement"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="attributes" upperBound="-1"
+ eType="#//DOMAttr"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDAttributeDeclaration" eSuperTypes="#//XSDFeature #//XSDSchemaContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="attributeDeclarationReference"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" changeable="false"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="anonymousTypeDefinition"
+ eType="#//XSDSimpleTypeDefinition" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeDefinition" lowerBound="1"
+ eType="#//XSDSimpleTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedAttributeDeclaration"
+ lowerBound="1" eType="#//XSDAttributeDeclaration" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDAttributeGroupContent" abstract="true"
+ eSuperTypes="#//XSDConcreteComponent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDAttributeGroupDefinition" eSuperTypes="#//XSDRedefinableComponent #//XSDAttributeGroupContent #//XSDRedefineContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="attributeGroupDefinitionReference"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" changeable="false"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//XSDAttributeGroupContent" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeUses" upperBound="-1"
+ eType="#//XSDAttributeUse" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeWildcardContent"
+ eType="#//XSDWildcard" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeWildcard" eType="#//XSDWildcard"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedAttributeGroupDefinition"
+ lowerBound="1" eType="#//XSDAttributeGroupDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="syntheticWildcard" eType="#//XSDWildcard"
+ transient="true" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDAttributeUse" eSuperTypes="#//XSDComponent #//XSDAttributeGroupContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="required" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Value"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="constraint" eType="#//XSDConstraint"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="use" eType="#//XSDAttributeUseCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeDeclaration" lowerBound="1"
+ eType="#//XSDAttributeDeclaration" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="content" lowerBound="1"
+ eType="#//XSDAttributeDeclaration" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDBoundedFacet" eSuperTypes="#//XSDFundamentalFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDCardinalityFacet" eSuperTypes="#//XSDFundamentalFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//XSDCardinality"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDComplexTypeContent" abstract="true"
+ eSuperTypes="#//XSDComponent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDComplexTypeDefinition" eSuperTypes="#//XSDTypeDefinition #//XSDScope">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivationMethod" eType="#//XSDDerivationMethod"
+ defaultValueLiteral="restriction" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" upperBound="-1"
+ eType="#//XSDComplexFinal"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="contentTypeCategory" eType="#//XSDContentTypeCategory"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="prohibitedSubstitutions"
+ upperBound="-1" eType="#//XSDProhibitedSubstitutions"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalFinal" upperBound="-1"
+ eType="#//XSDComplexFinal" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="block" upperBound="-1"
+ eType="#//XSDProhibitedSubstitutions" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contentAnnotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="baseTypeDefinition" lowerBound="1"
+ eType="#//XSDTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="content" eType="#//XSDComplexTypeContent"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contentType" eType="#//XSDComplexTypeContent"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeUses" upperBound="-1"
+ eType="#//XSDAttributeUse" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeContents" upperBound="-1"
+ eType="#//XSDAttributeGroupContent" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeWildcard" eType="#//XSDWildcard"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeWildcardContent"
+ eType="#//XSDWildcard" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootTypeDefinition" lowerBound="1"
+ eType="#//XSDTypeDefinition" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="syntheticParticle" eType="#//XSDParticle"
+ transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="syntheticWildcard" eType="#//XSDWildcard"
+ transient="true" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDComponent" abstract="true" eSuperTypes="#//XSDConcreteComponent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDConcreteComponent" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="element" eType="#//DOMElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="container" eType="#//XSDConcreteComponent"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootContainer" lowerBound="1"
+ eType="#//XSDConcreteComponent" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schema" eType="#//XSDSchema"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="diagnostics" upperBound="-1"
+ eType="#//XSDDiagnostic" transient="true" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDConstrainingFacet" abstract="true"
+ eSuperTypes="#//XSDFacet"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDDiagnostic" eSuperTypes="#//XSDConcreteComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//XSDDiagnosticSeverity"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="message" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="locationURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="line" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="column" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="node" eType="#//DOMNode"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="annotationURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="substitutions" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="components" lowerBound="1"
+ upperBound="-1" eType="#//XSDConcreteComponent" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primaryComponent" lowerBound="1"
+ eType="#//XSDConcreteComponent" volatile="true" transient="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDElementDeclaration" eSuperTypes="#//XSDFeature #//XSDSchemaContent #//XSDTerm">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nillable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="disallowedSubstitutions"
+ upperBound="-1" eType="#//XSDDisallowedSubstitutions"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="substitutionGroupExclusions"
+ upperBound="-1" eType="#//XSDSubstitutionGroupExclusions"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalFinal" upperBound="-1"
+ eType="#//XSDProhibitedSubstitutions" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="block" upperBound="-1"
+ eType="#//XSDDisallowedSubstitutions" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="elementDeclarationReference"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" changeable="false"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="circular" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="anonymousTypeDefinition"
+ eType="#//XSDTypeDefinition" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeDefinition" lowerBound="1"
+ eType="#//XSDTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="identityConstraintDefinitions"
+ upperBound="-1" eType="#//XSDIdentityConstraintDefinition" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedElementDeclaration"
+ lowerBound="1" eType="#//XSDElementDeclaration" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="substitutionGroupAffiliation"
+ eType="#//XSDElementDeclaration" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="substitutionGroup" upperBound="-1"
+ eType="#//XSDElementDeclaration" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDEnumerationFacet" eSuperTypes="#//XSDRepeatableFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" upperBound="-1"
+ eType="#//Value"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDFacet" abstract="true" eSuperTypes="#//XSDComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="facetName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="effectiveValue" eType="#//Value"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="simpleTypeDefinition" eType="#//XSDSimpleTypeDefinition"
+ changeable="false" volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDFeature" abstract="true" eSuperTypes="#//XSDNamedComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Value"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="constraint" eType="#//XSDConstraint"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="form" eType="#//XSDForm"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="global" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="featureReference" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="#//XSDScope"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedFeature" lowerBound="1"
+ eType="#//XSDFeature" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//XSDTypeDefinition"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDFixedFacet" abstract="true" eSuperTypes="#//XSDConstrainingFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fixed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ unsettable="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDFractionDigitsFacet" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDFundamentalFacet" abstract="true"
+ eSuperTypes="#//XSDFacet"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDIdentityConstraintDefinition" eSuperTypes="#//XSDNamedComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="identityConstraintCategory"
+ eType="#//XSDIdentityConstraintCategory"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referencedKey" eType="#//XSDIdentityConstraintDefinition"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selector" lowerBound="1"
+ eType="#//XSDXPathDefinition" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fields" lowerBound="1"
+ upperBound="-1" eType="#//XSDXPathDefinition" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDImport" eSuperTypes="#//XSDSchemaDirective">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDInclude" eSuperTypes="#//XSDSchemaCompositor">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDLengthFacet" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMaxExclusiveFacet" eSuperTypes="#//XSDMaxFacet"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMaxFacet" abstract="true" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Value"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="inclusive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="exclusive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMaxInclusiveFacet" eSuperTypes="#//XSDMaxFacet"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMaxLengthFacet" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMinExclusiveFacet" eSuperTypes="#//XSDMinFacet"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMinFacet" abstract="true" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Value"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="inclusive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="exclusive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMinInclusiveFacet" eSuperTypes="#//XSDMinFacet"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDMinLengthFacet" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDModelGroup" eSuperTypes="#//XSDTerm">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="compositor" eType="#//XSDCompositor"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//XSDParticle" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="particles" lowerBound="1"
+ upperBound="-1" eType="#//XSDParticle" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDModelGroupDefinition" eSuperTypes="#//XSDRedefinableComponent #//XSDParticleContent #//XSDRedefineContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="modelGroupDefinitionReference"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" changeable="false"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modelGroup" lowerBound="1"
+ eType="#//XSDModelGroup" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedModelGroupDefinition"
+ lowerBound="1" eType="#//XSDModelGroupDefinition" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDNamedComponent" abstract="true" eSuperTypes="#//XSDComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="aliasName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="aliasURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="qName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDNotationDeclaration" eSuperTypes="#//XSDNamedComponent #//XSDSchemaContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="systemIdentifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicIdentifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDNumericFacet" eSuperTypes="#//XSDFundamentalFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDOrderedFacet" eSuperTypes="#//XSDFundamentalFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//XSDOrdered"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDParticle" eSuperTypes="#//XSDComplexTypeContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minOccurs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxOccurs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="content" lowerBound="1"
+ eType="#//XSDParticleContent" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="term" lowerBound="1" eType="#//XSDTerm"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDParticleContent" abstract="true"
+ eSuperTypes="#//XSDConcreteComponent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDPatternFacet" eSuperTypes="#//XSDRepeatableFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDRedefinableComponent" abstract="true"
+ eSuperTypes="#//XSDNamedComponent #//XSDRedefineContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="circular" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDRedefineContent" abstract="true"
+ eSuperTypes="#//XSDSchemaContent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDRedefine" eSuperTypes="#//XSDSchemaCompositor">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//XSDAnnotation" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//XSDRedefineContent" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDRepeatableFacet" abstract="true"
+ eSuperTypes="#//XSDConstrainingFacet">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//XSDAnnotation" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDSchema" eSuperTypes="#//XSDScope">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="document" eType="#//DOMDocument"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schemaLocation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="attributeFormDefault" eType="#//XSDForm"
+ defaultValueLiteral="unqualified" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="elementFormDefault" eType="#//XSDForm"
+ defaultValueLiteral="unqualified" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="finalDefault" upperBound="-1"
+ eType="#//XSDProhibitedSubstitutions" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="blockDefault" upperBound="-1"
+ eType="#//XSDDisallowedSubstitutions" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//XSDSchemaContent" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementDeclarations" upperBound="-1"
+ eType="#//XSDElementDeclaration" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeDeclarations"
+ upperBound="-1" eType="#//XSDAttributeDeclaration" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeGroupDefinitions"
+ upperBound="-1" eType="#//XSDAttributeGroupDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeDefinitions" upperBound="-1"
+ eType="#//XSDTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modelGroupDefinitions"
+ upperBound="-1" eType="#//XSDModelGroupDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="identityConstraintDefinitions"
+ upperBound="-1" eType="#//XSDIdentityConstraintDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="notationDeclarations" upperBound="-1"
+ eType="#//XSDNotationDeclaration" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//XSDAnnotation" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="allDiagnostics" upperBound="-1"
+ eType="#//XSDDiagnostic" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referencingDirectives"
+ upperBound="-1" eType="#//XSDSchemaDirective" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootVersion" lowerBound="1"
+ eType="#//XSDSchema" changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="originalVersion" eType="#//XSDSchema"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incorporatedVersions" upperBound="-1"
+ eType="#//XSDSchema" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schemaForSchema" lowerBound="1"
+ eType="#//XSDSchema" changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDSchemaCompositor" abstract="true"
+ eSuperTypes="#//XSDSchemaDirective">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incorporatedSchema" eType="#//XSDSchema"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDSchemaContent" abstract="true" eSuperTypes="#//XSDConcreteComponent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDSchemaDirective" abstract="true"
+ eSuperTypes="#//XSDSchemaContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schemaLocation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedSchema" eType="#//XSDSchema"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDScope" abstract="true" eSuperTypes="#//XSDComponent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDSimpleTypeDefinition" eSuperTypes="#//XSDTypeDefinition #//XSDComplexTypeContent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="variety" eType="#//XSDVariety"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" upperBound="-1"
+ eType="#//XSDSimpleFinal"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalFinal" upperBound="-1"
+ eType="#//XSDSimpleFinal" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="validFacets" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//XSDSimpleTypeDefinition" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="facetContents" upperBound="-1"
+ eType="#//XSDConstrainingFacet" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="facets" upperBound="-1"
+ eType="#//XSDConstrainingFacet" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="memberTypeDefinitions"
+ upperBound="-1" eType="#//XSDSimpleTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fundamentalFacets" lowerBound="1"
+ upperBound="-1" eType="#//XSDFundamentalFacet" transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="baseTypeDefinition" lowerBound="1"
+ eType="#//XSDSimpleTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primitiveTypeDefinition"
+ eType="#//XSDSimpleTypeDefinition" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="itemTypeDefinition" eType="#//XSDSimpleTypeDefinition"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootTypeDefinition" lowerBound="1"
+ eType="#//XSDSimpleTypeDefinition" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="minFacet" eType="#//XSDMinFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="maxFacet" eType="#//XSDMaxFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="maxInclusiveFacet" eType="#//XSDMaxInclusiveFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="minInclusiveFacet" eType="#//XSDMinInclusiveFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="minExclusiveFacet" eType="#//XSDMinExclusiveFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="maxExclusiveFacet" eType="#//XSDMaxExclusiveFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lengthFacet" eType="#//XSDLengthFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="whiteSpaceFacet" eType="#//XSDWhiteSpaceFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enumerationFacets" upperBound="-1"
+ eType="#//XSDEnumerationFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="patternFacets" upperBound="-1"
+ eType="#//XSDPatternFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cardinalityFacet" lowerBound="1"
+ eType="#//XSDCardinalityFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="numericFacet" lowerBound="1"
+ eType="#//XSDNumericFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="maxLengthFacet" eType="#//XSDMaxLengthFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="minLengthFacet" eType="#//XSDMinLengthFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="totalDigitsFacet" eType="#//XSDTotalDigitsFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fractionDigitsFacet" eType="#//XSDFractionDigitsFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderedFacet" lowerBound="1"
+ eType="#//XSDOrderedFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="boundedFacet" lowerBound="1"
+ eType="#//XSDBoundedFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveMaxFacet" eType="#//XSDMaxFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveWhiteSpaceFacet"
+ eType="#//XSDWhiteSpaceFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveMaxLengthFacet"
+ eType="#//XSDMaxLengthFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveFractionDigitsFacet"
+ eType="#//XSDFractionDigitsFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectivePatternFacet"
+ eType="#//XSDPatternFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveEnumerationFacet"
+ eType="#//XSDEnumerationFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveTotalDigitsFacet"
+ eType="#//XSDTotalDigitsFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveMinLengthFacet"
+ eType="#//XSDMinLengthFacet" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveLengthFacet" eType="#//XSDLengthFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effectiveMinFacet" eType="#//XSDMinFacet"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="syntheticFacets" upperBound="-1"
+ eType="#//XSDFacet" transient="true" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDTerm" abstract="true" eSuperTypes="#//XSDComponent #//XSDParticleContent"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDTotalDigitsFacet" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDTypeDefinition" abstract="true" eSuperTypes="#//XSDRedefinableComponent #//XSDRedefineContent">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="derivationAnnotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//XSDAnnotation" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootType" lowerBound="1"
+ eType="#//XSDTypeDefinition" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="baseType" lowerBound="1"
+ eType="#//XSDTypeDefinition" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="simpleType" eType="#//XSDSimpleTypeDefinition"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="complexType" eType="#//XSDParticle"
+ changeable="false" volatile="true" transient="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDWhiteSpaceFacet" eSuperTypes="#//XSDFixedFacet">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//XSDWhiteSpace"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDWildcard" eSuperTypes="#//XSDTerm">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespaceConstraintCategory"
+ eType="#//XSDNamespaceConstraintCategory"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespaceConstraint" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="processContents" eType="#//XSDProcessContents"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalNamespaceConstraint"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//XSDAnnotation" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XSDXPathDefinition" eSuperTypes="#//XSDComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="variety" eType="#//XSDXPathVariety"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" eType="#//XSDAnnotation"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="DOMAttr" instanceClassName="org.w3c.dom.Attr"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="DOMDocument" instanceClassName="org.w3c.dom.Document"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="DOMElement" instanceClassName="org.w3c.dom.Element"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="DOMNode" instanceClassName="org.w3c.dom.Node"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Value" instanceClassName="java.lang.Object"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDAttributeUseCategory">
+ <eLiterals name="optional"/>
+ <eLiterals name="prohibited" value="1"/>
+ <eLiterals name="required" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDCardinality">
+ <eLiterals name="finite"/>
+ <eLiterals name="countablyInfinite" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDComplexFinal">
+ <eLiterals name="extension"/>
+ <eLiterals name="restriction" value="1"/>
+ <eLiterals name="all" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDCompositor">
+ <eLiterals name="all"/>
+ <eLiterals name="choice" value="1"/>
+ <eLiterals name="sequence" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDConstraint">
+ <eLiterals name="default"/>
+ <eLiterals name="fixed" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDContentTypeCategory">
+ <eLiterals name="empty"/>
+ <eLiterals name="simple" value="1"/>
+ <eLiterals name="mixed" value="2"/>
+ <eLiterals name="elementOnly" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDDerivationMethod">
+ <eLiterals name="extension"/>
+ <eLiterals name="restriction" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDDiagnosticSeverity">
+ <eLiterals name="fatal"/>
+ <eLiterals name="error" value="1"/>
+ <eLiterals name="warning" value="2"/>
+ <eLiterals name="information" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDDisallowedSubstitutions">
+ <eLiterals name="substitution"/>
+ <eLiterals name="extension" value="1"/>
+ <eLiterals name="restriction" value="2"/>
+ <eLiterals name="all" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDForm">
+ <eLiterals name="qualified"/>
+ <eLiterals name="unqualified" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDIdentityConstraintCategory">
+ <eLiterals name="key"/>
+ <eLiterals name="keyref" value="1"/>
+ <eLiterals name="unique" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDNamespaceConstraintCategory">
+ <eLiterals name="any"/>
+ <eLiterals name="not" value="1"/>
+ <eLiterals name="set" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDOrdered">
+ <eLiterals name="false"/>
+ <eLiterals name="partial" value="1"/>
+ <eLiterals name="total" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDProcessContents">
+ <eLiterals name="strict"/>
+ <eLiterals name="lax" value="1"/>
+ <eLiterals name="skip" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDProhibitedSubstitutions">
+ <eLiterals name="extension"/>
+ <eLiterals name="restriction" value="1"/>
+ <eLiterals name="all" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDSimpleFinal">
+ <eLiterals name="list"/>
+ <eLiterals name="restriction" value="1"/>
+ <eLiterals name="union" value="2"/>
+ <eLiterals name="all" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDSubstitutionGroupExclusions">
+ <eLiterals name="extension"/>
+ <eLiterals name="restriction" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDVariety">
+ <eLiterals name="atomic"/>
+ <eLiterals name="list" value="1"/>
+ <eLiterals name="union" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDWhiteSpace">
+ <eLiterals name="preserve"/>
+ <eLiterals name="replace" value="1"/>
+ <eLiterals name="collapse" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XSDXPathVariety">
+ <eLiterals name="selector"/>
+ <eLiterals name="field" value="1"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.xsd/model/XSD.genmodel b/plugins/org.eclipse.xsd/model/XSD.genmodel
new file mode 100644
index 0000000..c0f7e2a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/model/XSD.genmodel
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.xsd/src" editDirectory="" editorDirectory=""
+ modelPluginID="org.eclipse.xsd" runtimeJar="true" modelName="XSD" updateClasspath="false"
+ featureMapWrapperClass="" testsDirectory="" booleanFlagsField="eFlags" booleanFlagsReservedBits="8"
+ importerID="org.eclipse.emf.importer.rose" complianceLevel="5.0" language="en"
+ packedEnums="true">
+ <foreignModel>XSD.mdl</foreignModel>
+ <foreignModel>VABASE_PLUGINS_PATH</foreignModel>
+ <foreignModel>../..</foreignModel>
+ <genPackages prefix="XSD" basePackage="org.eclipse" disposableProviderFactory="true"
+ contentTypeIdentifier="org.eclipse.xsd" ecorePackage="XSD.ecore#/">
+ <genEnums ecoreEnum="XSD.ecore#//XSDAttributeUseCategory">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDAttributeUseCategory/optional"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDAttributeUseCategory/prohibited"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDAttributeUseCategory/required"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDCardinality">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDCardinality/finite"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDCardinality/countablyInfinite"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDComplexFinal">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDComplexFinal/extension"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDComplexFinal/restriction"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDComplexFinal/all"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDCompositor">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDCompositor/all"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDCompositor/choice"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDCompositor/sequence"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDConstraint">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDConstraint/default"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDConstraint/fixed"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDContentTypeCategory">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDContentTypeCategory/empty"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDContentTypeCategory/simple"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDContentTypeCategory/mixed"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDContentTypeCategory/elementOnly"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDDerivationMethod">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDerivationMethod/extension"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDerivationMethod/restriction"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDDiagnosticSeverity">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDiagnosticSeverity/fatal"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDiagnosticSeverity/error"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDiagnosticSeverity/warning"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDiagnosticSeverity/information"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDDisallowedSubstitutions">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDisallowedSubstitutions/substitution"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDisallowedSubstitutions/extension"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDisallowedSubstitutions/restriction"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDDisallowedSubstitutions/all"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDForm">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDForm/qualified"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDForm/unqualified"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDIdentityConstraintCategory">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDIdentityConstraintCategory/key"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDIdentityConstraintCategory/keyref"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDIdentityConstraintCategory/unique"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDNamespaceConstraintCategory">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDNamespaceConstraintCategory/any"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDNamespaceConstraintCategory/not"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDNamespaceConstraintCategory/set"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDOrdered">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDOrdered/false"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDOrdered/partial"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDOrdered/total"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDProcessContents">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDProcessContents/strict"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDProcessContents/lax"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDProcessContents/skip"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDProhibitedSubstitutions">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDProhibitedSubstitutions/extension"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDProhibitedSubstitutions/restriction"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDProhibitedSubstitutions/all"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDSimpleFinal">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDSimpleFinal/list"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDSimpleFinal/restriction"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDSimpleFinal/union"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDSimpleFinal/all"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDSubstitutionGroupExclusions">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDSubstitutionGroupExclusions/extension"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDSubstitutionGroupExclusions/restriction"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDVariety">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDVariety/atomic"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDVariety/list"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDVariety/union"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDWhiteSpace">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDWhiteSpace/preserve"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDWhiteSpace/replace"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDWhiteSpace/collapse"/>
+ </genEnums>
+ <genEnums ecoreEnum="XSD.ecore#//XSDXPathVariety">
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDXPathVariety/selector"/>
+ <genEnumLiterals ecoreEnumLiteral="XSD.ecore#//XSDXPathVariety/field"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="XSD.ecore#//DOMAttr"/>
+ <genDataTypes ecoreDataType="XSD.ecore#//DOMDocument"/>
+ <genDataTypes ecoreDataType="XSD.ecore#//DOMElement"/>
+ <genDataTypes ecoreDataType="XSD.ecore#//DOMNode"/>
+ <genDataTypes ecoreDataType="XSD.ecore#//Value"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDAnnotation">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAnnotation/applicationInformation"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAnnotation/userInformation"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAnnotation/attributes"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDAttributeDeclaration">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeDeclaration/attributeDeclarationReference"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeDeclaration/annotation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeDeclaration/anonymousTypeDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeDeclaration/typeDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeDeclaration/resolvedAttributeDeclaration"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDAttributeGroupContent"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDAttributeGroupDefinition">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeGroupDefinition/attributeGroupDefinitionReference"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/annotation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/contents"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/attributeUses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/attributeWildcardContent"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/attributeWildcard"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/resolvedAttributeGroupDefinition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeGroupDefinition/syntheticWildcard"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDAttributeUse">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeUse/required"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeUse/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeUse/constraint"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeUse/use"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDAttributeUse/lexicalValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeUse/attributeDeclaration"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDAttributeUse/content"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDBoundedFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDBoundedFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDCardinalityFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDCardinalityFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDComplexTypeContent"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDComplexTypeDefinition">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/derivationMethod"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/abstract"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/contentTypeCategory"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/prohibitedSubstitutions"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/lexicalFinal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/block"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDComplexTypeDefinition/mixed"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/contentAnnotation"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/baseTypeDefinition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/content"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/contentType"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/attributeUses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/attributeContents"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/attributeWildcard"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/attributeWildcardContent"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/rootTypeDefinition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/syntheticParticle"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDComplexTypeDefinition/syntheticWildcard"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDComponent"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDConcreteComponent">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDConcreteComponent/element"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDConcreteComponent/container"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDConcreteComponent/rootContainer"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDConcreteComponent/schema"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDConcreteComponent/diagnostics"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDConstrainingFacet"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDDiagnostic">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/severity"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/message"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/locationURI"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/line"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/column"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/node"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/annotationURI"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/key"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDDiagnostic/substitutions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDDiagnostic/components"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDDiagnostic/primaryComponent"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDElementDeclaration">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/nillable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/disallowedSubstitutions"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/substitutionGroupExclusions"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/abstract"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/lexicalFinal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/block"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/elementDeclarationReference"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDElementDeclaration/circular"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/annotation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/anonymousTypeDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/typeDefinition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/identityConstraintDefinitions"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/resolvedElementDeclaration"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/substitutionGroupAffiliation"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDElementDeclaration/substitutionGroup"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDEnumerationFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDEnumerationFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFacet/lexicalValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFacet/facetName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFacet/effectiveValue"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDFacet/annotation"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDFacet/simpleTypeDefinition"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDFeature">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFeature/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFeature/constraint"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFeature/form"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFeature/lexicalValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFeature/global"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFeature/featureReference"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDFeature/scope"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDFeature/resolvedFeature"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDFeature/type"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDFixedFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFixedFacet/fixed"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDFractionDigitsFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDFractionDigitsFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDFundamentalFacet"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDIdentityConstraintDefinition">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDIdentityConstraintDefinition/identityConstraintCategory"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDIdentityConstraintDefinition/annotation"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDIdentityConstraintDefinition/referencedKey"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDIdentityConstraintDefinition/selector"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDIdentityConstraintDefinition/fields"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDImport">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDImport/namespace"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDImport/annotation"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDInclude">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDInclude/annotation"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDLengthFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDLengthFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDMaxExclusiveFacet"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDMaxFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMaxFacet/value"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMaxFacet/inclusive"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMaxFacet/exclusive"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDMaxInclusiveFacet"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDMaxLengthFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMaxLengthFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDMinExclusiveFacet"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDMinFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMinFacet/value"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMinFacet/inclusive"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMinFacet/exclusive"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDMinInclusiveFacet"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDMinLengthFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDMinLengthFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDModelGroup">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDModelGroup/compositor"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDModelGroup/annotation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDModelGroup/contents"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDModelGroup/particles"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDModelGroupDefinition">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDModelGroupDefinition/modelGroupDefinitionReference"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDModelGroupDefinition/annotation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDModelGroupDefinition/modelGroup"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDModelGroupDefinition/resolvedModelGroupDefinition"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDNamedComponent">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNamedComponent/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNamedComponent/targetNamespace"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNamedComponent/aliasName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNamedComponent/uRI"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNamedComponent/aliasURI"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNamedComponent/qName"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDNotationDeclaration">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNotationDeclaration/systemIdentifier"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNotationDeclaration/publicIdentifier"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDNotationDeclaration/annotation"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDNumericFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDNumericFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDOrderedFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDOrderedFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDParticle">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDParticle/minOccurs"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDParticle/maxOccurs"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDParticle/content"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDParticle/term"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDParticleContent"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDPatternFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDPatternFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDRedefinableComponent">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDRedefinableComponent/circular"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDRedefineContent"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDRedefine">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDRedefine/annotations"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDRedefine/contents"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDRepeatableFacet">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDRepeatableFacet/annotations"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDSchema">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/document"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/schemaLocation"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/targetNamespace"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/attributeFormDefault"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/elementFormDefault"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/finalDefault"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/blockDefault"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchema/version"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/contents"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/elementDeclarations"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/attributeDeclarations"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/attributeGroupDefinitions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/typeDefinitions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/modelGroupDefinitions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/identityConstraintDefinitions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/notationDeclarations"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/annotations"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/allDiagnostics"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/referencingDirectives"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/rootVersion"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/originalVersion"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/incorporatedVersions"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchema/schemaForSchema"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDSchemaCompositor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchemaCompositor/incorporatedSchema"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDSchemaContent"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDSchemaDirective">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSchemaDirective/schemaLocation"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSchemaDirective/resolvedSchema"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDScope"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDSimpleTypeDefinition">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSimpleTypeDefinition/variety"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSimpleTypeDefinition/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSimpleTypeDefinition/lexicalFinal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDSimpleTypeDefinition/validFacets"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/contents"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/facetContents"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/facets"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/memberTypeDefinitions"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/fundamentalFacets"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/baseTypeDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/primitiveTypeDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/itemTypeDefinition"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/rootTypeDefinition"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/minFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/maxFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/maxInclusiveFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/minInclusiveFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/minExclusiveFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/maxExclusiveFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/lengthFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/whiteSpaceFacet"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/enumerationFacets"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/patternFacets"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/cardinalityFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/numericFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/maxLengthFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/minLengthFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/totalDigitsFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/fractionDigitsFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/orderedFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/boundedFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveMaxFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveWhiteSpaceFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveMaxLengthFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveFractionDigitsFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectivePatternFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveEnumerationFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveTotalDigitsFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveMinLengthFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveLengthFacet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/effectiveMinFacet"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDSimpleTypeDefinition/syntheticFacets"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDTerm"/>
+ <genClasses ecoreClass="XSD.ecore#//XSDTotalDigitsFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDTotalDigitsFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDTypeDefinition">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/annotation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/derivationAnnotation"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/annotations"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/rootType"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/baseType"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/simpleType"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDTypeDefinition/complexType"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDWhiteSpaceFacet">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDWhiteSpaceFacet/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDWildcard">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDWildcard/namespaceConstraintCategory"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDWildcard/namespaceConstraint"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDWildcard/processContents"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDWildcard/lexicalNamespaceConstraint"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDWildcard/annotation"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference XSD.ecore#//XSDWildcard/annotations"/>
+ </genClasses>
+ <genClasses ecoreClass="XSD.ecore#//XSDXPathDefinition">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDXPathDefinition/variety"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XSD.ecore#//XSDXPathDefinition/value"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XSD.ecore#//XSDXPathDefinition/annotation"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.xsd/model/XSD.mdl b/plugins/org.eclipse.xsd/model/XSD.mdl
new file mode 100644
index 0000000..2736036
--- /dev/null
+++ b/plugins/org.eclipse.xsd/model/XSD.mdl
@@ -0,0 +1,258 @@
+
+(object Petal
+ version 42
+ _written "Rose 4.5.8163.3"
+ charSet 0)
+
+(object Design "Logical View"
+ is_unit TRUE
+ is_loaded TRUE
+ defaults (object defaults
+ rightMargin 0.250000
+ leftMargin 0.250000
+ topMargin 0.250000
+ bottomMargin 0.500000
+ pageOverlap 0.250000
+ clipIconLabels TRUE
+ autoResize TRUE
+ snapToGrid TRUE
+ gridX 16
+ gridY 16
+ defaultFont (object Font
+ size 10
+ face "Arial"
+ bold FALSE
+ italics FALSE
+ underline FALSE
+ strike FALSE
+ color 0
+ default_color TRUE)
+ showMessageNum 1
+ showClassOfObject TRUE
+ notation "Unified")
+ root_usecase_package (object Class_Category "Use Case View"
+ quid "374B18190016"
+ exportControl "Public"
+ global TRUE
+ logical_models (list unit_reference_list)
+ logical_presentations (list unit_reference_list
+ (object UseCaseDiagram "Main"
+ quid "374B1819002A"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ root_category (object Class_Category "Logical View"
+ quid "374B18190015"
+ exportControl "Public"
+ global TRUE
+ subsystem "Component View"
+ quidu "374B18190017"
+ logical_models (list unit_reference_list
+ (object Class_Category "xsd"
+ is_unit TRUE
+ is_loaded FALSE
+ file_name "$VABASE_PLUGINS_PATH\\org.eclipse.xsd\\model\\org.eclipse.XSD.cat"
+ quid "39ABDC6F01AA"))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "Main"
+ quid "39ADC9D803DD"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object CategoryView "Logical View::xsd" @1
+ location (320, 304)
+ label (object ItemLabel
+ Parent_View @1
+ location (176, 220)
+ fill_color 13434879
+ nlines 2
+ max_width 288
+ justify 0
+ label "xsd")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "39ABDC6F01AA"
+ width 300
+ height 180)
+ (object NoteView @2
+ location (320, 688)
+ label (object ItemLabel
+ Parent_View @2
+ location (176, 601)
+ fill_color 13434879
+ nlines 3
+ max_width 252
+ label
+|Concrete
+|Classes
+ )
+ line_color 3342489
+ fill_color 13434879
+ width 312
+ height 187)
+ (object NoteView @3
+ location (752, 688)
+ label (object ItemLabel
+ Parent_View @3
+ location (614, 597)
+ fill_color 13434879
+ nlines 3
+ max_width 240
+ label
+|Abstract
+|Classes
+ )
+ line_color 3342489
+ fill_color 16777088
+ width 300
+ height 194)
+ (object NoteView @4
+ location (1184, 688)
+ label (object ItemLabel
+ Parent_View @4
+ location (1037, 598)
+ fill_color 13434879
+ nlines 3
+ max_width 259
+ label "Enumerations")
+ line_color 3342489
+ fill_color 8432127
+ width 319
+ height 193)))))
+ root_subsystem (object SubSystem "Component View"
+ quid "374B18190017"
+ physical_models (list unit_reference_list)
+ physical_presentations (list unit_reference_list
+ (object Module_Diagram "Main"
+ quid "374B18190029"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ process_structure (object Processes
+ quid "374B18190018"
+ ProcsNDevs (list
+ (object Process_Diagram "Deployment View"
+ quid "374B1819001A"
+ title "Deployment View"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ properties (object Properties
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "default__Category"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "packageName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "classifierName"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "operationName"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "attributeName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isID"
+ value FALSE)))
+ (object Attribute
+ tool "Ecore"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "referenceName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value TRUE))))
+ quid "374B18190019"))
diff --git a/plugins/org.eclipse.xsd/model/org.eclipse.XSD.cat b/plugins/org.eclipse.xsd/model/org.eclipse.XSD.cat
new file mode 100644
index 0000000..695f9ff
--- /dev/null
+++ b/plugins/org.eclipse.xsd/model/org.eclipse.XSD.cat
@@ -0,0 +1,20299 @@
+
+(object Petal
+ version 42
+ _written "Rose 4.5.8163.3"
+ charSet 0)
+
+(object Class_Category "xsd"
+ is_unit TRUE
+ is_loaded TRUE
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "XSD")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "org.eclipse")
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "xsd")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "http://www.eclipse.org/xsd/2002/XSD"))
+ quid "39ABDC6F01AA"
+ exportControl "Public"
+ logical_models (list unit_reference_list
+ (object Class "XSDAnnotation"
+ quid "3B66EDC80233"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B69E1770116"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029")
+ (object Inheritance_Relationship
+ quid "3B7FD4E20366"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDRedefineContent"
+ quidu "3B6AE2060172"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "applicationInformation"
+ quid "3BBF7EBF02C8"
+ stereotype "0..*"
+ type "DOMElement"
+ exportControl "Public")
+ (object ClassAttribute "userInformation"
+ quid "3BBF7EEA0157"
+ stereotype "0..*"
+ type "DOMElement"
+ exportControl "Public")
+ (object ClassAttribute "attributes"
+ quid "3BBF7F0501E2"
+ stereotype "0..*"
+ type "DOMAttr"
+ exportControl "Public")))
+ (object Class "XSDAttributeDeclaration"
+ quid "3B66ED2E0192"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B69B7DC0193"
+ supplier "Logical View::xsd::XSDFeature"
+ quidu "3B69B537026C")
+ (object Inheritance_Relationship
+ quid "3B688E6103BE"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDSchemaContent"
+ quidu "3B688CB800BA"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "attributeDeclarationReference"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C287F5202B4"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDAttributeGroupContent"
+ quid "3B6940200089"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B72D8E200EA"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"))
+ abstract TRUE)
+ (object Class "XSDAttributeGroupDefinition"
+ quid "3B66ED840290"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B69403A0221"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDAttributeGroupContent"
+ quidu "3B6940200089")
+ (object Inheritance_Relationship
+ quid "3B6AE2EB02A8"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDRedefineContent"
+ quidu "3B6AE2060172")
+ (object Inheritance_Relationship
+ quid "3B7FCAC800D2"
+ supplier "Logical View::xsd::XSDRedefinableComponent"
+ quidu "3B7FCA8B020B"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "attributeGroupDefinitionReference"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C287F7B0386"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDAttributeUse"
+ quid "3B68354601A8"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B72D737038F"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDAttributeGroupContent"
+ quidu "3B6940200089")
+ (object Inheritance_Relationship
+ quid "3B72D7BB0349"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "required"
+ quid "3B69CCF3027D"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "value"
+ quid "3B69CDDB03B7"
+ type "Value"
+ exportControl "Public")
+ (object ClassAttribute "constraint"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69CDE002D8"
+ type "XSDConstraint"
+ exportControl "Public")
+ (object ClassAttribute "use"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA7B0220382"
+ type "XSDAttributeUseCategory"
+ exportControl "Public")
+ (object ClassAttribute "lexicalValue"
+ quid "3C2719D90341"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDBoundedFacet"
+ quid "3B6C751D0344"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C763C0224"
+ supplier "Logical View::xsd::XSDFundamentalFacet"
+ quidu "3B6C69E801D6"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C752A00CC"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDCardinalityFacet"
+ quid "3B6C755D03D2"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C764F0131"
+ supplier "Logical View::xsd::XSDFundamentalFacet"
+ quidu "3B6C69E801D6"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C756C0153"
+ type "XSDCardinality"
+ exportControl "Public")))
+ (object Class "XSDComplexTypeContent"
+ quid "3B683BA00196"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6848B80286"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029"))
+ abstract TRUE)
+ (object Class "XSDComplexTypeDefinition"
+ quid "3B682B82031A"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B69BAA20310"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDScope"
+ quidu "3B69B54000F2")
+ (object Inheritance_Relationship
+ quid "3BA0D01901F1"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "derivationMethod"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69C6E4020E"
+ type "XSDDerivationMethod"
+ initv "restriction"
+ exportControl "Public")
+ (object ClassAttribute "final"
+ quid "3B69C71D026A"
+ stereotype "0..*"
+ type "XSDComplexFinal"
+ exportControl "Public")
+ (object ClassAttribute "abstract"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69C73800C5"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "contentTypeCategory"
+ quid "3B69CA4202B8"
+ type "XSDContentTypeCategory"
+ exportControl "Public")
+ (object ClassAttribute "prohibitedSubstitutions"
+ quid "3B69CB8A03E6"
+ stereotype "0..*"
+ type "XSDProhibitedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "lexicalFinal"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0F618014D"
+ stereotype "0..*"
+ type "XSDComplexFinal"
+ exportControl "Public")
+ (object ClassAttribute "block"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0FB97006E"
+ stereotype "0..*"
+ type "XSDProhibitedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "mixed"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3C31AF5E03A6"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDComponent"
+ quid "3B6846E90029"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3BA0CEA903D2"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"))
+ abstract TRUE)
+ (object Class "XSDConcreteComponent"
+ quid "3B6AD7B40065"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "element"
+ quid "3B6ADDB501A5"
+ type "DOMElement"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDConstrainingFacet"
+ quid "3B6C6B340093"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C6C800394"
+ supplier "Logical View::xsd::XSDFacet"
+ quidu "3B6C359403D2"))
+ abstract TRUE)
+ (object Class "XSDDiagnostic"
+ quid "3BFE5F910046"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3D4C0F4C01A1"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "severity"
+ quid "3BFE691C005D"
+ type "XSDDiagnosticSeverity"
+ exportControl "Public")
+ (object ClassAttribute "message"
+ quid "3BFE5FDD0280"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "locationURI"
+ quid "3C063743016B"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "line"
+ quid "3BFE607E0213"
+ type "int"
+ initv "1"
+ exportControl "Public")
+ (object ClassAttribute "column"
+ quid "3BFE611E0296"
+ type "int"
+ initv "1"
+ exportControl "Public")
+ (object ClassAttribute "node"
+ quid "3C016B6B0200"
+ type "DOMNode"
+ exportControl "Public")
+ (object ClassAttribute "annotationURI"
+ quid "3C06374F0186"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "key"
+ quid "442C42AC01AC"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "substitutions"
+ quid "442C42D401E4"
+ stereotype "0..*"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDElementDeclaration"
+ quid "3B66ED580214"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B69EDEE01BF"
+ supplier "Logical View::xsd::XSDFeature"
+ quidu "3B69B537026C")
+ (object Inheritance_Relationship
+ quid "3B685F17002E"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDTerm"
+ quidu "3B683C5E0174")
+ (object Inheritance_Relationship
+ quid "3B688E660339"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDSchemaContent"
+ quidu "3B688CB800BA"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "nillable"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69BFB4029F"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "disallowedSubstitutions"
+ quid "3B69C4680368"
+ stereotype "0..*"
+ type "XSDDisallowedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "substitutionGroupExclusions"
+ quid "3B69C4A003B9"
+ stereotype "0..*"
+ type "XSDSubstitutionGroupExclusions"
+ exportControl "Public")
+ (object ClassAttribute "abstract"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69C4E0000E"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "lexicalFinal"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0D14C00B2"
+ stereotype "0..*"
+ type "XSDProhibitedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "block"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0D16801C1"
+ stereotype "0..*"
+ type "XSDDisallowedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "elementDeclarationReference"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C289F6203CF"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "circular"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C34DCB00018"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDEnumerationFacet"
+ quid "3B6C6ACE0141"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C6C9D03C7"
+ supplier "Logical View::xsd::XSDRepeatableFacet"
+ quidu "3B6C6AA6031A"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C7C640054"
+ stereotype "0..*"
+ type "Value"
+ exportControl "Public")))
+ (object Class "XSDFacet"
+ quid "3B6C359403D2"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6D25680259"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "lexicalValue"
+ quid "3B6C73740253"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "facetName"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C289FB401EC"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "effectiveValue"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28AAE303B6"
+ type "Value"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDFeature"
+ quid "3B69B537026C"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3C290A2C0307"
+ supplier "Logical View::xsd::XSDNamedComponent"
+ quidu "3B6846D303A4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B69BF81020F"
+ type "Value"
+ exportControl "Public")
+ (object ClassAttribute "constraint"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69BF8800C5"
+ type "XSDConstraint"
+ exportControl "Public")
+ (object ClassAttribute "form"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B9F902B033E"
+ type "XSDForm"
+ exportControl "Public")
+ (object ClassAttribute "lexicalValue"
+ quid "3C271A1B016F"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "global"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A0070372"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "featureReference"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A0440185"
+ type "boolean"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDFixedFacet"
+ quid "3B6C699E00C1"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C6C8801B4"
+ supplier "Logical View::xsd::XSDConstrainingFacet"
+ quidu "3B6C6B340093"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "fixed"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B6C6A600201"
+ type "boolean"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDFractionDigitsFacet"
+ quid "3B6C79BE02EE"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B990016"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C79D2008A"
+ type "int"
+ exportControl "Public")))
+ (object Class "XSDFundamentalFacet"
+ quid "3B6C69E801D6"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C6C7B0396"
+ supplier "Logical View::xsd::XSDFacet"
+ quidu "3B6C359403D2"))
+ abstract TRUE)
+ (object Class "XSDIdentityConstraintDefinition"
+ quid "3B682B2603A2"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B684AA30242"
+ supplier "Logical View::xsd::XSDNamedComponent"
+ quidu "3B6846D303A4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "identityConstraintCategory"
+ quid "3B69D1C70143"
+ type "XSDIdentityConstraintCategory"
+ exportControl "Public")))
+ (object Class "XSDImport"
+ quid "3B688C93017F"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AD8D9003E"
+ supplier "Logical View::xsd::XSDSchemaDirective"
+ quidu "3B6AD8A202A2"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "namespace"
+ quid "3B6ADB15036C"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDInclude"
+ quid "3B688C7D0250"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AD8DC0381"
+ supplier "Logical View::xsd::XSDSchemaCompositor"
+ quidu "3C21DB4102AE")))
+ (object Class "XSDLengthFacet"
+ quid "3B6C776200E7"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C778002DF"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C776C004B"
+ type "int"
+ exportControl "Public")))
+ (object Class "XSDMaxExclusiveFacet"
+ quid "3B6C789600C2"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B8E0309"
+ supplier "Logical View::xsd::XSDMaxFacet"
+ quidu "3C0A1CEB010E")))
+ (object Class "XSDMaxFacet"
+ quid "3C0A1CEB010E"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3C0A1D3103AD"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3C0A1EE201F7"
+ type "Value"
+ exportControl "Public")
+ (object ClassAttribute "inclusive"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A174027D"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "exclusive"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A1930354"
+ type "boolean"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDMaxInclusiveFacet"
+ quid "3B6C787D00DA"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B8303B8"
+ supplier "Logical View::xsd::XSDMaxFacet"
+ quidu "3C0A1CEB010E")))
+ (object Class "XSDMaxLengthFacet"
+ quid "3B6C77C70146"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B7D00FC"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C77DA00F3"
+ type "int"
+ exportControl "Public")))
+ (object Class "XSDMinExclusiveFacet"
+ quid "3B6C792D000A"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B590281"
+ supplier "Logical View::xsd::XSDMinFacet"
+ quidu "3C0A1CDE037C")))
+ (object Class "XSDMinFacet"
+ quid "3C0A1CDE037C"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3C0A1D240098"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3C0A1ED10398"
+ type "Value"
+ exportControl "Public")
+ (object ClassAttribute "inclusive"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A1A2008E"
+ type "boolean"
+ exportControl "Public")
+ (object ClassAttribute "exclusive"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A1BE03E2"
+ type "boolean"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDMinInclusiveFacet"
+ quid "3B6C788702C9"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B520353"
+ supplier "Logical View::xsd::XSDMinFacet"
+ quidu "3C0A1CDE037C")))
+ (object Class "XSDMinLengthFacet"
+ quid "3B6C778C0065"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C77C400C0"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C7799015E"
+ type "int"
+ exportControl "Public")))
+ (object Class "XSDModelGroup"
+ quid "3B6834E00291"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B684A640279"
+ supplier "Logical View::xsd::XSDTerm"
+ quidu "3B683C5E0174"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "compositor"
+ quid "3B69CF1D01CF"
+ type "XSDCompositor"
+ exportControl "Public")))
+ (object Class "XSDModelGroupDefinition"
+ quid "3B66ED9A0205"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AE2E20381"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDRedefineContent"
+ quidu "3B6AE2060172")
+ (object Inheritance_Relationship
+ quid "3B6BD2550385"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDParticleContent"
+ quidu "3B6BD22300C6")
+ (object Inheritance_Relationship
+ quid "3B7FCAC40090"
+ supplier "Logical View::xsd::XSDRedefinableComponent"
+ quidu "3B7FCA8B020B"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "modelGroupDefinitionReference"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A1F602E8"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDNamedComponent"
+ quid "3B6846D303A4"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3BA0CEA20197"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "name"
+ quid "3B6847000142"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "targetNamespace"
+ quid "3B684704031E"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "aliasName"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A57F0127"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "uRI"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A58700E2"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "aliasURI"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A5AA02AF"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "qName"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C290963025E"
+ type "String"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDNotationDeclaration"
+ quid "3B66EDAA021C"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B68494302F1"
+ supplier "Logical View::xsd::XSDNamedComponent"
+ quidu "3B6846D303A4")
+ (object Inheritance_Relationship
+ quid "3B688E4F023C"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDSchemaContent"
+ quidu "3B688CB800BA"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "systemIdentifier"
+ quid "3B69D32E00F0"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "publicIdentifier"
+ quid "3B69D3340397"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDNumericFacet"
+ quid "3B6C75950206"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C76420074"
+ supplier "Logical View::xsd::XSDFundamentalFacet"
+ quidu "3B6C69E801D6"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C75A30012"
+ type "boolean"
+ exportControl "Public")))
+ (object Class "XSDOrderedFacet"
+ quid "3B6C74DD0248"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7659012C"
+ supplier "Logical View::xsd::XSDFundamentalFacet"
+ quidu "3B6C69E801D6"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C74F602DA"
+ type "XSDOrdered"
+ exportControl "Public")))
+ (object Class "XSDParticle"
+ quid "3B682BBD01F7"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6848FC01E7"
+ supplier "Logical View::xsd::XSDComplexTypeContent"
+ quidu "3B683BA00196"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "minOccurs"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69CF8E03B2"
+ type "int"
+ initv "1"
+ exportControl "Public")
+ (object ClassAttribute "maxOccurs"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69CF9903AE"
+ type "int"
+ initv "1"
+ exportControl "Public")))
+ (object Class "XSDParticleContent"
+ quid "3B6BD22300C6"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B780BD90059"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"))
+ abstract TRUE)
+ (object Class "XSDPatternFacet"
+ quid "3B6C6ADB026C"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C6CA5038D"
+ supplier "Logical View::xsd::XSDRepeatableFacet"
+ quidu "3B6C6AA6031A"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C7C790311"
+ stereotype "0..*"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDRedefinableComponent"
+ quid "3B7FCA8B020B"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B7FD4BA023C"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDRedefineContent"
+ quidu "3B6AE2060172")
+ (object Inheritance_Relationship
+ quid "3C290A26036D"
+ supplier "Logical View::xsd::XSDNamedComponent"
+ quidu "3B6846D303A4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "circular"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "3C28A6800216"
+ type "boolean"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDRedefineContent"
+ quid "3B6AE2060172"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AE2B301D5"
+ supplier "Logical View::xsd::XSDSchemaContent"
+ quidu "3B688CB800BA"))
+ abstract TRUE)
+ (object Class "XSDRedefine"
+ quid "3B688C9B02AD"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3C21DB640240"
+ supplier "Logical View::xsd::XSDSchemaCompositor"
+ quidu "3C21DB4102AE")))
+ (object Class "XSDRepeatableFacet"
+ quid "3B6C6AA6031A"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C6C8F002E"
+ supplier "Logical View::xsd::XSDConstrainingFacet"
+ quidu "3B6C6B340093"))
+ abstract TRUE)
+ (object Class "XSDSchema"
+ quid "374B182500BB"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B7FCC4A0182"
+ supplier "Logical View::xsd::XSDScope"
+ quidu "3B69B54000F2"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "document"
+ quid "3C2784E503DD"
+ type "DOMDocument"
+ exportControl "Public")
+ (object ClassAttribute "schemaLocation"
+ quid "3B6868EC0226"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "targetNamespace"
+ quid "3B9F9BFF0180"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "attributeFormDefault"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B9F904B0102"
+ type "XSDForm"
+ initv "unqualified"
+ exportControl "Public")
+ (object ClassAttribute "elementFormDefault"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B9F907800AC"
+ type "XSDForm"
+ initv "unqualified"
+ exportControl "Public")
+ (object ClassAttribute "finalDefault"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0C4A70038"
+ stereotype "0..*"
+ type "XSDProhibitedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "blockDefault"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0F59D02D8"
+ stereotype "0..*"
+ type "XSDDisallowedSubstitutions"
+ exportControl "Public")
+ (object ClassAttribute "version"
+ quid "3D22D6D80356"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDSchemaCompositor"
+ quid "3C21DB4102AE"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3C21DB560092"
+ supplier "Logical View::xsd::XSDSchemaDirective"
+ quidu "3B6AD8A202A2"))
+ abstract TRUE)
+ (object Class "XSDSchemaContent"
+ quid "3B688CB800BA"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AD8E60372"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"))
+ abstract TRUE)
+ (object Class "XSDSchemaDirective"
+ quid "3B6AD8A202A2"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AE32102AF"
+ supplier "Logical View::xsd::XSDSchemaContent"
+ quidu "3B688CB800BA"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "schemaLocation"
+ quid "3B6AD9B30330"
+ type "String"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "XSDScope"
+ quid "3B69B54000F2"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B7FCD640231"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029"))
+ abstract TRUE)
+ (object Class "XSDSimpleTypeDefinition"
+ quid "3B682BA7005D"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B684A1302A2"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9")
+ (object Inheritance_Relationship
+ quid "3B685F55032B"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDComplexTypeContent"
+ quidu "3B683BA00196"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "variety"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B6C315800A9"
+ type "XSDVariety"
+ exportControl "Public")
+ (object ClassAttribute "final"
+ quid "3B6D544F0146"
+ stereotype "0..*"
+ type "XSDSimpleFinal"
+ exportControl "Public")
+ (object ClassAttribute "lexicalFinal"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA0F65E035A"
+ stereotype "0..*"
+ type "XSDSimpleFinal"
+ exportControl "Public")
+ (object ClassAttribute "validFacets"
+ quid "3C28AB0F00B6"
+ stereotype "0..*"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDTerm"
+ quid "3B683C5E0174"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6848AA01D3"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029")
+ (object Inheritance_Relationship
+ quid "3B6BD2440069"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDParticleContent"
+ quidu "3B6BD22300C6"))
+ abstract TRUE)
+ (object Class "XSDTotalDigitsFacet"
+ quid "3B6C79A0020E"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C7B610337"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C79AB0232"
+ type "int"
+ exportControl "Public")))
+ (object Class "XSDTypeDefinition"
+ quid "3B66ECD302A9"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6AE2F5013A"
+ stereotype "mixin"
+ supplier "Logical View::xsd::XSDRedefineContent"
+ quidu "3B6AE2060172")
+ (object Inheritance_Relationship
+ quid "3B7FCAB1004D"
+ supplier "Logical View::xsd::XSDRedefinableComponent"
+ quidu "3B7FCA8B020B"))
+ abstract TRUE)
+ (object Class "XSDWhiteSpaceFacet"
+ quid "3B6C784601B7"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6C78620045"
+ supplier "Logical View::xsd::XSDFixedFacet"
+ quidu "3B6C699E00C1"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "3B6C78500201"
+ type "XSDWhiteSpace"
+ exportControl "Public")))
+ (object Class "XSDWildcard"
+ quid "3B6838370031"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B684A3A0041"
+ supplier "Logical View::xsd::XSDTerm"
+ quidu "3B683C5E0174"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "namespaceConstraintCategory"
+ quid "3B69D0E9019E"
+ type "XSDNamespaceConstraintCategory"
+ exportControl "Public")
+ (object ClassAttribute "namespaceConstraint"
+ quid "3B97CF860223"
+ stereotype "0..*"
+ type "String"
+ exportControl "Public")
+ (object ClassAttribute "processContents"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3B69D12E01E4"
+ type "XSDProcessContents"
+ exportControl "Public")
+ (object ClassAttribute "lexicalNamespaceConstraint"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value TRUE))
+ quid "3BA7BDB701F9"
+ stereotype "0..*"
+ type "String"
+ exportControl "Public")))
+ (object Class "XSDXPathDefinition"
+ quid "3B6D83BB0355"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "3B6D84F70092"
+ supplier "Logical View::xsd::XSDComponent"
+ quidu "3B6846E90029"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "variety"
+ quid "3B6D901503DE"
+ type "XSDXPathVariety"
+ exportControl "Public")
+ (object ClassAttribute "value"
+ quid "3B7BBBE101B1"
+ type "String"
+ exportControl "Public")))
+ (object Class "DOMAttr"
+ quid "3BBF8C8901B6"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "org.w3c.dom.Attr"
+ quid "3BBF8CB000D5"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DOMDocument"
+ quid "3C27850E0381"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "org.w3c.dom.Document"
+ quid "3C27851B03C6"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DOMElement"
+ quid "3B8189790200"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "org.w3c.dom.Element"
+ quid "3B8189DB0374"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DOMNode"
+ quid "3BFE64A50117"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "org.w3c.dom.Node"
+ quid "3BFE65BF002D"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "Value"
+ quid "3C040B5B031F"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "java.lang.Object"
+ quid "3C040B8D03D5"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "XSDAttributeUseCategory"
+ quid "3BA7B0E801A8"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "optional"
+ quid "3BA7B11502B7"
+ exportControl "Public")
+ (object ClassAttribute "prohibited"
+ quid "3BA7B12202D3"
+ exportControl "Public")
+ (object ClassAttribute "required"
+ quid "3BA7B12902F0"
+ exportControl "Public")))
+ (object Class "XSDCardinality"
+ quid "3BC7715D009B"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "finite"
+ quid "3BC771DC02ED"
+ exportControl "Public")
+ (object ClassAttribute "countablyInfinite"
+ quid "3BC771EC0141"
+ exportControl "Public")))
+ (object Class "XSDComplexFinal"
+ quid "3B97C2CA01CB"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "extension"
+ quid "3B97C2E700DA"
+ exportControl "Public")
+ (object ClassAttribute "restriction"
+ quid "3B97C2EA016A"
+ exportControl "Public")
+ (object ClassAttribute "all"
+ quid "3BA0F6D20112"
+ exportControl "Public")))
+ (object Class "XSDCompositor"
+ quid "3B869B620037"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "all"
+ quid "3B869BD00003"
+ exportControl "Public")
+ (object ClassAttribute "choice"
+ quid "3B869CB8011E"
+ exportControl "Public")
+ (object ClassAttribute "sequence"
+ quid "3B869CE50057"
+ exportControl "Public")))
+ (object Class "XSDConstraint"
+ quid "3B869E2601AE"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "default"
+ quid "3B869E8E0258"
+ exportControl "Public")
+ (object ClassAttribute "fixed"
+ quid "3B869E990271"
+ exportControl "Public")))
+ (object Class "XSDContentTypeCategory"
+ quid "3B86A79F03A2"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "empty"
+ quid "3B86A7CD02F0"
+ exportControl "Public")
+ (object ClassAttribute "simple"
+ quid "3B86A7D100CE"
+ exportControl "Public")
+ (object ClassAttribute "mixed"
+ quid "3B86A7D301B7"
+ exportControl "Public")
+ (object ClassAttribute "elementOnly"
+ quid "3B86A7D702E9"
+ exportControl "Public")))
+ (object Class "XSDDerivationMethod"
+ quid "3B86A0B000CE"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "extension"
+ quid "3B86A0C80329"
+ exportControl "Public")
+ (object ClassAttribute "restriction"
+ quid "3B86A0CC0162"
+ exportControl "Public")))
+ (object Class "XSDDiagnosticSeverity"
+ quid "3BFE68A7032F"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "fatal"
+ quid "3BFE68C303D0"
+ exportControl "Public")
+ (object ClassAttribute "error"
+ quid "3BFE68E700E3"
+ exportControl "Public")
+ (object ClassAttribute "warning"
+ quid "3BFE68EA01FF"
+ exportControl "Public")
+ (object ClassAttribute "information"
+ quid "3BFE7FC2019A"
+ exportControl "Public")))
+ (object Class "XSDDisallowedSubstitutions"
+ quid "3B97C5A403DF"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "substitution"
+ quid "3B97C6790045"
+ exportControl "Public")
+ (object ClassAttribute "extension"
+ quid "3B97C67F01AC"
+ exportControl "Public")
+ (object ClassAttribute "restriction"
+ quid "3B97C683020B"
+ exportControl "Public")
+ (object ClassAttribute "all"
+ quid "3BA0F2450069"
+ exportControl "Public")))
+ (object Class "XSDForm"
+ quid "3B9F913B01EB"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "qualified"
+ quid "3B9F916F0023"
+ exportControl "Public")
+ (object ClassAttribute "unqualified"
+ quid "3B9F918C007F"
+ exportControl "Public")))
+ (object Class "XSDIdentityConstraintCategory"
+ quid "3B86A1E00272"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "key"
+ quid "3B86A2120085"
+ exportControl "Public")
+ (object ClassAttribute "keyref"
+ quid "3B86A213014F"
+ exportControl "Public")
+ (object ClassAttribute "unique"
+ quid "3B86A2160365"
+ exportControl "Public")))
+ (object Class "XSDNamespaceConstraintCategory"
+ quid "3B97C5EA0023"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "any"
+ quid "3B97D0600034"
+ exportControl "Public")
+ (object ClassAttribute "not"
+ quid "3B97D062005F"
+ exportControl "Public")
+ (object ClassAttribute "set"
+ quid "3B97D0650117"
+ exportControl "Public")))
+ (object Class "XSDOrdered"
+ quid "3BC7715202E4"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "false"
+ quid "3BC771A90271"
+ exportControl "Public")
+ (object ClassAttribute "partial"
+ quid "3BC771BB01FF"
+ exportControl "Public")
+ (object ClassAttribute "total"
+ quid "3BC771C401B2"
+ exportControl "Public")))
+ (object Class "XSDProcessContents"
+ quid "3B8FF8C70284"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "strict"
+ quid "3B8FF8F80045"
+ exportControl "Public")
+ (object ClassAttribute "lax"
+ quid "3B8FF8F6038B"
+ exportControl "Public")
+ (object ClassAttribute "skip"
+ quid "3B8FF8E802BA"
+ exportControl "Public")))
+ (object Class "XSDProhibitedSubstitutions"
+ quid "3B97C5BE0272"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "extension"
+ quid "3B97C68B00B8"
+ exportControl "Public")
+ (object ClassAttribute "restriction"
+ quid "3B97C6940291"
+ exportControl "Public")
+ (object ClassAttribute "all"
+ quid "3BA0F2500295"
+ exportControl "Public")))
+ (object Class "XSDSimpleFinal"
+ quid "3B97C25D0295"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "list"
+ quid "3B97C2810230"
+ exportControl "Public")
+ (object ClassAttribute "restriction"
+ quid "3B97C2830138"
+ exportControl "Public")
+ (object ClassAttribute "union"
+ quid "3B97C288024E"
+ exportControl "Public")
+ (object ClassAttribute "all"
+ quid "3BA0F6E00374"
+ exportControl "Public")))
+ (object Class "XSDSubstitutionGroupExclusions"
+ quid "3B97C59100AE"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "extension"
+ quid "3B97C6640231"
+ exportControl "Public")
+ (object ClassAttribute "restriction"
+ quid "3B97C66D0216"
+ exportControl "Public")))
+ (object Class "XSDVariety"
+ quid "3B8FF7730249"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "atomic"
+ quid "3B8FF7A702DF"
+ exportControl "Public")
+ (object ClassAttribute "list"
+ quid "3B8FF7AD0139"
+ exportControl "Public")
+ (object ClassAttribute "union"
+ quid "3B8FF7AF039F"
+ exportControl "Public")))
+ (object Class "XSDWhiteSpace"
+ quid "3BEED0F60342"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "preserve"
+ quid "3BEED10F0117"
+ exportControl "Public")
+ (object ClassAttribute "replace"
+ quid "3BEED127034D"
+ exportControl "Public")
+ (object ClassAttribute "collapse"
+ quid "3BEED1290396"
+ exportControl "Public")))
+ (object Class "XSDXPathVariety"
+ quid "3B8FFB89033A"
+ stereotype "enumeration"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "selector"
+ quid "3B8FFBAC0192"
+ exportControl "Public")
+ (object ClassAttribute "field"
+ quid "3B8FFBB30278"
+ exportControl "Public")))
+ (object Association "$UNNAMED$0"
+ quid "3C626EA70102"
+ roles (list role_list
+ (object Role "$UNNAMED$1"
+ quid "3C626EA90191"
+ supplier "Logical View::xsd::XSDRepeatableFacet"
+ quidu "3B6C6AA6031A"
+ is_aggregate TRUE)
+ (object Role "annotations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C626EA90192"
+ label "annotations"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$2"
+ quid "3B69DADC02F5"
+ roles (list role_list
+ (object Role "$UNNAMED$3"
+ quid "3B69DADD0238"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DADD0242"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$4"
+ quid "3B6890D6006F"
+ roles (list role_list
+ (object Role "$UNNAMED$5"
+ quid "3B6890D6030E"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ is_aggregate TRUE)
+ (object Role "anonymousTypeDefinition"
+ quid "3B6890D60318"
+ label "anonymousTypeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$6"
+ quid "3B68356B02CB"
+ roles (list role_list
+ (object Role "$UNNAMED$7"
+ quid "3B68356D00A6"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ is_aggregate TRUE)
+ (object Role "typeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B68356D00A7"
+ label "typeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "1")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$8"
+ quid "3B6B426B0194"
+ roles (list role_list
+ (object Role "$UNNAMED$9"
+ quid "3B6B426D0309"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ is_aggregate TRUE)
+ (object Role "resolvedAttributeDeclaration"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6B426D0313"
+ label "resolvedAttributeDeclaration"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$10"
+ quid "3B69DB060291"
+ roles (list role_list
+ (object Role "$UNNAMED$11"
+ quid "3B69DB070171"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB070172"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$12"
+ quid "3B69404E0067"
+ roles (list role_list
+ (object Role "$UNNAMED$13"
+ quid "3B694050029B"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "contents"
+ quid "3B69405002A5"
+ label "contents"
+ supplier "Logical View::xsd::XSDAttributeGroupContent"
+ quidu "3B6940200089"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$14"
+ quid "3B68359F0086"
+ roles (list role_list
+ (object Role "$UNNAMED$15"
+ quid "3B6835A00069"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "attributeUses"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6835A0006A"
+ label "attributeUses"
+ supplier "Logical View::xsd::XSDAttributeUse"
+ quidu "3B68354601A8"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$16"
+ quid "3C275D320220"
+ roles (list role_list
+ (object Role "$UNNAMED$17"
+ quid "3C275D3C010C"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "attributeWildcardContent"
+ quid "3C275D3C010D"
+ label "attributeWildcardContent"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$18"
+ quid "3B6887BF0150"
+ roles (list role_list
+ (object Role "$UNNAMED$19"
+ quid "3B6887C000A7"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "attributeWildcard"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6887C000A8"
+ label "attributeWildcard"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$20"
+ quid "3B6B425E01F9"
+ roles (list role_list
+ (object Role "$UNNAMED$21"
+ quid "3B6B42620046"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "resolvedAttributeGroupDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6B42620050"
+ label "resolvedAttributeGroupDefinition"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$22"
+ quid "3B683585010D"
+ roles (list role_list
+ (object Role "$UNNAMED$23"
+ quid "3B68358600FA"
+ supplier "Logical View::xsd::XSDAttributeUse"
+ quidu "3B68354601A8"
+ is_aggregate TRUE)
+ (object Role "attributeDeclaration"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B68358600FB"
+ label "attributeDeclaration"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ client_cardinality (value cardinality "1")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$24"
+ quid "3B6F1DE9018A"
+ roles (list role_list
+ (object Role "$UNNAMED$25"
+ quid "3B6F1DEA036C"
+ supplier "Logical View::xsd::XSDAttributeUse"
+ quidu "3B68354601A8"
+ is_aggregate TRUE)
+ (object Role "content"
+ quid "3B6F1DEA0380"
+ label "content"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ client_cardinality (value cardinality "1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$26"
+ quid "3B90068801C2"
+ roles (list role_list
+ (object Role "$UNNAMED$27"
+ quid "3B90068A0111"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "contentAnnotation"
+ quid "3B90068A011B"
+ label "contentAnnotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$28"
+ quid "3B6833350340"
+ roles (list role_list
+ (object Role "$UNNAMED$29"
+ quid "3B683336028D"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "baseTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B683336028E"
+ label "baseTypeDefinition"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "1")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$30"
+ quid "3B6FDDD70113"
+ roles (list role_list
+ (object Role "$UNNAMED$31"
+ quid "3B6FDDDA026B"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "content"
+ quid "3B6FDDDA0275"
+ label "content"
+ supplier "Logical View::xsd::XSDComplexTypeContent"
+ quidu "3B683BA00196"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$32"
+ quid "3B6837DF024F"
+ roles (list role_list
+ (object Role "$UNNAMED$33"
+ quid "3B6837E100FD"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "contentType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6837E100FE"
+ label "contentType"
+ supplier "Logical View::xsd::XSDComplexTypeContent"
+ quidu "3B683BA00196"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$34"
+ quid "3B683959006E"
+ roles (list role_list
+ (object Role "$UNNAMED$35"
+ quid "3B6839590349"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "attributeUses"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B683959034A"
+ label "attributeUses"
+ supplier "Logical View::xsd::XSDAttributeUse"
+ quidu "3B68354601A8"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$36"
+ quid "3B698E360386"
+ roles (list role_list
+ (object Role "$UNNAMED$37"
+ quid "3B698E380072"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "attributeContents"
+ quid "3B698E38007C"
+ label "attributeContents"
+ supplier "Logical View::xsd::XSDAttributeGroupContent"
+ quidu "3B6940200089"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$38"
+ quid "3B6851BA0126"
+ roles (list role_list
+ (object Role "$UNNAMED$39"
+ quid "3B6851BB0150"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "attributeWildcard"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6851BB0151"
+ label "attributeWildcard"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$40"
+ quid "3B751B0803C7"
+ roles (list role_list
+ (object Role "container"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3B751B0C01CE"
+ label "container"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$41"
+ attributes (list Attribute_Set)
+ quid "3B751B0C01CF"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065")))
+ (object Association "$UNNAMED$42"
+ quid "3B751B480261"
+ roles (list role_list
+ (object Role "rootContainer"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3B751B4C0285"
+ label "rootContainer"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$43"
+ attributes (list Attribute_Set)
+ quid "3B751B4C0286"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065")))
+ (object Association "$UNNAMED$44"
+ quid "3B751C310356"
+ roles (list role_list
+ (object Role "$UNNAMED$45"
+ attributes (list Attribute_Set)
+ quid "3B751C330331"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065")
+ (object Role "schema"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3B751C33033B"
+ label "schema"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$46"
+ quid "3B69DB0A0066"
+ roles (list role_list
+ (object Role "$UNNAMED$47"
+ quid "3B69DB0B023F"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB0B0249"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$48"
+ quid "3B68911401AF"
+ roles (list role_list
+ (object Role "$UNNAMED$49"
+ quid "3B6891150016"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ is_aggregate TRUE)
+ (object Role "anonymousTypeDefinition"
+ quid "3B6891150017"
+ label "anonymousTypeDefinition"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$50"
+ quid "3B68338C0058"
+ roles (list role_list
+ (object Role "$UNNAMED$51"
+ quid "3B68338C03BF"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ is_aggregate TRUE)
+ (object Role "typeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B68338C03C0"
+ label "typeDefinition"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "1")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$52"
+ quid "3B6833EF0160"
+ roles (list role_list
+ (object Role "$UNNAMED$53"
+ quid "3B6833F00298"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ is_aggregate TRUE)
+ (object Role "identityConstraintDefinitions"
+ quid "3B6833F00299"
+ label "identityConstraintDefinitions"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$54"
+ quid "3B6B41E60251"
+ roles (list role_list
+ (object Role "$UNNAMED$55"
+ quid "3B6B41EA02F7"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ is_aggregate TRUE)
+ (object Role "resolvedElementDeclaration"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6B41EA030B"
+ label "resolvedElementDeclaration"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$56"
+ quid "3B69C0590198"
+ roles (list role_list
+ (object Role "$UNNAMED$57"
+ quid "3B69C05D01E3"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214")
+ (object Role "substitutionGroupAffiliation"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B69C05D01ED"
+ label "substitutionGroupAffiliation"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$58"
+ quid "3C42DBDD0297"
+ roles (list role_list
+ (object Role "$UNNAMED$59"
+ quid "3C42DBE0011E"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ is_aggregate TRUE)
+ (object Role "substitutionGroup"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C42DBE00128"
+ label "substitutionGroup"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$60"
+ quid "3B6D23B901CD"
+ roles (list role_list
+ (object Role "$UNNAMED$61"
+ quid "3B6D23BA01C4"
+ supplier "Logical View::xsd::XSDFacet"
+ quidu "3B6C359403D2"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B6D23BA01CE"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$62"
+ quid "3B6D597102EA"
+ roles (list role_list
+ (object Role "simpleTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6D59750105"
+ label "simpleTypeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$63"
+ attributes (list Attribute_Set)
+ quid "3B6D59750119"
+ supplier "Logical View::xsd::XSDFacet"
+ quidu "3B6C359403D2")))
+ (object Association "$UNNAMED$64"
+ quid "3B69B653017A"
+ roles (list role_list
+ (object Role "scope"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3B69B654006D"
+ label "scope"
+ supplier "Logical View::xsd::XSDScope"
+ quidu "3B69B54000F2"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$65"
+ attributes (list Attribute_Set)
+ quid "3B69B654006E"
+ supplier "Logical View::xsd::XSDFeature"
+ quidu "3B69B537026C")))
+ (object Association "$UNNAMED$66"
+ quid "3C29010602D7"
+ roles (list role_list
+ (object Role "resolvedFeature"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C29010B000E"
+ label "resolvedFeature"
+ supplier "Logical View::xsd::XSDFeature"
+ quidu "3B69B537026C"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$67"
+ attributes (list Attribute_Set)
+ quid "3C29010B0018"
+ supplier "Logical View::xsd::XSDFeature"
+ quidu "3B69B537026C")))
+ (object Association "$UNNAMED$68"
+ quid "3B69DB0D0183"
+ roles (list role_list
+ (object Role "$UNNAMED$69"
+ quid "3B69DB0D033C"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB0D0346"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$70"
+ quid "3B69D29E014D"
+ roles (list role_list
+ (object Role "referencedKey"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B69D2A80165"
+ label "referencedKey"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$71"
+ attributes (list Attribute_Set)
+ quid "3B69D2A8016F"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2")))
+ (object Association "$UNNAMED$72"
+ quid "3B6D8D3D003E"
+ roles (list role_list
+ (object Role "$UNNAMED$73"
+ quid "3B6D8D3E022A"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2"
+ is_aggregate TRUE)
+ (object Role "selector"
+ quid "3B6D8D3E0234"
+ label "selector"
+ supplier "Logical View::xsd::XSDXPathDefinition"
+ quidu "3B6D83BB0355"
+ client_cardinality (value cardinality "1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$74"
+ quid "3B6D8D330025"
+ roles (list role_list
+ (object Role "$UNNAMED$75"
+ quid "3B6D8D330365"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2"
+ is_aggregate TRUE)
+ (object Role "fields"
+ quid "3B6D8D330379"
+ label "fields"
+ supplier "Logical View::xsd::XSDXPathDefinition"
+ quidu "3B6D83BB0355"
+ client_cardinality (value cardinality "1..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$76"
+ quid "3B6ADCD802FC"
+ roles (list role_list
+ (object Role "$UNNAMED$77"
+ quid "3B6ADCD9018B"
+ supplier "Logical View::xsd::XSDImport"
+ quidu "3B688C93017F"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B6ADCD9018C"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$78"
+ quid "3B6ADCC5007E"
+ roles (list role_list
+ (object Role "$UNNAMED$79"
+ quid "3B6ADCC6006B"
+ supplier "Logical View::xsd::XSDInclude"
+ quidu "3B688C7D0250"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B6ADCC6006C"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$80"
+ quid "3B69DB1702C8"
+ roles (list role_list
+ (object Role "$UNNAMED$81"
+ quid "3B69DB1803E2"
+ supplier "Logical View::xsd::XSDModelGroup"
+ quidu "3B6834E00291"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB190004"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$82"
+ quid "3B6BCEB102F8"
+ roles (list role_list
+ (object Role "$UNNAMED$83"
+ quid "3B6BCEB6001B"
+ supplier "Logical View::xsd::XSDModelGroup"
+ quidu "3B6834E00291"
+ is_aggregate TRUE)
+ (object Role "contents"
+ quid "3B6BCEB60025"
+ label "contents"
+ supplier "Logical View::xsd::XSDParticle"
+ quidu "3B682BBD01F7"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$84"
+ quid "3B683606026F"
+ roles (list role_list
+ (object Role "$UNNAMED$85"
+ quid "3B6836070221"
+ supplier "Logical View::xsd::XSDModelGroup"
+ quidu "3B6834E00291"
+ is_aggregate TRUE)
+ (object Role "particles"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6836070222"
+ label "particles"
+ supplier "Logical View::xsd::XSDParticle"
+ quidu "3B682BBD01F7"
+ client_cardinality (value cardinality "1..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$86"
+ quid "3B69DB15008A"
+ roles (list role_list
+ (object Role "$UNNAMED$87"
+ quid "3B69DB160096"
+ supplier "Logical View::xsd::XSDModelGroupDefinition"
+ quidu "3B66ED9A0205"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB1600A0"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$88"
+ quid "3B6837AC025A"
+ roles (list role_list
+ (object Role "$UNNAMED$89"
+ quid "3B6837AD0338"
+ supplier "Logical View::xsd::XSDModelGroupDefinition"
+ quidu "3B66ED9A0205"
+ is_aggregate TRUE)
+ (object Role "modelGroup"
+ quid "3B6837AD0339"
+ label "modelGroup"
+ supplier "Logical View::xsd::XSDModelGroup"
+ quidu "3B6834E00291"
+ client_cardinality (value cardinality "1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$90"
+ quid "3B6B42450398"
+ roles (list role_list
+ (object Role "$UNNAMED$91"
+ quid "3B6B4249038A"
+ supplier "Logical View::xsd::XSDModelGroupDefinition"
+ quidu "3B66ED9A0205"
+ is_aggregate TRUE)
+ (object Role "resolvedModelGroupDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6B4249039E"
+ label "resolvedModelGroupDefinition"
+ supplier "Logical View::xsd::XSDModelGroupDefinition"
+ quidu "3B66ED9A0205"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$92"
+ quid "3B69DB0F0212"
+ roles (list role_list
+ (object Role "$UNNAMED$93"
+ quid "3B69DB1000C9"
+ supplier "Logical View::xsd::XSDNotationDeclaration"
+ quidu "3B66EDAA021C"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB1000D3"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$94"
+ quid "3B6B47150119"
+ roles (list role_list
+ (object Role "$UNNAMED$95"
+ quid "3B6B471A03AB"
+ supplier "Logical View::xsd::XSDParticle"
+ quidu "3B682BBD01F7"
+ is_aggregate TRUE)
+ (object Role "content"
+ quid "3B6B471A03B5"
+ label "content"
+ supplier "Logical View::xsd::XSDParticleContent"
+ quidu "3B6BD22300C6"
+ client_cardinality (value cardinality "1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$96"
+ quid "3B683C890122"
+ roles (list role_list
+ (object Role "$UNNAMED$97"
+ quid "3B683C8A0110"
+ supplier "Logical View::xsd::XSDParticle"
+ quidu "3B682BBD01F7"
+ is_aggregate TRUE)
+ (object Role "term"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B683C8A0111"
+ label "term"
+ supplier "Logical View::xsd::XSDTerm"
+ quidu "3B683C5E0174"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$98"
+ quid "3B6ADE42009A"
+ roles (list role_list
+ (object Role "$UNNAMED$99"
+ quid "3B6ADE4302FE"
+ supplier "Logical View::xsd::XSDRedefine"
+ quidu "3B688C9B02AD"
+ is_aggregate TRUE)
+ (object Role "annotations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6ADE430308"
+ label "annotations"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$100"
+ quid "3B6AE8240051"
+ roles (list role_list
+ (object Role "$UNNAMED$101"
+ quid "3B6AE82602AD"
+ supplier "Logical View::xsd::XSDRedefine"
+ quidu "3B688C9B02AD"
+ is_aggregate TRUE)
+ (object Role "contents"
+ quid "3B6AE82602B7"
+ label "contents"
+ supplier "Logical View::xsd::XSDRedefineContent"
+ quidu "3B6AE2060172"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$102"
+ quid "3B688E6B003D"
+ roles (list role_list
+ (object Role "$UNNAMED$103"
+ quid "3B688E6C0107"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "contents"
+ quid "3B688E6C0111"
+ label "contents"
+ supplier "Logical View::xsd::XSDSchemaContent"
+ quidu "3B688CB800BA"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$104"
+ quid "3B66EE8D01BF"
+ roles (list role_list
+ (object Role "$UNNAMED$105"
+ quid "3B66EE8E0198"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "elementDeclarations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B66EE8E0199"
+ label "elementDeclarations"
+ supplier "Logical View::xsd::XSDElementDeclaration"
+ quidu "3B66ED580214"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$106"
+ quid "3B66FDFA00C3"
+ roles (list role_list
+ (object Role "$UNNAMED$107"
+ quid "3B66FDFB027D"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "attributeDeclarations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B66FDFB027E"
+ label "attributeDeclarations"
+ supplier "Logical View::xsd::XSDAttributeDeclaration"
+ quidu "3B66ED2E0192"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$108"
+ quid "3B66EE920216"
+ roles (list role_list
+ (object Role "$UNNAMED$109"
+ quid "3B66EE93018B"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "attributeGroupDefinitions"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B66EE93018C"
+ label "attributeGroupDefinitions"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$110"
+ quid "3B66EE760049"
+ roles (list role_list
+ (object Role "$UNNAMED$111"
+ quid "3B66EE760374"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "typeDefinitions"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B66EE76037E"
+ label "typeDefinitions"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$112"
+ quid "3B66EEFF024F"
+ roles (list role_list
+ (object Role "$UNNAMED$113"
+ quid "3B66EF00025A"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "modelGroupDefinitions"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B66EF000264"
+ label "modelGroupDefinitions"
+ supplier "Logical View::xsd::XSDModelGroupDefinition"
+ quidu "3B66ED9A0205"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$114"
+ quid "3BFC2A1701ED"
+ roles (list role_list
+ (object Role "$UNNAMED$115"
+ quid "3BFC2A1A0273"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "identityConstraintDefinitions"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3BFC2A1A027D"
+ label "identityConstraintDefinitions"
+ supplier "Logical View::xsd::XSDIdentityConstraintDefinition"
+ quidu "3B682B2603A2"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$116"
+ quid "3B66EEA7023E"
+ roles (list role_list
+ (object Role "$UNNAMED$117"
+ quid "3B66EEA8038A"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "notationDeclarations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B66EEA8038B"
+ label "notationDeclarations"
+ supplier "Logical View::xsd::XSDNotationDeclaration"
+ quidu "3B66EDAA021C"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Reference"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$118"
+ quid "3B69E4560290"
+ roles (list role_list
+ (object Role "$UNNAMED$119"
+ quid "3B69E4570165"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "annotations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B69E457016F"
+ label "annotations"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$120"
+ quid "3B6D5CA50112"
+ roles (list role_list
+ (object Role "$UNNAMED$121"
+ quid "3B6D5CA703B4"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "contents"
+ quid "3B6D5CA703C8"
+ label "contents"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$122"
+ quid "3B6C35AD0374"
+ roles (list role_list
+ (object Role "$UNNAMED$123"
+ quid "3B6C35AF0006"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "facetContents"
+ quid "3B6C35AF0010"
+ label "facetContents"
+ supplier "Logical View::xsd::XSDConstrainingFacet"
+ quidu "3B6C6B340093"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$124"
+ quid "3BC8AE0203A8"
+ roles (list role_list
+ (object Role "$UNNAMED$125"
+ quid "3BC8AE060051"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "facets"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3BC8AE060065"
+ label "facets"
+ supplier "Logical View::xsd::XSDConstrainingFacet"
+ quidu "3B6C6B340093"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$126"
+ quid "3B6C34B70208"
+ roles (list role_list
+ (object Role "$UNNAMED$127"
+ quid "3B6C34BE0258"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "memberTypeDefinitions"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6C34BE0259"
+ label "memberTypeDefinitions"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$128"
+ quid "3B6C363201DB"
+ roles (list role_list
+ (object Role "$UNNAMED$129"
+ quid "3B6C36350059"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "fundamentalFacets"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3B6C36350063"
+ label "fundamentalFacets"
+ supplier "Logical View::xsd::XSDFundamentalFacet"
+ quidu "3B6C69E801D6"
+ client_cardinality (value cardinality "1..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$130"
+ quid "3B6D35AB0273"
+ roles (list role_list
+ (object Role "$UNNAMED$131"
+ quid "3B6D35B20291"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "baseTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6D35B202A5"
+ label "baseTypeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$132"
+ quid "3B6D5572016C"
+ roles (list role_list
+ (object Role "$UNNAMED$133"
+ quid "3B6D5575022F"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "primitiveTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B6D55750243"
+ label "primitiveTypeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$134"
+ quid "3B69E2910158"
+ roles (list role_list
+ (object Role "$UNNAMED$135"
+ quid "3B69E292019F"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69E29201A9"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$136"
+ quid "3B9006CF0088"
+ roles (list role_list
+ (object Role "$UNNAMED$137"
+ quid "3B9006D1015D"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ is_aggregate TRUE)
+ (object Role "derivationAnnotation"
+ quid "3B9006D10167"
+ label "derivationAnnotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$138"
+ quid "3B69DB330264"
+ roles (list role_list
+ (object Role "$UNNAMED$139"
+ quid "3B69DB340284"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ is_aggregate TRUE)
+ (object Role "annotations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3B69DB34028E"
+ label "annotations"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$140"
+ quid "3B69DB11026F"
+ roles (list role_list
+ (object Role "$UNNAMED$141"
+ quid "3B69DB1201F9"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3B69DB120203"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$142"
+ quid "3C626EB30005"
+ roles (list role_list
+ (object Role "$UNNAMED$143"
+ quid "3C626EB40327"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ is_aggregate TRUE)
+ (object Role "annotations"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C626EB40332"
+ label "annotations"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$144"
+ quid "3BEBDC870247"
+ roles (list role_list
+ (object Role "$UNNAMED$145"
+ quid "3BEBDC8C02F9"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "attributeWildcardContent"
+ quid "3BEBDC8C0303"
+ label "attributeWildcardContent"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$146"
+ quid "3BFE622703CD"
+ roles (list role_list
+ (object Role "$UNNAMED$147"
+ attributes (list Attribute_Set)
+ quid "3BFE622B0061"
+ supplier "Logical View::xsd::XSDDiagnostic"
+ quidu "3BFE5F910046")
+ (object Role "components"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3BFE622B006C"
+ label "components"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"
+ client_cardinality (value cardinality "1..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$148"
+ quid "3BFE62690165"
+ roles (list role_list
+ (object Role "$UNNAMED$149"
+ quid "3BFE626A0026"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"
+ is_aggregate TRUE)
+ (object Role "diagnostics"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3BFE626A0027"
+ label "diagnostics"
+ supplier "Logical View::xsd::XSDDiagnostic"
+ quidu "3BFE5F910046"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$150"
+ quid "3BFE6431035F"
+ roles (list role_list
+ (object Role "$UNNAMED$151"
+ quid "3BFE643201C6"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "allDiagnostics"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3BFE643201C7"
+ label "allDiagnostics"
+ supplier "Logical View::xsd::XSDDiagnostic"
+ quidu "3BFE5F910046"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$152"
+ quid "3C21DCC700EC"
+ roles (list role_list
+ (object Role "$UNNAMED$153"
+ quid "3C21DCCE0042"
+ supplier "Logical View::xsd::XSDSchemaDirective"
+ quidu "3B6AD8A202A2"
+ is_aggregate TRUE)
+ (object Role "resolvedSchema"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C21DCCE0043"
+ label "resolvedSchema"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$154"
+ quid "3C21DD0C03DB"
+ roles (list role_list
+ (object Role "$UNNAMED$155"
+ quid "3C21DD100304"
+ supplier "Logical View::xsd::XSDSchemaCompositor"
+ quidu "3C21DB4102AE"
+ is_aggregate TRUE)
+ (object Role "incorporatedSchema"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C21DD100305"
+ label "incorporatedSchema"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$156"
+ quid "3C239134004F"
+ roles (list role_list
+ (object Role "$UNNAMED$157"
+ quid "3C23913600CA"
+ supplier "Logical View::xsd::XSDXPathDefinition"
+ quidu "3B6D83BB0355"
+ is_aggregate TRUE)
+ (object Role "annotation"
+ quid "3C23913600D4"
+ label "annotation"
+ supplier "Logical View::xsd::XSDAnnotation"
+ quidu "3B66EDC80233"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$158"
+ quid "3C25D3A60131"
+ roles (list role_list
+ (object Role "$UNNAMED$159"
+ quid "3C25D3A90370"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB")
+ (object Role "referencingDirectives"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C25D3A90371"
+ label "referencingDirectives"
+ supplier "Logical View::xsd::XSDSchemaDirective"
+ quidu "3B6AD8A202A2"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$160"
+ quid "3C25ECF0005E"
+ roles (list role_list
+ (object Role "$UNNAMED$161"
+ quid "3C25ECF4001E"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB")
+ (object Role "rootVersion"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C25ECF40028"
+ label "rootVersion"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$162"
+ quid "3C25ED0B011B"
+ roles (list role_list
+ (object Role "$UNNAMED$163"
+ quid "3C25ED0F0121"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB")
+ (object Role "originalVersion"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C25ED0F012B"
+ label "originalVersion"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$164"
+ quid "3C25EEAB001F"
+ roles (list role_list
+ (object Role "$UNNAMED$165"
+ quid "3C25EEAF010B"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ is_aggregate TRUE)
+ (object Role "incorporatedVersions"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C25EEAF0115"
+ label "incorporatedVersions"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$166"
+ quid "3C276DA000DE"
+ roles (list role_list
+ (object Role "$UNNAMED$167"
+ quid "3C276DA000DF"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "itemTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3C276DA000E0"
+ label "itemTypeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$168"
+ quid "3C2784730194"
+ roles (list role_list
+ (object Role "$UNNAMED$169"
+ quid "3C27847501F1"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB")
+ (object Role "schemaForSchema"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C27847501FB"
+ label "schemaForSchema"
+ supplier "Logical View::xsd::XSDSchema"
+ quidu "374B182500BB"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$170"
+ quid "3C2880F503D9"
+ roles (list role_list
+ (object Role "rootTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C2880F9003C"
+ label "rootTypeDefinition"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$171"
+ attributes (list Attribute_Set)
+ quid "3C2880F90046"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A")))
+ (object Association "$UNNAMED$172"
+ quid "3C2882C50137"
+ roles (list role_list
+ (object Role "$UNNAMED$173"
+ attributes (list Attribute_Set)
+ quid "3C2882C70112"
+ supplier "Logical View::xsd::XSDDiagnostic"
+ quidu "3BFE5F910046")
+ (object Role "primaryComponent"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C2882C70113"
+ label "primaryComponent"
+ supplier "Logical View::xsd::XSDConcreteComponent"
+ quidu "3B6AD7B40065"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$174"
+ quid "3C28A0F201A4"
+ roles (list role_list
+ (object Role "type"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28A0F302E5"
+ label "type"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$175"
+ attributes (list Attribute_Set)
+ quid "3C28A0F302F0"
+ supplier "Logical View::xsd::XSDFeature"
+ quidu "3B69B537026C")))
+ (object Association "$UNNAMED$176"
+ quid "3C28A6DB01E5"
+ roles (list role_list
+ (object Role "rootType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28A6DD03DD"
+ label "rootType"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$177"
+ attributes (list Attribute_Set)
+ quid "3C28A6DD03DE"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9")))
+ (object Association "$UNNAMED$178"
+ quid "3C28A7120108"
+ roles (list role_list
+ (object Role "baseType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28A7140151"
+ label "baseType"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$179"
+ attributes (list Attribute_Set)
+ quid "3C28A714015B"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9")))
+ (object Association "$UNNAMED$180"
+ quid "3C28A74B0178"
+ roles (list role_list
+ (object Role "simpleType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28A74D017B"
+ label "simpleType"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$181"
+ attributes (list Attribute_Set)
+ quid "3C28A74D0185"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9")))
+ (object Association "$UNNAMED$182"
+ quid "3C28A7ED03C0"
+ roles (list role_list
+ (object Role "complexType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28A7F40117"
+ label "complexType"
+ supplier "Logical View::xsd::XSDParticle"
+ quidu "3B682BBD01F7"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$183"
+ attributes (list Attribute_Set)
+ quid "3C28A7F40121"
+ supplier "Logical View::xsd::XSDTypeDefinition"
+ quidu "3B66ECD302A9")))
+ (object Association "$UNNAMED$184"
+ quid "3C28A994030A"
+ roles (list role_list
+ (object Role "rootTypeDefinition"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28A99700DD"
+ label "rootTypeDefinition"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$185"
+ attributes (list Attribute_Set)
+ quid "3C28A99700E7"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D")))
+ (object Association "$UNNAMED$186"
+ quid "3C28B085025B"
+ roles (list role_list
+ (object Role "$UNNAMED$187"
+ quid "3C28B0860270"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "minFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B086027A"
+ label "minFacet"
+ supplier "Logical View::xsd::XSDMinFacet"
+ quidu "3C0A1CDE037C"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$188"
+ quid "3C28B08D0252"
+ roles (list role_list
+ (object Role "$UNNAMED$189"
+ quid "3C28B08E0091"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "maxFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B08E009B"
+ label "maxFacet"
+ supplier "Logical View::xsd::XSDMaxFacet"
+ quidu "3C0A1CEB010E"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$190"
+ quid "3C28B0AB0396"
+ roles (list role_list
+ (object Role "$UNNAMED$191"
+ quid "3C28B0AC03C9"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "maxInclusiveFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0AC03D4"
+ label "maxInclusiveFacet"
+ supplier "Logical View::xsd::XSDMaxInclusiveFacet"
+ quidu "3B6C787D00DA"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$192"
+ quid "3C28B0AF0338"
+ roles (list role_list
+ (object Role "$UNNAMED$193"
+ quid "3C28B0B001F9"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "minInclusiveFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0B00203"
+ label "minInclusiveFacet"
+ supplier "Logical View::xsd::XSDMinInclusiveFacet"
+ quidu "3B6C788702C9"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$194"
+ quid "3C28B0B30207"
+ roles (list role_list
+ (object Role "$UNNAMED$195"
+ quid "3C28B0B40190"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "minExclusiveFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0B4019A"
+ label "minExclusiveFacet"
+ supplier "Logical View::xsd::XSDMinExclusiveFacet"
+ quidu "3B6C792D000A"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$196"
+ quid "3C28B0B6028D"
+ roles (list role_list
+ (object Role "$UNNAMED$197"
+ quid "3C28B0B70217"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "maxExclusiveFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0B70221"
+ label "maxExclusiveFacet"
+ supplier "Logical View::xsd::XSDMaxExclusiveFacet"
+ quidu "3B6C789600C2"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$198"
+ quid "3C28B0BC0051"
+ roles (list role_list
+ (object Role "$UNNAMED$199"
+ quid "3C28B0BC0246"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "lengthFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0BC0250"
+ label "lengthFacet"
+ supplier "Logical View::xsd::XSDLengthFacet"
+ quidu "3B6C776200E7"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$200"
+ quid "3C28B0BF018C"
+ roles (list role_list
+ (object Role "$UNNAMED$201"
+ quid "3C28B0C0006B"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "whiteSpaceFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0C00075"
+ label "whiteSpaceFacet"
+ supplier "Logical View::xsd::XSDWhiteSpaceFacet"
+ quidu "3B6C784601B7"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$202"
+ quid "3C28B0C2021D"
+ roles (list role_list
+ (object Role "$UNNAMED$203"
+ quid "3C28B0C300AB"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "enumerationFacets"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0C300AC"
+ label "enumerationFacets"
+ supplier "Logical View::xsd::XSDEnumerationFacet"
+ quidu "3B6C6ACE0141"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$204"
+ quid "3C28B0C50159"
+ roles (list role_list
+ (object Role "$UNNAMED$205"
+ quid "3C28B0C600B0"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "patternFacets"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0C600BA"
+ label "patternFacets"
+ supplier "Logical View::xsd::XSDPatternFacet"
+ quidu "3B6C6ADB026C"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$206"
+ quid "3C28B0C802A7"
+ roles (list role_list
+ (object Role "$UNNAMED$207"
+ quid "3C28B0C901EA"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "cardinalityFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0C901F5"
+ label "cardinalityFacet"
+ supplier "Logical View::xsd::XSDCardinalityFacet"
+ quidu "3B6C755D03D2"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$208"
+ quid "3C28B0CB039C"
+ roles (list role_list
+ (object Role "$UNNAMED$209"
+ quid "3C28B0CC03D0"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "numericFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0CC03D1"
+ label "numericFacet"
+ supplier "Logical View::xsd::XSDNumericFacet"
+ quidu "3B6C75950206"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$210"
+ quid "3C28B0CF0199"
+ roles (list role_list
+ (object Role "$UNNAMED$211"
+ quid "3C28B0D20085"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "maxLengthFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0D2008F"
+ label "maxLengthFacet"
+ supplier "Logical View::xsd::XSDMaxLengthFacet"
+ quidu "3B6C77C70146"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$212"
+ quid "3C28B0D500C5"
+ roles (list role_list
+ (object Role "$UNNAMED$213"
+ quid "3C28B0D6001D"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "minLengthFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0D60027"
+ label "minLengthFacet"
+ supplier "Logical View::xsd::XSDMinLengthFacet"
+ quidu "3B6C778C0065"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$214"
+ quid "3C28B0D800DE"
+ roles (list role_list
+ (object Role "$UNNAMED$215"
+ quid "3C28B0D803CD"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "totalDigitsFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0D803D7"
+ label "totalDigitsFacet"
+ supplier "Logical View::xsd::XSDTotalDigitsFacet"
+ quidu "3B6C79A0020E"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$216"
+ quid "3C28B0DB0377"
+ roles (list role_list
+ (object Role "$UNNAMED$217"
+ quid "3C28B0DC035A"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "fractionDigitsFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0DC0364"
+ label "fractionDigitsFacet"
+ supplier "Logical View::xsd::XSDFractionDigitsFacet"
+ quidu "3B6C79BE02EE"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$218"
+ quid "3C28B0DF0048"
+ roles (list role_list
+ (object Role "$UNNAMED$219"
+ quid "3C28B0DF03B9"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "orderedFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0DF03C3"
+ label "orderedFacet"
+ supplier "Logical View::xsd::XSDOrderedFacet"
+ quidu "3B6C74DD0248"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$220"
+ quid "3C28B0E300D9"
+ roles (list role_list
+ (object Role "$UNNAMED$221"
+ quid "3C28B0E4038E"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "boundedFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B0E40398"
+ label "boundedFacet"
+ supplier "Logical View::xsd::XSDBoundedFacet"
+ quidu "3B6C751D0344"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$222"
+ quid "3C28B44401EC"
+ roles (list role_list
+ (object Role "$UNNAMED$223"
+ quid "3C28B4450360"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveMaxFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B445036A"
+ label "effectiveMaxFacet"
+ supplier "Logical View::xsd::XSDMaxFacet"
+ quidu "3C0A1CEB010E"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$224"
+ quid "3C28B54F0145"
+ roles (list role_list
+ (object Role "$UNNAMED$225"
+ quid "3C28B550038C"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveWhiteSpaceFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B5500396"
+ label "effectiveWhiteSpaceFacet"
+ supplier "Logical View::xsd::XSDWhiteSpaceFacet"
+ quidu "3B6C784601B7"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$226"
+ quid "3C28B5C4011C"
+ roles (list role_list
+ (object Role "$UNNAMED$227"
+ quid "3C28B5C5020D"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveMaxLengthFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B5C50217"
+ label "effectiveMaxLengthFacet"
+ supplier "Logical View::xsd::XSDMaxLengthFacet"
+ quidu "3B6C77C70146"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$228"
+ quid "3C28B62A00AA"
+ roles (list role_list
+ (object Role "$UNNAMED$229"
+ quid "3C28B62B0138"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveFractionDigitsFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B62B0142"
+ label "effectiveFractionDigitsFacet"
+ supplier "Logical View::xsd::XSDFractionDigitsFacet"
+ quidu "3B6C79BE02EE"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$230"
+ quid "3C28B6B003A6"
+ roles (list role_list
+ (object Role "$UNNAMED$231"
+ quid "3C28B6B10311"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectivePatternFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B6B10312"
+ label "effectivePatternFacet"
+ supplier "Logical View::xsd::XSDPatternFacet"
+ quidu "3B6C6ADB026C"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$232"
+ quid "3C28B7CA026B"
+ roles (list role_list
+ (object Role "$UNNAMED$233"
+ quid "3C28B7CB0186"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveEnumerationFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B7CB0190"
+ label "effectiveEnumerationFacet"
+ supplier "Logical View::xsd::XSDEnumerationFacet"
+ quidu "3B6C6ACE0141"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$234"
+ quid "3C28B8400062"
+ roles (list role_list
+ (object Role "$UNNAMED$235"
+ quid "3C28B841001D"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveTotalDigitsFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B8410027"
+ label "effectiveTotalDigitsFacet"
+ supplier "Logical View::xsd::XSDTotalDigitsFacet"
+ quidu "3B6C79A0020E"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$236"
+ quid "3C28B898016D"
+ roles (list role_list
+ (object Role "$UNNAMED$237"
+ quid "3C28B8990056"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveMinLengthFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B8990060"
+ label "effectiveMinLengthFacet"
+ supplier "Logical View::xsd::XSDMinLengthFacet"
+ quidu "3B6C778C0065"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$238"
+ quid "3C28B8DC0052"
+ roles (list role_list
+ (object Role "$UNNAMED$239"
+ quid "3C28B8DC03B9"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveLengthFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B8DC03C3"
+ label "effectiveLengthFacet"
+ supplier "Logical View::xsd::XSDLengthFacet"
+ quidu "3B6C776200E7"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$240"
+ quid "3C28B97001DB"
+ roles (list role_list
+ (object Role "$UNNAMED$241"
+ quid "3C28B97100CF"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "effectiveMinFacet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3C28B97100D9"
+ label "effectiveMinFacet"
+ supplier "Logical View::xsd::XSDMinFacet"
+ quidu "3C0A1CDE037C"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$242"
+ quid "3D4BB4AE01CC"
+ roles (list role_list
+ (object Role "$UNNAMED$243"
+ quid "3D4BB4AF010F"
+ supplier "Logical View::xsd::XSDSimpleTypeDefinition"
+ quidu "3B682BA7005D"
+ is_aggregate TRUE)
+ (object Role "syntheticFacets"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3D4BB4AF011A"
+ label "syntheticFacets"
+ supplier "Logical View::xsd::XSDFacet"
+ quidu "3B6C359403D2"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$244"
+ quid "3D4BB4D3028E"
+ roles (list role_list
+ (object Role "$UNNAMED$245"
+ quid "3D4BB4D402F3"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "syntheticParticle"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3D4BB4D402FD"
+ label "syntheticParticle"
+ supplier "Logical View::xsd::XSDParticle"
+ quidu "3B682BBD01F7"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$246"
+ quid "3D4BB4D901F6"
+ roles (list role_list
+ (object Role "$UNNAMED$247"
+ quid "3D4BB4DA0284"
+ supplier "Logical View::xsd::XSDComplexTypeDefinition"
+ quidu "3B682B82031A"
+ is_aggregate TRUE)
+ (object Role "syntheticWildcard"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3D4BB4DA028E"
+ label "syntheticWildcard"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$248"
+ quid "3D4C68FF01BF"
+ roles (list role_list
+ (object Role "$UNNAMED$249"
+ quid "3D4C69020317"
+ supplier "Logical View::xsd::XSDAttributeGroupDefinition"
+ quidu "3B66ED840290"
+ is_aggregate TRUE)
+ (object Role "syntheticWildcard"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3D4C69020318"
+ label "syntheticWildcard"
+ supplier "Logical View::xsd::XSDWildcard"
+ quidu "3B6838370031"
+ client_cardinality (value cardinality "0..1")
+ Containment "By Value"
+ is_navigable TRUE))))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "1. Component Hierarchy (Part 1: Structures)"
+ quid "3B6847680138"
+ title "1. Component Hierarchy (Part 1: Structures)"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDComponent" @1
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (928, 80)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @1
+ location (766, 37)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846E90029"
+ width 342
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDNamedComponent" @2
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1168, 560)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @2
+ location (940, 517)
+ fill_color 13434879
+ nlines 1
+ max_width 456
+ justify 0
+ label "XSDNamedComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846D303A4"
+ width 474
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @3
+ location (928, 225)
+ line_color 3342489
+ fill_color 13434879
+ supplier @1
+ vertices (list Points
+ (928, 225)
+ (928, 135)))
+ (object ClassView "Class" "Logical View::xsd::XSDTerm" @4
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1568, 320)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @4
+ location (1460, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 216
+ justify 0
+ label "XSDTerm")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683C5E0174"
+ width 234
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @5
+ location (1203, 706)
+ line_color 3342489
+ fill_color 13434879
+ supplier @2
+ vertices (list Points
+ (1203, 706)
+ (1203, 615)))
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeContent" @6
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (624, 560)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @6
+ location (372, 517)
+ fill_color 13434879
+ nlines 1
+ max_width 504
+ justify 0
+ label "XSDComplexTypeContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683BA00196"
+ width 522
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @7
+ location (444, 709)
+ line_color 3342489
+ fill_color 13434879
+ supplier @6
+ vertices (list Points
+ (444, 709)
+ (444, 615)))
+ (object InheritTreeView "" @8
+ location (1572, 465)
+ line_color 3342489
+ fill_color 13434879
+ supplier @4
+ vertices (list Points
+ (1572, 465)
+ (1572, 375)))
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @9
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (416, 800)
+ label (object ItemLabel
+ Parent_View @9
+ location (290, 757)
+ fill_color 13434879
+ nlines 1
+ max_width 252
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 270
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @10
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (448, 1056)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @10
+ location (262, 1013)
+ fill_color 13434879
+ nlines 1
+ max_width 372
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 390
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUse" @11
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1104, 320)
+ label (object ItemLabel
+ Parent_View @11
+ location (936, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 336
+ justify 0
+ label "XSDAttributeUse")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B68354601A8"
+ width 354
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @12
+ location (453, 1203)
+ line_color 3342489
+ fill_color 13434879
+ supplier @10
+ vertices (list Points
+ (453, 1203)
+ (453, 1111)))
+ (object ClassView "Class" "Logical View::xsd::XSDScope" @13
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (176, 320)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @13
+ location (62, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 228
+ justify 0
+ label "XSDScope")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B54000F2"
+ width 246
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDFeature" @14
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1872, 800)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @14
+ location (1746, 757)
+ fill_color 13434879
+ nlines 1
+ max_width 252
+ justify 0
+ label "XSDFeature")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B537026C"
+ width 270
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @15
+ location (1872, 950)
+ line_color 3342489
+ fill_color 13434879
+ supplier @14
+ vertices (list Points
+ (1872, 950)
+ (1872, 855)))
+ (object InheritTreeView "" @16
+ location (181, 465)
+ line_color 3342489
+ fill_color 13434879
+ supplier @13
+ vertices (list Points
+ (181, 465)
+ (181, 375)))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @17
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1936, 1280)
+ label (object ItemLabel
+ Parent_View @17
+ location (1670, 1233)
+ fill_color 13434879
+ nlines 1
+ max_width 532
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 550
+ height 118
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @18
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1968, 1056)
+ label (object ItemLabel
+ Parent_View @18
+ location (1734, 1013)
+ fill_color 13434879
+ nlines 1
+ max_width 468
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ width 486
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDIdentityConstraintDefinition" @19
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1888, 1488)
+ label (object ItemLabel
+ Parent_View @19
+ location (1569, 1444)
+ fill_color 13434879
+ nlines 1
+ max_width 638
+ justify 0
+ label "XSDIdentityConstraintDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B2603A2"
+ width 656
+ height 112
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDNotationDeclaration" @20
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1184, 1488)
+ label (object ItemLabel
+ Parent_View @20
+ location (903, 1444)
+ fill_color 13434879
+ nlines 1
+ max_width 563
+ justify 0
+ label "XSDNotationDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDAA021C"
+ width 581
+ height 112
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @21
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1600, 560)
+ label (object ItemLabel
+ Parent_View @21
+ location (1462, 517)
+ fill_color 13434879
+ nlines 1
+ max_width 276
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ width 294
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @22
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1024, 1056)
+ label (object ItemLabel
+ Parent_View @22
+ location (778, 1013)
+ fill_color 13434879
+ nlines 1
+ max_width 492
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ width 510
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroup" @23
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1968, 560)
+ label (object ItemLabel
+ Parent_View @23
+ location (1806, 517)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDModelGroup")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6834E00291"
+ width 342
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @24
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (352, 1296)
+ label (object ItemLabel
+ Parent_View @24
+ location (106, 1253)
+ fill_color 13434879
+ nlines 1
+ max_width 492
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ width 510
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @25
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (192, 560)
+ label (object ItemLabel
+ Parent_View @25
+ location (60, 517)
+ fill_color 13434879
+ nlines 1
+ max_width 264
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 282
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @26
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1072, 1280)
+ label (object ItemLabel
+ Parent_View @26
+ location (802, 1237)
+ fill_color 13434879
+ nlines 1
+ max_width 540
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ width 558
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @27
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (368, 1488)
+ label (object ItemLabel
+ Parent_View @27
+ location (30, 1441)
+ fill_color 13434879
+ nlines 1
+ max_width 676
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ width 694
+ height 119
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAnnotation" @28
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (576, 320)
+ label (object ItemLabel
+ Parent_View @28
+ location (426, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 300
+ justify 0
+ label "XSDAnnotation")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDC80233"
+ width 318
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDXPathDefinition" @29
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2000, 320)
+ label (object ItemLabel
+ Parent_View @29
+ location (1808, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 384
+ justify 0
+ label "XSDXPathDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6D83BB0355"
+ width 402
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @30
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B72D7BB0349"
+ client @11
+ supplier @1
+ line_style 3
+ origin_attachment (1094, 265)
+ terminal_attachment (1094, 225)
+ drawSupplier @3)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefinableComponent" @31
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (960, 800)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @31
+ location (690, 757)
+ fill_color 13434879
+ nlines 1
+ max_width 540
+ justify 0
+ label "XSDRedefinableComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B7FCA8B020B"
+ width 558
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @32
+ location (962, 947)
+ line_color 3342489
+ fill_color 13434879
+ supplier @31
+ vertices (list Points
+ (962, 947)
+ (962, 855)))
+ (object InheritView "" @33
+ stereotype (object SegLabel @34
+ Parent_View @33
+ location (218, 1154)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 212
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.163534
+ height 69
+ orientation 1)
+ line_color 3342489
+ quidu "3B685F55032B"
+ client @24
+ supplier @6
+ line_style 3
+ origin_attachment (149, 1241)
+ terminal_attachment (149, 709)
+ drawSupplier @7)
+ (object InheritView "" @35
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A1302A2"
+ client @24
+ supplier @10
+ line_style 3
+ origin_attachment (256, 1241)
+ terminal_attachment (256, 1203)
+ drawSupplier @12)
+ (object InheritView "" @36
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCC4A0182"
+ client @25
+ supplier @13
+ line_style 3
+ origin_attachment (284, 505)
+ terminal_attachment (284, 465)
+ drawSupplier @16)
+ (object InheritView "" @37
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A640279"
+ client @23
+ supplier @4
+ line_style 3
+ origin_attachment (2002, 505)
+ terminal_attachment (2002, 465)
+ drawSupplier @8)
+ (object InheritView "" @38
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6848AA01D3"
+ client @4
+ supplier @1
+ line_style 3
+ origin_attachment (1569, 265)
+ terminal_attachment (1569, 225)
+ drawSupplier @3)
+ (object InheritView "" @39
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A3A0041"
+ client @21
+ supplier @4
+ line_style 3
+ origin_attachment (1490, 505)
+ terminal_attachment (1490, 465)
+ drawSupplier @8)
+ (object InheritView "" @40
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6848FC01E7"
+ client @9
+ supplier @6
+ line_style 3
+ origin_attachment (510, 745)
+ terminal_attachment (510, 709)
+ drawSupplier @7)
+ (object InheritView "" @41
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAC800D2"
+ client @26
+ supplier @31
+ line_style 3
+ origin_attachment (1321, 1225)
+ terminal_attachment (1321, 947)
+ drawSupplier @32)
+ (object InheritView "" @42
+ stereotype (object SegLabel @43
+ Parent_View @42
+ location (2137, 886)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 238
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.215812
+ height 64
+ orientation 0)
+ line_color 3342489
+ quidu "3B685F17002E"
+ client @18
+ supplier @4
+ line_style 3
+ origin_attachment (2200, 1001)
+ terminal_attachment (2200, 465)
+ drawSupplier @8)
+ (object InheritView "" @44
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69EDEE01BF"
+ client @18
+ supplier @14
+ line_style 3
+ origin_attachment (2093, 1001)
+ terminal_attachment (2093, 950)
+ drawSupplier @15)
+ (object InheritView "" @45
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAB1004D"
+ client @10
+ supplier @31
+ line_style 3
+ origin_attachment (450, 1001)
+ terminal_attachment (450, 947)
+ drawSupplier @32)
+ (object InheritView "" @46
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCD640231"
+ client @13
+ supplier @1
+ line_style 3
+ origin_attachment (147, 265)
+ terminal_attachment (147, 225)
+ drawSupplier @3)
+ (object InheritView "" @47
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D84F70092"
+ client @29
+ supplier @1
+ line_style 3
+ origin_attachment (2012, 265)
+ terminal_attachment (2012, 225)
+ drawSupplier @3)
+ (object InheritView "" @48
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6848B80286"
+ client @6
+ supplier @1
+ line_style 3
+ origin_attachment (834, 505)
+ terminal_attachment (834, 225)
+ drawSupplier @3)
+ (object InheritView "" @49
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0CEA20197"
+ client @2
+ supplier @1
+ line_style 3
+ origin_attachment (1350, 505)
+ terminal_attachment (1350, 225)
+ drawSupplier @3)
+ (object InheritView "" @50
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E1770116"
+ client @28
+ supplier @1
+ line_style 3
+ origin_attachment (572, 265)
+ terminal_attachment (572, 225)
+ drawSupplier @3)
+ (object InheritView "" @51
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69B7DC0193"
+ client @17
+ supplier @14
+ line_style 3
+ origin_attachment (1693, 1221)
+ terminal_attachment (1693, 950)
+ drawSupplier @15)
+ (object InheritView "" @52
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684AA30242"
+ client @19
+ supplier @2
+ line_style 3
+ origin_attachment (1590, 1432)
+ terminal_attachment (1590, 706)
+ drawSupplier @5)
+ (object InheritView "" @53
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68494302F1"
+ client @20
+ supplier @2
+ line_style 3
+ origin_attachment (1431, 1432)
+ terminal_attachment (1431, 706)
+ drawSupplier @5)
+ (object InheritView "" @54
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A26036D"
+ client @31
+ supplier @2
+ line_style 3
+ origin_attachment (959, 745)
+ terminal_attachment (959, 706)
+ drawSupplier @5)
+ (object InheritView "" @55
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A2C0307"
+ client @14
+ supplier @2
+ line_style 3
+ origin_attachment (1872, 745)
+ terminal_attachment (1872, 706)
+ drawSupplier @5)
+ (object InheritView "" @56
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAC40090"
+ client @22
+ supplier @31
+ line_style 3
+ origin_attachment (962, 1001)
+ terminal_attachment (962, 947)
+ drawSupplier @32)
+ (object InheritView "" @57
+ stereotype (object SegLabel @58
+ Parent_View @57
+ location (95, 1388)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 187
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.042531
+ height 67
+ orientation 1)
+ line_color 3342489
+ quidu "3B69BAA20310"
+ client @27
+ supplier @13
+ line_style 3
+ origin_attachment (28, 1429)
+ terminal_attachment (28, 465)
+ drawSupplier @16)
+ (object InheritView "" @59
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0D01901F1"
+ client @27
+ supplier @10
+ line_style 3
+ origin_attachment (656, 1429)
+ terminal_attachment (656, 1203)
+ drawSupplier @12)))
+ (object ClassDiagram "2. Component Relations (Part 1 : Structures)"
+ quid "374B18190028"
+ title "2. Component Relations (Part 1 : Structures)"
+ zoom 96
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDScope" @60
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (784, 1632)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @60
+ location (670, 1591)
+ fill_color 13434879
+ nlines 1
+ max_width 228
+ justify 0
+ label "XSDScope")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B54000F2"
+ width 246
+ height 107
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDFeature" @61
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (192, 1632)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @61
+ location (66, 1591)
+ fill_color 13434879
+ nlines 1
+ max_width 252
+ justify 0
+ label "XSDFeature")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B537026C"
+ width 270
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$64" @62
+ location (494, 1627)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69B653017A"
+ roleview_list (list RoleViews
+ (object RoleView "scope" @63
+ Parent_View @62
+ location (286, -485)
+ label (object SegLabel @64
+ Parent_View @63
+ location (555, 1589)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 132
+ justify 0
+ label "+scope"
+ pctDist 0.371257
+ height 39
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69B654006D"
+ client @62
+ supplier @60
+ line_style 3
+ origin_attachment (494, 1627)
+ terminal_attachment (661, 1627)
+ label (object SegLabel @65
+ Parent_View @63
+ location (576, 1664)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.491018
+ height 37
+ orientation 1))
+ (object RoleView "$UNNAMED$65" @66
+ Parent_View @62
+ location (286, -485)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69B654006E"
+ client @62
+ supplier @61
+ line_style 3
+ origin_attachment (494, 1627)
+ terminal_attachment (327, 1627))))
+ (object ClassView "Class" "Logical View::xsd::XSDTerm" @67
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2192, 1232)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @67
+ location (2084, 1191)
+ fill_color 13434879
+ nlines 1
+ max_width 216
+ justify 0
+ label "XSDTerm")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683C5E0174"
+ width 234
+ height 107
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @68
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2176, 992)
+ label (object ItemLabel
+ Parent_View @68
+ location (2051, 951)
+ fill_color 13434879
+ nlines 1
+ max_width 250
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 268
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$96" @69
+ location (2229, 1112)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683C890122"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$97" @70
+ Parent_View @69
+ location (549, -248)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683C8A0110"
+ client @69
+ supplier @68
+ line_style 3
+ origin_attachment (2229, 1112)
+ terminal_attachment (2229, 1045))
+ (object RoleView "term" @71
+ Parent_View @69
+ location (549, -248)
+ label (object SegLabel @72
+ Parent_View @71
+ location (2157, 1121)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 108
+ justify 0
+ label "+term"
+ pctDist 0.134328
+ height 72
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683C8A0111"
+ client @69
+ supplier @67
+ line_style 3
+ origin_attachment (2229, 1112)
+ terminal_attachment (2229, 1179)
+ label (object SegLabel @73
+ Parent_View @71
+ location (2274, 1119)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.119403
+ height 45
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeContent" @74
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1328, 1232)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @74
+ location (1076, 1191)
+ fill_color 13434879
+ nlines 1
+ max_width 504
+ justify 0
+ label "XSDComplexTypeContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683BA00196"
+ width 522
+ height 107
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroup" @75
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2144, 768)
+ label (object ItemLabel
+ Parent_View @75
+ location (1977, 727)
+ fill_color 13434879
+ nlines 1
+ max_width 334
+ justify 0
+ label "XSDModelGroup")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6834E00291"
+ width 352
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$84" @76
+ location (2219, 880)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683606026F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$85" @77
+ Parent_View @76
+ location (-357, -240)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6836070221"
+ client @76
+ supplier @75
+ line_style 3
+ origin_attachment (2219, 880)
+ terminal_attachment (2219, 821))
+ (object RoleView "particles" @78
+ Parent_View @76
+ location (-357, -240)
+ label (object SegLabel @79
+ Parent_View @78
+ location (2105, 888)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+particles"
+ pctDist 0.156627
+ height 115
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6836070222"
+ client @76
+ supplier @68
+ line_style 3
+ origin_attachment (2219, 880)
+ terminal_attachment (2219, 939)
+ label (object SegLabel @80
+ Parent_View @78
+ location (2281, 888)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "1..*"
+ pctDist 0.156627
+ height 62
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @81
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1776, 992)
+ label (object ItemLabel
+ Parent_View @81
+ location (1639, 951)
+ fill_color 13434879
+ nlines 1
+ max_width 274
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ width 292
+ height 107
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUse" @82
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1072, 1424)
+ label (object ItemLabel
+ Parent_View @82
+ location (905, 1383)
+ fill_color 13434879
+ nlines 1
+ max_width 334
+ justify 0
+ label "XSDAttributeUse")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B68354601A8"
+ width 352
+ height 107
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @83
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (432, 992)
+ label (object ItemLabel
+ Parent_View @83
+ location (187, 951)
+ fill_color 13434879
+ nlines 1
+ max_width 490
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ width 508
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$130" @84
+ location (590, 1140)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D35AB0273"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$131" @85
+ Parent_View @84
+ location (302, 148)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D35B20291"
+ client @84
+ supplier @83
+ vertices (list Points
+ (590, 1140)
+ (540, 1140)
+ (540, 1045))
+ line_style 3
+ origin_attachment (590, 1140)
+ terminal_attachment (540, 1045))
+ (object RoleView "baseTypeDefinition" @86
+ Parent_View @84
+ location (302, 148)
+ label (object SegLabel @87
+ Parent_View @86
+ location (643, 1171)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+baseTypeDefinition"
+ pctDist 1.053571
+ height 31
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D35B202A5"
+ client @84
+ supplier @83
+ vertices (list Points
+ (590, 1140)
+ (641, 1140)
+ (641, 1045))
+ line_style 3
+ origin_attachment (590, 1140)
+ terminal_attachment (641, 1045)
+ label (object SegLabel @88
+ Parent_View @86
+ location (584, 1097)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.122449
+ height 44
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @89
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1008, 992)
+ label (object ItemLabel
+ Parent_View @89
+ location (745, 951)
+ fill_color 13434879
+ nlines 1
+ max_width 526
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ width 544
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$32" @90
+ location (1119, 1112)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837DF024F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$33" @91
+ Parent_View @90
+ location (-1569, -8)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837E100FD"
+ client @90
+ supplier @89
+ line_style 3
+ origin_attachment (1119, 1112)
+ terminal_attachment (1119, 1045))
+ (object RoleView "contentType" @92
+ Parent_View @90
+ location (-1569, -8)
+ label (object SegLabel @93
+ Parent_View @92
+ location (1259, 1126)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 252
+ justify 0
+ label "+contentType"
+ pctDist 0.208955
+ height 140
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837E100FE"
+ client @90
+ supplier @74
+ line_style 3
+ origin_attachment (1119, 1112)
+ terminal_attachment (1119, 1179)
+ label (object SegLabel @94
+ Parent_View @92
+ location (1063, 1126)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.208955
+ height 57
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$38" @95
+ location (1455, 982)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6851BA0126"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$39" @96
+ Parent_View @95
+ location (159, -570)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6851BB0150"
+ client @95
+ supplier @89
+ line_style 3
+ origin_attachment (1455, 982)
+ terminal_attachment (1280, 982))
+ (object RoleView "attributeWildcard" @97
+ Parent_View @95
+ location (159, -570)
+ label (object SegLabel @98
+ Parent_View @97
+ location (1445, 929)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+attributeWildcard"
+ pctDist -0.062857
+ height 54
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6851BB0151"
+ client @95
+ supplier @81
+ line_style 3
+ origin_attachment (1455, 982)
+ terminal_attachment (1630, 982)
+ label (object SegLabel @99
+ Parent_View @97
+ location (1550, 1022)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.542857
+ height 40
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$34" @100
+ location (921, 1208)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683959006E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$35" @101
+ Parent_View @100
+ location (-871, -376)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6839590349"
+ client @100
+ supplier @89
+ line_style 3
+ origin_attachment (921, 1208)
+ terminal_attachment (921, 1045))
+ (object RoleView "attributeUses" @102
+ Parent_View @100
+ location (-871, -376)
+ label (object SegLabel @103
+ Parent_View @102
+ location (778, 1251)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 264
+ justify 0
+ label "+attributeUses"
+ pctDist 0.269939
+ height 144
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683959034A"
+ client @100
+ supplier @82
+ line_style 3
+ origin_attachment (921, 1208)
+ terminal_attachment (921, 1371)
+ label (object SegLabel @104
+ Parent_View @102
+ location (979, 1254)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.288344
+ height 58
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDXPathDefinition" @105
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1312, 768)
+ label (object ItemLabel
+ Parent_View @105
+ location (1122, 727)
+ fill_color 13434879
+ nlines 1
+ max_width 380
+ justify 0
+ label "XSDXPathDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6D83BB0355"
+ width 398
+ height 107
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDNotationDeclaration" @106
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1856, 1632)
+ label (object ItemLabel
+ Parent_View @106
+ location (1623, 1591)
+ fill_color 13434879
+ nlines 1
+ max_width 466
+ justify 0
+ label "XSDNotationDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDAA021C"
+ width 484
+ height 107
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @107
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2048, 448)
+ label (object ItemLabel
+ Parent_View @107
+ location (1803, 407)
+ fill_color 13434879
+ nlines 1
+ max_width 490
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ width 508
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$88" @108
+ location (2216, 608)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837AC025A"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$89" @109
+ Parent_View @108
+ location (-552, -816)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837AD0338"
+ client @108
+ supplier @107
+ line_style 3
+ origin_attachment (2216, 608)
+ terminal_attachment (2216, 501))
+ (object RoleView "modelGroup" @110
+ Parent_View @108
+ location (-552, -816)
+ label (object SegLabel @111
+ Parent_View @110
+ location (2080, 628)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 252
+ justify 0
+ label "+modelGroup"
+ pctDist 0.182609
+ height 137
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837AD0339"
+ client @108
+ supplier @75
+ line_style 3
+ origin_attachment (2216, 608)
+ terminal_attachment (2216, 715)
+ label (object SegLabel @112
+ Parent_View @110
+ location (2256, 633)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.233645
+ height 40
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @113
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1888, 1424)
+ label (object ItemLabel
+ Parent_View @113
+ location (1619, 1383)
+ fill_color 13434879
+ nlines 1
+ max_width 538
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ width 556
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$18" @114
+ location (1676, 1208)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6887BF0150"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$19" @115
+ Parent_View @114
+ location (412, -344)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6887C000A7"
+ client @114
+ supplier @113
+ line_style 3
+ origin_attachment (1676, 1208)
+ terminal_attachment (1676, 1371))
+ (object RoleView "attributeWildcard" @116
+ Parent_View @114
+ location (412, -344)
+ label (object SegLabel @117
+ Parent_View @116
+ location (1857, 1106)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+attributeWildcard"
+ pctDist 0.625767
+ height 181
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6887C000A8"
+ client @114
+ supplier @81
+ line_style 3
+ origin_attachment (1676, 1208)
+ terminal_attachment (1676, 1045)
+ label (object SegLabel @118
+ Parent_View @116
+ location (1618, 1108)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.619632
+ height 59
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$14" @119
+ location (1429, 1438)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68359F0086"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$15" @120
+ Parent_View @119
+ location (-363, -146)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6835A00069"
+ client @119
+ supplier @113
+ line_style 3
+ origin_attachment (1429, 1438)
+ terminal_attachment (1610, 1438))
+ (object RoleView "attributeUses" @121
+ Parent_View @119
+ location (-363, -146)
+ label (object SegLabel @122
+ Parent_View @121
+ location (1405, 1506)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 264
+ justify 0
+ label "+attributeUses"
+ pctDist 0.132597
+ height 68
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6835A0006A"
+ client @119
+ supplier @82
+ line_style 3
+ origin_attachment (1429, 1438)
+ terminal_attachment (1248, 1438)
+ label (object SegLabel @123
+ Parent_View @121
+ location (1327, 1391)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.563536
+ height 48
+ orientation 1))))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @124
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (416, 1424)
+ label (object ItemLabel
+ Parent_View @124
+ location (183, 1383)
+ fill_color 13434879
+ nlines 1
+ max_width 466
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 484
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$22" @125
+ location (777, 1425)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683585010D"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$23" @126
+ Parent_View @125
+ location (-519, -367)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68358600FA"
+ client @125
+ supplier @82
+ line_style 3
+ origin_attachment (777, 1425)
+ terminal_attachment (896, 1425))
+ (object RoleView "attributeDeclaration" @127
+ Parent_View @125
+ location (-519, -367)
+ label (object SegLabel @128
+ Parent_View @127
+ location (784, 1508)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+attributeDeclaration"
+ pctDist -0.059259
+ height 83
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68358600FB"
+ client @125
+ supplier @124
+ line_style 3
+ origin_attachment (777, 1425)
+ terminal_attachment (658, 1425)
+ label (object SegLabel @129
+ Parent_View @127
+ location (721, 1385)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.472441
+ height 41
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$6" @130
+ location (237, 1208)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68356B02CB"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$7" @131
+ Parent_View @130
+ location (-1043, 72)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68356D00A6"
+ client @130
+ supplier @124
+ line_style 3
+ origin_attachment (237, 1208)
+ terminal_attachment (237, 1371))
+ (object RoleView "typeDefinition" @132
+ Parent_View @130
+ location (-1043, 72)
+ label (object SegLabel @133
+ Parent_View @132
+ location (388, 1247)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 276
+ justify 0
+ label "+typeDefinition"
+ pctDist -0.239264
+ height 151
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68356D00A7"
+ client @130
+ supplier @83
+ line_style 3
+ origin_attachment (237, 1208)
+ terminal_attachment (237, 1045)
+ label (object SegLabel @134
+ Parent_View @132
+ location (195, 1247)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.239264
+ height 43
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @135
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (384, 784)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @135
+ location (198, 743)
+ fill_color 13434879
+ nlines 1
+ max_width 372
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 390
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$28" @136
+ location (728, 775)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833350340"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$29" @137
+ Parent_View @136
+ location (-856, -57)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683336028D"
+ client @136
+ supplier @89
+ vertices (list Points
+ (728, 775)
+ (788, 775)
+ (788, 939))
+ line_style 3
+ origin_attachment (728, 775)
+ terminal_attachment (788, 939))
+ (object RoleView "baseTypeDefinition" @138
+ Parent_View @136
+ location (-856, -57)
+ label (object SegLabel @139
+ Parent_View @138
+ location (558, 883)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+baseTypeDefinition"
+ pctDist 1.140940
+ height 108
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B683336028E"
+ client @136
+ supplier @135
+ line_style 3
+ origin_attachment (728, 775)
+ terminal_attachment (579, 775)
+ label (object SegLabel @140
+ Parent_View @138
+ location (750, 812)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.152439
+ height 37
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDIdentityConstraintDefinition" @141
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1312, 448)
+ label (object ItemLabel
+ Parent_View @141
+ location (1017, 407)
+ fill_color 13434879
+ nlines 1
+ max_width 590
+ justify 0
+ label "XSDIdentityConstraintDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B2603A2"
+ width 608
+ height 107
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$70" @142
+ location (1629, 574)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69D29E014D"
+ roleview_list (list RoleViews
+ (object RoleView "referencedKey" @143
+ Parent_View @142
+ location (-83, 94)
+ label (object SegLabel @144
+ Parent_View @143
+ location (1761, 608)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 288
+ justify 0
+ label "+referencedKey"
+ pctDist -1.797297
+ height 34
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69D2A80165"
+ client @142
+ supplier @141
+ vertices (list Points
+ (1629, 574)
+ (1555, 574)
+ (1555, 501))
+ line_style 3
+ origin_attachment (1629, 574)
+ terminal_attachment (1555, 501)
+ label (object SegLabel @145
+ Parent_View @143
+ location (1622, 539)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.047619
+ height 36
+ orientation 1))
+ (object RoleView "$UNNAMED$71" @146
+ Parent_View @142
+ location (-83, 94)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69D2A8016F"
+ client @142
+ supplier @141
+ vertices (list Points
+ (1629, 574)
+ (1689, 574)
+ (1689, 444)
+ (1616, 444))
+ line_style 3
+ origin_attachment (1629, 574)
+ terminal_attachment (1616, 444))))
+ (object AssociationViewNew "$UNNAMED$74" @147
+ location (1197, 608)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D330025"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$75" @148
+ Parent_View @147
+ location (-115, 32)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D330365"
+ client @147
+ supplier @141
+ line_style 3
+ origin_attachment (1197, 608)
+ terminal_attachment (1197, 501))
+ (object RoleView "fields" @149
+ Parent_View @147
+ location (-115, 32)
+ label (object SegLabel @150
+ Parent_View @149
+ location (1119, 655)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 120
+ justify 0
+ label "+fields"
+ pctDist 0.439252
+ height 78
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D330379"
+ client @147
+ supplier @105
+ line_style 3
+ origin_attachment (1197, 608)
+ terminal_attachment (1197, 715)
+ label (object SegLabel @151
+ Parent_View @149
+ location (1253, 654)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "1..*"
+ pctDist 0.429907
+ height 56
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$72" @152
+ location (1415, 608)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D3D003E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$73" @153
+ Parent_View @152
+ location (103, 32)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D3E022A"
+ client @152
+ supplier @141
+ line_style 3
+ origin_attachment (1415, 608)
+ terminal_attachment (1415, 501))
+ (object RoleView "selector" @154
+ Parent_View @152
+ location (103, 32)
+ label (object SegLabel @155
+ Parent_View @154
+ location (1513, 651)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 168
+ justify 0
+ label "+selector"
+ pctDist 0.411215
+ height 98
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D3E0234"
+ client @152
+ supplier @105
+ line_style 3
+ origin_attachment (1415, 608)
+ terminal_attachment (1415, 715)
+ label (object SegLabel @156
+ Parent_View @154
+ location (1381, 650)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.392523
+ height 34
+ orientation 1))))
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @157
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ location (1312, 160)
+ label (object ItemLabel
+ Parent_View @157
+ location (1022, 68)
+ fill_color 13434879
+ nlines 1
+ max_width 581
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 599
+ height 209
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$116" @158
+ location (2395, 606)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EEA7023E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$117" @159
+ Parent_View @158
+ location (-853, 174)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EEA8038A"
+ client @158
+ supplier @157
+ vertices (list Points
+ (2395, 606)
+ (2395, 65)
+ (1611, 65))
+ line_style 3
+ origin_attachment (2395, 606)
+ terminal_attachment (1611, 65))
+ (object RoleView "notationDeclarations" @160
+ Parent_View @158
+ location (-853, 174)
+ label (object SegLabel @161
+ Parent_View @160
+ location (2089, 104)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+notationDeclarations"
+ pctDist -0.489776
+ height 307
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EEA8038B"
+ client @158
+ supplier @106
+ vertices (list Points
+ (2395, 606)
+ (2395, 1633)
+ (2098, 1633))
+ line_style 3
+ origin_attachment (2395, 606)
+ terminal_attachment (2098, 1633)
+ label (object SegLabel @162
+ Parent_View @160
+ location (2344, 105)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist -0.487829
+ height 52
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$112" @163
+ location (1772, 249)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EEFF024F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$113" @164
+ Parent_View @163
+ location (-948, -327)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EF00025A"
+ client @163
+ supplier @157
+ line_style 3
+ origin_attachment (1772, 249)
+ terminal_attachment (1611, 249))
+ (object RoleView "modelGroupDefinitions" @165
+ Parent_View @163
+ location (-948, -327)
+ label (object SegLabel @166
+ Parent_View @165
+ location (2076, 335)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 432
+ justify 0
+ label "+modelGroupDefinitions"
+ pctDist 0.713592
+ height 244
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EF000264"
+ client @163
+ supplier @107
+ vertices (list Points
+ (1772, 249)
+ (1832, 249)
+ (1832, 395))
+ line_style 3
+ origin_attachment (1772, 249)
+ terminal_attachment (1832, 395)
+ label (object SegLabel @167
+ Parent_View @165
+ location (1781, 340)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.737864
+ height 52
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$108" @168
+ location (2346, 518)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE920216"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$109" @169
+ Parent_View @168
+ location (154, 86)
+ label (object SegLabel @170
+ Parent_View @169
+ location (1872, 1857)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 60
+ justify 0
+ label ""
+ pctDist -3.630072
+ height 475
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE93018B"
+ client @168
+ supplier @157
+ vertices (list Points
+ (2346, 518)
+ (2346, 149)
+ (1611, 149))
+ line_style 3
+ origin_attachment (2346, 518)
+ terminal_attachment (1611, 149))
+ (object RoleView "attributeGroupDefinitions" @171
+ Parent_View @168
+ location (154, 86)
+ label (object SegLabel @172
+ Parent_View @171
+ location (2008, 195)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 468
+ justify 0
+ label "+attributeGroupDefinitions"
+ pctDist -0.349946
+ height 339
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE93018C"
+ client @168
+ supplier @113
+ vertices (list Points
+ (2346, 518)
+ (2346, 1441)
+ (2166, 1441))
+ line_style 3
+ origin_attachment (2346, 518)
+ terminal_attachment (2166, 1441)
+ label (object SegLabel @173
+ Parent_View @171
+ location (2299, 197)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist -0.348862
+ height 48
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$110" @174
+ location (203, 159)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE760049"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$111" @175
+ Parent_View @174
+ location (-485, -273)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE760374"
+ client @174
+ supplier @157
+ line_style 3
+ origin_attachment (203, 159)
+ terminal_attachment (1013, 159))
+ (object RoleView "typeDefinitions" @176
+ Parent_View @174
+ location (-485, -273)
+ label (object SegLabel @177
+ Parent_View @176
+ location (349, 196)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 288
+ justify 0
+ label "+typeDefinitions"
+ pctDist -1.475728
+ height 37
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE76037E"
+ client @174
+ supplier @135
+ vertices (list Points
+ (203, 159)
+ (104, 159)
+ (104, 784)
+ (189, 784))
+ line_style 3
+ origin_attachment (203, 159)
+ terminal_attachment (189, 784)
+ label (object SegLabel @178
+ Parent_View @176
+ location (155, 200)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.059701
+ height 41
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$114" @179
+ location (1087, 329)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFC2A1701ED"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$115" @180
+ Parent_View @179
+ location (-577, -23)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFC2A1A0273"
+ client @179
+ supplier @157
+ line_style 3
+ origin_attachment (1087, 329)
+ terminal_attachment (1087, 264))
+ (object RoleView "identityConstraintDefinitions" @181
+ Parent_View @179
+ location (-577, -23)
+ label (object SegLabel @182
+ Parent_View @181
+ location (1375, 338)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 528
+ justify 0
+ label "+identityConstraintDefinitions"
+ pctDist 0.130952
+ height 288
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFC2A1A027D"
+ client @179
+ supplier @141
+ line_style 3
+ origin_attachment (1087, 329)
+ terminal_attachment (1087, 395)
+ label (object SegLabel @183
+ Parent_View @181
+ location (1018, 336)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.107143
+ height 70
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$106" @184
+ location (48, 320)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66FDFA00C3"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$107" @185
+ Parent_View @184
+ location (-1072, -288)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66FDFB027D"
+ client @184
+ supplier @157
+ vertices (list Points
+ (49, 322)
+ (49, 68)
+ (1013, 68))
+ line_style 3
+ origin_attachment (49, 322)
+ terminal_attachment (1013, 68))
+ (object RoleView "attributeDeclarations" @186
+ Parent_View @184
+ location (-1072, -288)
+ label (object SegLabel @187
+ Parent_View @186
+ location (338, 106)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+attributeDeclarations"
+ pctDist -0.198536
+ height 289
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66FDFB027E"
+ client @184
+ supplier @124
+ vertices (list Points
+ (49, 322)
+ (49, 1415)
+ (174, 1415))
+ line_style 3
+ origin_attachment (49, 322)
+ terminal_attachment (174, 1415)
+ label (object SegLabel @188
+ Parent_View @186
+ location (91, 108)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist -0.196706
+ height 42
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @189
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (416, 448)
+ label (object ItemLabel
+ Parent_View @189
+ location (175, 412)
+ fill_color 13434879
+ nlines 1
+ max_width 483
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ width 501
+ height 97
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$56" @190
+ location (499, 589)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69C0590198"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$57" @191
+ Parent_View @190
+ location (-13, 109)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69C05D01E3"
+ client @190
+ supplier @189
+ vertices (list Points
+ (499, 589)
+ (452, 589)
+ (452, 496))
+ line_style 3
+ origin_attachment (499, 589)
+ terminal_attachment (452, 496))
+ (object RoleView "substitutionGroupAffiliation" @192
+ Parent_View @190
+ location (-13, 109)
+ label (object SegLabel @193
+ Parent_View @192
+ location (811, 585)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 504
+ justify 0
+ label "+substitutionGroupAffiliation"
+ pctDist 6.520833
+ height 5
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69C05D01ED"
+ client @190
+ supplier @189
+ vertices (list Points
+ (499, 589)
+ (547, 589)
+ (547, 496))
+ line_style 3
+ origin_attachment (499, 589)
+ terminal_attachment (547, 496)
+ label (object SegLabel @194
+ Parent_View @192
+ location (499, 559)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.000000
+ height 31
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$50" @195
+ location (241, 613)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68338C0058"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$51" @196
+ Parent_View @195
+ location (-1343, -219)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68338C03BF"
+ client @195
+ supplier @189
+ line_style 3
+ origin_attachment (241, 613)
+ terminal_attachment (241, 496))
+ (object RoleView "typeDefinition" @197
+ Parent_View @195
+ location (-1343, -219)
+ label (object SegLabel @198
+ Parent_View @197
+ location (408, 694)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 276
+ justify 0
+ label "+typeDefinition"
+ pctDist 0.686441
+ height 167
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68338C03C0"
+ client @195
+ supplier @135
+ line_style 3
+ origin_attachment (241, 613)
+ terminal_attachment (241, 731)
+ label (object SegLabel @199
+ Parent_View @197
+ location (202, 685)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.610169
+ height 39
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$52" @200
+ location (837, 460)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833EF0160"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$53" @201
+ Parent_View @200
+ location (-1819, -68)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833F00298"
+ client @200
+ supplier @189
+ line_style 3
+ origin_attachment (837, 460)
+ terminal_attachment (666, 460))
+ (object RoleView "identityConstraintDefinitions" @202
+ Parent_View @200
+ location (-1819, -68)
+ label (object SegLabel @203
+ Parent_View @202
+ location (880, 528)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 528
+ justify 0
+ label "+identityConstraintDefinitions"
+ pctDist 0.251462
+ height 68
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833F00299"
+ client @200
+ supplier @141
+ line_style 3
+ origin_attachment (837, 460)
+ terminal_attachment (1008, 460)
+ label (object SegLabel @204
+ Parent_View @202
+ location (859, 407)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.130435
+ height 54
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$104" @205
+ location (541, 246)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE8D01BF"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$105" @206
+ Parent_View @205
+ location (-1123, -186)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE8E0198"
+ client @205
+ supplier @157
+ line_style 3
+ origin_attachment (541, 246)
+ terminal_attachment (1013, 246))
+ (object RoleView "elementDeclarations" @207
+ Parent_View @205
+ location (-1123, -186)
+ label (object SegLabel @208
+ Parent_View @207
+ location (443, 335)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+elementDeclarations"
+ pctDist 0.209302
+ height 89
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B66EE8E0199"
+ client @205
+ supplier @189
+ vertices (list Points
+ (541, 246)
+ (224, 246)
+ (224, 400))
+ line_style 3
+ origin_attachment (541, 246)
+ terminal_attachment (224, 400)
+ label (object SegLabel @209
+ Parent_View @207
+ location (186, 335)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.864693
+ height 39
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$58" @210
+ location (353, 621)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C42DBDD0297"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$59" @211
+ Parent_View @210
+ location (-63, 173)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C42DBE0011E"
+ client @210
+ supplier @189
+ vertices (list Points
+ (353, 621)
+ (306, 621)
+ (306, 496))
+ line_style 3
+ origin_attachment (353, 621)
+ terminal_attachment (306, 496))
+ (object RoleView "substitutionGroup" @212
+ Parent_View @210
+ location (-63, 173)
+ label (object SegLabel @213
+ Parent_View @212
+ location (579, 636)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+substitutionGroup"
+ pctDist 4.808511
+ height 15
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C42DBE00128"
+ client @210
+ supplier @189
+ vertices (list Points
+ (353, 621)
+ (400, 621)
+ (400, 496))
+ line_style 3
+ origin_attachment (353, 621)
+ terminal_attachment (400, 496)
+ label (object SegLabel @214
+ Parent_View @212
+ location (350, 583)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist -0.069767
+ height 39
+ orientation 0))))))
+ (object ClassDiagram "3. Component Attributes (Part 1 : Structures)"
+ quid "3B69E78602C5"
+ title "3. Component Attributes (Part 1 : Structures)"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDNamedComponent" @215
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (304, 128)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @215
+ location (46, 47)
+ fill_color 13434879
+ nlines 1
+ max_width 516
+ justify 0
+ label "XSDNamedComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846D303A4"
+ compartment (object Compartment
+ Parent_View @215
+ location (46, 107)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ name : String"
+ "+ targetNamespace : String"))
+ width 534
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @216
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (288, 1648)
+ label (object ItemLabel
+ Parent_View @216
+ location (41, 1567)
+ fill_color 13434879
+ nlines 1
+ max_width 494
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 512
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @217
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2368, 1680)
+ label (object ItemLabel
+ Parent_View @217
+ location (1781, 1524)
+ fill_color 13434879
+ nlines 1
+ max_width 1174
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ compartment (object Compartment
+ Parent_View @217
+ location (1781, 1584)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 5
+ max_width 0
+ compartmentItems (list Compartment
+ "+ derivationMethod : XSDDerivationMethod = restriction"
+ "<<0..*>> + final : XSDComplexFinal"
+ "+ abstract : boolean"
+ "+ contentTypeCategory : XSDContentTypeCategory"
+ "<<0..*>> + prohibitedSubstitutions : XSDProhibitedSubstitutions"))
+ width 1192
+ height 336
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @218
+ location (463, 362)
+ line_color 3342489
+ fill_color 13434879
+ supplier @215
+ vertices (list Points
+ (463, 362)
+ (463, 221)))
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @219
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1408, 1600)
+ label (object ItemLabel
+ Parent_View @219
+ location (1094, 1519)
+ fill_color 13434879
+ nlines 1
+ max_width 628
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ compartment (object Compartment
+ Parent_View @219
+ location (1094, 1579)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ variety : XSDVariety"
+ "<<0..*>> + final : XSDSimpleFinal"))
+ width 646
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUse" @220
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (912, 144)
+ label (object ItemLabel
+ Parent_View @220
+ location (647, 38)
+ fill_color 13434879
+ nlines 1
+ max_width 530
+ justify 0
+ label "XSDAttributeUse")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B68354601A8"
+ compartment (object Compartment
+ Parent_View @220
+ location (647, 98)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 0
+ compartmentItems (list Compartment
+ "+ required : boolean"
+ "+ value : Value"
+ "+ constraint : XSDConstraint"))
+ width 548
+ height 236
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @221
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (688, 1936)
+ label (object ItemLabel
+ Parent_View @221
+ location (45, 1830)
+ fill_color 13434879
+ nlines 1
+ max_width 1286
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ compartment (object Compartment
+ Parent_View @221
+ location (45, 1890)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 0
+ compartmentItems (list Compartment
+ "+ namespaceConstraintCategory : XSDNamespaceConstraintCategory"
+ "<<0..*>> + namespaceConstraint : String"
+ "+ processContents : XSDProcessContents"))
+ width 1304
+ height 236
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroup" @222
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (336, 1440)
+ label (object ItemLabel
+ Parent_View @222
+ location (47, 1384)
+ fill_color 13434879
+ nlines 1
+ max_width 578
+ justify 0
+ label "XSDModelGroup")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6834E00291"
+ width 596
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDFeature" @223
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (304, 512)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @223
+ location (36, 431)
+ fill_color 13434879
+ nlines 1
+ max_width 536
+ justify 0
+ label "XSDFeature")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B537026C"
+ compartment (object Compartment
+ Parent_View @223
+ location (36, 491)
+ font (object Font
+ italics TRUE)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ value : Value"
+ "+ constraint : XSDConstraint"))
+ width 554
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @224
+ location (294, 697)
+ line_color 3342489
+ fill_color 13434879
+ supplier @223
+ vertices (list Points
+ (294, 697)
+ (294, 605)))
+ (object ClassView "Class" "Logical View::xsd::XSDXPathDefinition" @225
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2256, 128)
+ label (object ItemLabel
+ Parent_View @225
+ location (1995, 47)
+ fill_color 13434879
+ nlines 1
+ max_width 522
+ justify 0
+ label "XSDXPathDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6D83BB0355"
+ width 540
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefinableComponent" @226
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2688, 512)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @226
+ location (2418, 460)
+ fill_color 13434879
+ nlines 1
+ max_width 540
+ justify 0
+ label "XSDRedefinableComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B7FCA8B020B"
+ width 558
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @227
+ location (2684, 962)
+ line_color 3342489
+ fill_color 13434879
+ supplier @226
+ vertices (list Points
+ (2684, 962)
+ (2684, 576)))
+ (object ClassView "Class" "Logical View::xsd::XSDCompositor" @228
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (208, 1200)
+ label (object ItemLabel
+ Parent_View @228
+ location (45, 1116)
+ fill_color 13434879
+ nlines 1
+ max_width 326
+ justify 0
+ label "XSDCompositor")
+ stereotype (object ItemLabel
+ Parent_View @228
+ location (45, 1066)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 326
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B869B620037"
+ width 344
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDConstraint" @229
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (800, 528)
+ label (object ItemLabel
+ Parent_View @229
+ location (638, 469)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDConstraint")
+ stereotype (object ItemLabel
+ Parent_View @229
+ location (638, 419)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 324
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B869E2601AE"
+ width 342
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDDerivationMethod" @230
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2192, 2272)
+ label (object ItemLabel
+ Parent_View @230
+ location (1980, 2213)
+ fill_color 13434879
+ nlines 1
+ max_width 424
+ justify 0
+ label "XSDDerivationMethod")
+ stereotype (object ItemLabel
+ Parent_View @230
+ location (1980, 2163)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 424
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B86A0B000CE"
+ width 442
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDIdentityConstraintCategory" @231
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1584, 176)
+ label (object ItemLabel
+ Parent_View @231
+ location (1281, 88)
+ fill_color 13434879
+ nlines 1
+ max_width 607
+ justify 0
+ label "XSDIdentityConstraintCategory")
+ stereotype (object ItemLabel
+ Parent_View @231
+ location (1281, 38)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 607
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B86A1E00272"
+ width 625
+ height 300
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDContentTypeCategory" @232
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2704, 2224)
+ label (object ItemLabel
+ Parent_View @232
+ location (2456, 2115)
+ fill_color 13434879
+ nlines 1
+ max_width 496
+ justify 0
+ label "XSDContentTypeCategory")
+ stereotype (object ItemLabel
+ Parent_View @232
+ location (2456, 2065)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 496
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B86A79F03A2"
+ width 514
+ height 342
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDVariety" @233
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (880, 1600)
+ label (object ItemLabel
+ Parent_View @233
+ location (708, 1516)
+ fill_color 13434879
+ nlines 1
+ max_width 344
+ justify 0
+ label "XSDVariety")
+ stereotype (object ItemLabel
+ Parent_View @233
+ location (708, 1466)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 344
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B8FF7730249"
+ width 362
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDProcessContents" @234
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (976, 2240)
+ label (object ItemLabel
+ Parent_View @234
+ location (766, 2156)
+ fill_color 13434879
+ nlines 1
+ max_width 420
+ justify 0
+ label "XSDProcessContents")
+ stereotype (object ItemLabel
+ Parent_View @234
+ location (766, 2106)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 420
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B8FF8C70284"
+ width 438
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDXPathVariety" @235
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2768, 160)
+ label (object ItemLabel
+ Parent_View @235
+ location (2587, 97)
+ fill_color 13434879
+ nlines 1
+ max_width 363
+ justify 0
+ label "XSDXPathVariety")
+ stereotype (object ItemLabel
+ Parent_View @235
+ location (2587, 47)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 363
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B8FFB89033A"
+ width 381
+ height 250
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleFinal" @236
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1552, 1872)
+ label (object ItemLabel
+ Parent_View @236
+ location (1389, 1788)
+ fill_color 13434879
+ nlines 1
+ max_width 326
+ justify 0
+ label "XSDSimpleFinal")
+ stereotype (object ItemLabel
+ Parent_View @236
+ location (1389, 1738)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 326
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C25D0295"
+ compartment (object Compartment
+ Parent_View @236
+ location (1389, 1848)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 0
+ compartmentItems (list Compartment
+ "+ list"
+ "+ restriction"
+ "+ union"))
+ width 344
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexFinal" @237
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1968, 2000)
+ label (object ItemLabel
+ Parent_View @237
+ location (1786, 1941)
+ fill_color 13434879
+ nlines 1
+ max_width 364
+ justify 0
+ label "XSDComplexFinal")
+ stereotype (object ItemLabel
+ Parent_View @237
+ location (1786, 1891)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 364
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C2CA01CB"
+ compartment (object Compartment
+ Parent_View @237
+ location (1786, 2001)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ extension"
+ "+ restriction"))
+ width 382
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSubstitutionGroupExclusions" @238
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (800, 1184)
+ label (object ItemLabel
+ Parent_View @238
+ location (485, 1125)
+ fill_color 13434879
+ nlines 1
+ max_width 630
+ justify 0
+ label "XSDSubstitutionGroupExclusions")
+ stereotype (object ItemLabel
+ Parent_View @238
+ location (485, 1075)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 630
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C59100AE"
+ width 648
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDDisallowedSubstitutions" @239
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1440, 1200)
+ label (object ItemLabel
+ Parent_View @239
+ location (1171, 1116)
+ fill_color 13434879
+ nlines 1
+ max_width 538
+ justify 0
+ label "XSDDisallowedSubstitutions")
+ stereotype (object ItemLabel
+ Parent_View @239
+ location (1171, 1066)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 538
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C5A403DF"
+ compartment (object Compartment
+ Parent_View @239
+ location (1171, 1176)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 0
+ compartmentItems (list Compartment
+ "+ substitution"
+ "+ extension"
+ "+ restriction"))
+ width 556
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDProhibitedSubstitutions" @240
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1664, 2272)
+ label (object ItemLabel
+ Parent_View @240
+ location (1398, 2213)
+ fill_color 13434879
+ nlines 1
+ max_width 532
+ justify 0
+ label "XSDProhibitedSubstitutions")
+ stereotype (object ItemLabel
+ Parent_View @240
+ location (1398, 2163)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 532
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C5BE0272"
+ compartment (object Compartment
+ Parent_View @240
+ location (1398, 2273)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ extension"
+ "+ restriction"))
+ width 550
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDNamespaceConstraintCategory" @241
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (384, 2240)
+ label (object ItemLabel
+ Parent_View @241
+ location (45, 2154)
+ fill_color 13434879
+ nlines 1
+ max_width 678
+ justify 0
+ label "XSDNamespaceConstraintCategory")
+ stereotype (object ItemLabel
+ Parent_View @241
+ location (45, 2104)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 678
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C5EA0023"
+ width 696
+ height 296
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @242
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1264, 880)
+ label (object ItemLabel
+ Parent_View @242
+ location (571, 749)
+ fill_color 13434879
+ nlines 1
+ max_width 1386
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ compartment (object Compartment
+ Parent_View @242
+ location (571, 809)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 4
+ max_width 0
+ compartmentItems (list Compartment
+ "+ nillable : boolean"
+ "<<0..*>> + disallowedSubstitutions : XSDDisallowedSubstitutions"
+ "<<0..*>> + substitutionGroupExclusions : XSDSubstitutionGroupExclusions"
+ "+ abstract : boolean"))
+ width 1404
+ height 286
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @243
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69EDEE01BF"
+ client @242
+ supplier @223
+ line_style 3
+ origin_attachment (681, 737)
+ terminal_attachment (681, 697)
+ drawSupplier @224)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @244
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (272, 864)
+ label (object ItemLabel
+ Parent_View @244
+ location (35, 812)
+ fill_color 13434879
+ nlines 1
+ max_width 474
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 492
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @245
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2688, 1152)
+ label (object ItemLabel
+ Parent_View @245
+ location (2420, 1100)
+ fill_color 13434879
+ nlines 1
+ max_width 536
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ width 554
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @246
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAC800D2"
+ client @245
+ supplier @226
+ line_style 3
+ origin_attachment (2862, 1088)
+ terminal_attachment (2862, 962)
+ drawSupplier @227)
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @247
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2352, 1312)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @247
+ location (2168, 1261)
+ fill_color 13434879
+ nlines 1
+ max_width 368
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 386
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @248
+ location (2375, 1465)
+ line_color 3342489
+ fill_color 13434879
+ supplier @247
+ vertices (list Points
+ (2375, 1465)
+ (2375, 1375)))
+ (object InheritView "" @249
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAB1004D"
+ client @247
+ supplier @226
+ line_style 3
+ origin_attachment (2368, 1249)
+ terminal_attachment (2368, 962)
+ drawSupplier @227)
+ (object InheritView "" @250
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0D01901F1"
+ client @217
+ supplier @247
+ line_style 3
+ origin_attachment (2818, 1512)
+ terminal_attachment (2818, 1465)
+ drawSupplier @248)
+ (object InheritView "" @251
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A1302A2"
+ client @219
+ supplier @247
+ line_style 3
+ origin_attachment (1406, 1507)
+ terminal_attachment (1406, 1465)
+ drawSupplier @248)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @252
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2064, 1152)
+ label (object ItemLabel
+ Parent_View @252
+ location (1818, 1101)
+ fill_color 13434879
+ nlines 1
+ max_width 492
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ width 510
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @253
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAC40090"
+ client @252
+ supplier @226
+ line_style 3
+ origin_attachment (2115, 1089)
+ terminal_attachment (2115, 962)
+ drawSupplier @227)
+ (object ClassView "Class" "Logical View::xsd::XSDIdentityConstraintDefinition" @254
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1600, 528)
+ label (object ItemLabel
+ Parent_View @254
+ location (1034, 468)
+ fill_color 13434879
+ nlines 1
+ max_width 1132
+ justify 0
+ label "XSDIdentityConstraintDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B2603A2"
+ width 1150
+ height 144
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @255
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684AA30242"
+ client @254
+ supplier @215
+ line_style 3
+ origin_attachment (1568, 456)
+ terminal_attachment (1568, 362)
+ drawSupplier @218)
+ (object ClassView "Class" "Logical View::xsd::XSDNotationDeclaration" @256
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2320, 784)
+ label (object ItemLabel
+ Parent_View @256
+ location (2078, 703)
+ fill_color 13434879
+ nlines 1
+ max_width 484
+ justify 0
+ label "XSDNotationDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDAA021C"
+ width 502
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @257
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (176, 320)
+ label (object ItemLabel
+ Parent_View @257
+ location (43, 268)
+ fill_color 13434879
+ nlines 1
+ max_width 266
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 284
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @258
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68494302F1"
+ client @256
+ supplier @215
+ line_style 3
+ origin_attachment (2290, 691)
+ terminal_attachment (2290, 362)
+ drawSupplier @218)
+ (object InheritView "" @259
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69B7DC0193"
+ client @244
+ supplier @223
+ line_style 3
+ origin_attachment (141, 800)
+ terminal_attachment (141, 697)
+ drawSupplier @224)
+ (object InheritView "" @260
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A2C0307"
+ client @223
+ supplier @215
+ line_style 3
+ origin_attachment (372, 419)
+ terminal_attachment (372, 362)
+ drawSupplier @218)
+ (object InheritView "" @261
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A26036D"
+ client @226
+ supplier @215
+ line_style 3
+ origin_attachment (2687, 448)
+ terminal_attachment (2687, 362)
+ drawSupplier @218)))
+ (object ClassDiagram "4. Component Hierarchy, Relations and Attributes (Part 2: Datatypes)"
+ quid "3B6C3265005F"
+ title "4. Component Hierarchy, Relations and Attributes (Part 2: Datatypes)"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDFixedFacet" @262
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (192, 896)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @262
+ location (32, 840)
+ fill_color 13434879
+ nlines 1
+ max_width 320
+ justify 0
+ label "XSDFixedFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C699E00C1"
+ width 338
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRepeatableFacet" @263
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (720, 896)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @263
+ location (504, 845)
+ fill_color 13434879
+ nlines 1
+ max_width 432
+ justify 0
+ label "XSDRepeatableFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C6AA6031A"
+ width 450
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDEnumerationFacet" @264
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (496, 1168)
+ label (object ItemLabel
+ Parent_View @264
+ location (266, 1112)
+ fill_color 13434879
+ nlines 1
+ max_width 460
+ justify 0
+ label "XSDEnumerationFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C6ACE0141"
+ width 478
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDPatternFacet" @265
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1008, 1168)
+ label (object ItemLabel
+ Parent_View @265
+ location (777, 1112)
+ fill_color 13434879
+ nlines 1
+ max_width 462
+ justify 0
+ label "XSDPatternFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C6ADB026C"
+ width 480
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @266
+ location (718, 1049)
+ line_color 3342489
+ fill_color 13434879
+ supplier @263
+ vertices (list Points
+ (718, 1049)
+ (718, 959)))
+ (object ClassView "Class" "Logical View::xsd::XSDOrderedFacet" @267
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2000, 928)
+ label (object ItemLabel
+ Parent_View @267
+ location (1799, 872)
+ fill_color 13434879
+ nlines 1
+ max_width 402
+ justify 0
+ label "XSDOrderedFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C74DD0248"
+ width 420
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDBoundedFacet" @268
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1568, 928)
+ label (object ItemLabel
+ Parent_View @268
+ location (1383, 872)
+ fill_color 13434879
+ nlines 1
+ max_width 370
+ justify 0
+ label "XSDBoundedFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C751D0344"
+ width 388
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDCardinalityFacet" @269
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2032, 1104)
+ label (object ItemLabel
+ Parent_View @269
+ location (1807, 1048)
+ fill_color 13434879
+ nlines 1
+ max_width 450
+ justify 0
+ label "XSDCardinalityFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C755D03D2"
+ width 468
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDNumericFacet" @270
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1504, 1104)
+ label (object ItemLabel
+ Parent_View @270
+ location (1319, 1049)
+ fill_color 13434879
+ nlines 1
+ max_width 370
+ justify 0
+ label "XSDNumericFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C75950206"
+ width 388
+ height 134
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDLengthFacet" @271
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (656, 1376)
+ label (object ItemLabel
+ Parent_View @271
+ location (491, 1320)
+ fill_color 13434879
+ nlines 1
+ max_width 330
+ justify 0
+ label "XSDLengthFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C776200E7"
+ width 348
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinLengthFacet" @272
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (608, 1552)
+ label (object ItemLabel
+ Parent_View @272
+ location (405, 1497)
+ fill_color 13434879
+ nlines 1
+ max_width 406
+ justify 0
+ label "XSDMinLengthFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C778C0065"
+ width 424
+ height 134
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @273
+ location (144, 1262)
+ line_color 3342489
+ fill_color 13434879
+ supplier @262
+ vertices (list Points
+ (144, 1262)
+ (144, 964)))
+ (object ClassView "Class" "Logical View::xsd::XSDMaxLengthFacet" @274
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1216, 1552)
+ label (object ItemLabel
+ Parent_View @274
+ location (1007, 1497)
+ fill_color 13434879
+ nlines 1
+ max_width 418
+ justify 0
+ label "XSDMaxLengthFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C77C70146"
+ width 436
+ height 134
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDWhiteSpaceFacet" @275
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1120, 1376)
+ label (object ItemLabel
+ Parent_View @275
+ location (880, 1320)
+ fill_color 13434879
+ nlines 1
+ max_width 480
+ justify 0
+ label "XSDWhiteSpaceFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C784601B7"
+ width 498
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxInclusiveFacet" @276
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1312, 1728)
+ label (object ItemLabel
+ Parent_View @276
+ location (1090, 1676)
+ fill_color 13434879
+ nlines 1
+ max_width 444
+ justify 0
+ label "XSDMaxInclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C787D00DA"
+ width 462
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxExclusiveFacet" @277
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1424, 1904)
+ label (object ItemLabel
+ Parent_View @277
+ location (1193, 1852)
+ fill_color 13434879
+ nlines 1
+ max_width 462
+ justify 0
+ label "XSDMaxExclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C789600C2"
+ width 480
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinInclusiveFacet" @278
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (496, 1728)
+ label (object ItemLabel
+ Parent_View @278
+ location (282, 1676)
+ fill_color 13434879
+ nlines 1
+ max_width 428
+ justify 0
+ label "XSDMinInclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C788702C9"
+ width 446
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinExclusiveFacet" @279
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (352, 1904)
+ label (object ItemLabel
+ Parent_View @279
+ location (124, 1852)
+ fill_color 13434879
+ nlines 1
+ max_width 456
+ justify 0
+ label "XSDMinExclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C792D000A"
+ width 474
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDTotalDigitsFacet" @280
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (256, 2112)
+ label (object ItemLabel
+ Parent_View @280
+ location (52, 2056)
+ fill_color 13434879
+ nlines 1
+ max_width 408
+ justify 0
+ label "XSDTotalDigitsFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C79A0020E"
+ width 426
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDFractionDigitsFacet" @281
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1552, 2112)
+ label (object ItemLabel
+ Parent_View @281
+ location (1318, 2056)
+ fill_color 13434879
+ nlines 1
+ max_width 468
+ justify 0
+ label "XSDFractionDigitsFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C79BE02EE"
+ width 486
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @282
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C9D03C7"
+ client @264
+ supplier @263
+ line_style 3
+ origin_attachment (394, 1100)
+ terminal_attachment (394, 1049)
+ drawSupplier @266)
+ (object InheritView "" @283
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C78620045"
+ client @275
+ supplier @262
+ line_style 3
+ origin_attachment (1119, 1308)
+ terminal_attachment (1119, 1262)
+ drawSupplier @273)
+ (object ClassView "Class" "Logical View::xsd::XSDComponent" @284
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (336, 160)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @284
+ location (174, 117)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846E90029"
+ width 342
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @285
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6CA5038D"
+ client @265
+ supplier @263
+ line_style 3
+ origin_attachment (1044, 1100)
+ terminal_attachment (1044, 1049)
+ drawSupplier @266)
+ (object InheritView "" @286
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C778002DF"
+ client @271
+ supplier @262
+ line_style 3
+ origin_attachment (663, 1308)
+ terminal_attachment (663, 1262)
+ drawSupplier @273)
+ (object ClassView "Class" "Logical View::xsd::XSDOrdered" @287
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2048, 1408)
+ label (object ItemLabel
+ Parent_View @287
+ location (1835, 1324)
+ fill_color 13434879
+ nlines 1
+ max_width 426
+ justify 0
+ label "XSDOrdered")
+ stereotype (object ItemLabel
+ Parent_View @287
+ location (1835, 1274)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 426
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3BC7715202E4"
+ width 444
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDCardinality" @288
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2048, 1728)
+ label (object ItemLabel
+ Parent_View @288
+ location (1835, 1669)
+ fill_color 13434879
+ nlines 1
+ max_width 426
+ justify 0
+ label "XSDCardinality")
+ stereotype (object ItemLabel
+ Parent_View @288
+ location (1835, 1619)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 426
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3BC7715D009B"
+ width 444
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDWhiteSpace" @289
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2064, 2032)
+ label (object ItemLabel
+ Parent_View @289
+ location (1861, 1951)
+ fill_color 13434879
+ nlines 1
+ max_width 406
+ justify 0
+ label "XSDWhiteSpace")
+ stereotype (object ItemLabel
+ Parent_View @289
+ location (1861, 1901)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 406
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3BEED0F60342"
+ width 424
+ height 287
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::Value" @290
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (880, 2096)
+ label (object ItemLabel
+ Parent_View @290
+ location (571, 2062)
+ fill_color 13434879
+ nlines 1
+ max_width 618
+ justify 0
+ label "Value")
+ stereotype (object ItemLabel
+ Parent_View @290
+ location (571, 2012)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 618
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 14671839
+ quidu "3C040B5B031F"
+ width 636
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @291
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B610337"
+ client @280
+ supplier @262
+ line_style 3
+ origin_attachment (75, 2044)
+ terminal_attachment (75, 1262)
+ drawSupplier @273)
+ (object ClassView "Class" "Logical View::xsd::XSDMinFacet" @292
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (256, 1376)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @292
+ location (113, 1320)
+ fill_color 13434879
+ nlines 1
+ max_width 286
+ justify 0
+ label "XSDMinFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C0A1CDE037C"
+ compartment (object Compartment
+ Parent_View @292
+ location (113, 1380)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "+ value : Value"))
+ width 304
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxFacet" @293
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1584, 1376)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @293
+ location (1440, 1320)
+ fill_color 13434879
+ nlines 1
+ max_width 288
+ justify 0
+ label "XSDMaxFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C0A1CEB010E"
+ compartment (object Compartment
+ Parent_View @293
+ location (1440, 1380)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "+ value : Value"))
+ width 306
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @294
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C0A1D240098"
+ client @292
+ supplier @262
+ line_style 3
+ origin_attachment (235, 1308)
+ terminal_attachment (235, 1262)
+ drawSupplier @273)
+ (object InheritView "" @295
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C0A1D3103AD"
+ client @293
+ supplier @262
+ line_style 3
+ origin_attachment (1581, 1308)
+ terminal_attachment (1581, 1262)
+ drawSupplier @273)
+ (object InheritView "" @296
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B520353"
+ client @278
+ supplier @292
+ line_style 3
+ origin_attachment (285, 1664)
+ terminal_attachment (285, 1444))
+ (object InheritView "" @297
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B8303B8"
+ client @276
+ supplier @293
+ line_style 3
+ origin_attachment (1500, 1664)
+ terminal_attachment (1500, 1444))
+ (object InheritView "" @298
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B8E0309"
+ client @277
+ supplier @293
+ line_style 3
+ origin_attachment (1622, 1840)
+ terminal_attachment (1622, 1444))
+ (object InheritView "" @299
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C77C400C0"
+ client @272
+ supplier @262
+ line_style 3
+ origin_attachment (447, 1485)
+ terminal_attachment (447, 1262)
+ drawSupplier @273)
+ (object InheritView "" @300
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B7D00FC"
+ client @274
+ supplier @262
+ line_style 3
+ origin_attachment (1397, 1485)
+ terminal_attachment (1397, 1262)
+ drawSupplier @273)
+ (object InheritView "" @301
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B990016"
+ client @281
+ supplier @262
+ line_style 3
+ origin_attachment (1775, 2044)
+ terminal_attachment (1775, 1262)
+ drawSupplier @273)
+ (object ClassView "Class" "Logical View::xsd::XSDFacet" @302
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (368, 368)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @302
+ location (174, 318)
+ fill_color 13434879
+ nlines 1
+ max_width 388
+ justify 0
+ label "XSDFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C359403D2"
+ width 406
+ height 125
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @303
+ location (366, 522)
+ line_color 3342489
+ fill_color 13434879
+ supplier @302
+ vertices (list Points
+ (366, 522)
+ (366, 430)))
+ (object ClassView "Class" "Logical View::xsd::XSDConstrainingFacet" @304
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (256, 624)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @304
+ location (34, 573)
+ fill_color 13434879
+ nlines 1
+ max_width 444
+ justify 0
+ label "XSDConstrainingFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C6B340093"
+ width 462
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @305
+ location (272, 781)
+ line_color 3342489
+ fill_color 13434879
+ supplier @304
+ vertices (list Points
+ (272, 781)
+ (272, 687)))
+ (object InheritView "" @306
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C8F002E"
+ client @263
+ supplier @304
+ line_style 3
+ origin_attachment (594, 833)
+ terminal_attachment (594, 781)
+ drawSupplier @305)
+ (object ClassView "Class" "Logical View::xsd::XSDFundamentalFacet" @307
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (752, 624)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @307
+ location (526, 573)
+ fill_color 13434879
+ nlines 1
+ max_width 452
+ justify 0
+ label "XSDFundamentalFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C69E801D6"
+ width 470
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @308
+ location (768, 789)
+ line_color 3342489
+ fill_color 13434879
+ supplier @307
+ vertices (list Points
+ (768, 789)
+ (768, 687)))
+ (object InheritView "" @309
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7659012C"
+ client @267
+ supplier @307
+ line_style 3
+ origin_attachment (2050, 860)
+ terminal_attachment (2050, 789)
+ drawSupplier @308)
+ (object InheritView "" @310
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C763C0224"
+ client @268
+ supplier @307
+ line_style 3
+ origin_attachment (1525, 860)
+ terminal_attachment (1525, 789)
+ drawSupplier @308)
+ (object InheritView "" @311
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C764F0131"
+ client @269
+ supplier @307
+ line_style 3
+ origin_attachment (2237, 1036)
+ terminal_attachment (2237, 789)
+ drawSupplier @308)
+ (object InheritView "" @312
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C76420074"
+ client @270
+ supplier @307
+ line_style 3
+ origin_attachment (1328, 1037)
+ terminal_attachment (1328, 789)
+ drawSupplier @308)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @313
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1456, 160)
+ label (object ItemLabel
+ Parent_View @313
+ location (1137, 47)
+ fill_color 13434879
+ nlines 1
+ max_width 638
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ compartment (object Compartment
+ Parent_View @313
+ location (1137, 107)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ variety : XSDVariety"
+ "<<0..*>> + final : XSDSimpleFinal"))
+ width 656
+ height 250
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$62" @314
+ location (775, 178)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D597102EA"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$63" @315
+ Parent_View @314
+ location (-1209, -46)
+ label (object SegLabel @316
+ Parent_View @315
+ location (509, 235)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D59750119"
+ client @314
+ supplier @302
+ vertices (list Points
+ (775, 178)
+ (550, 178)
+ (550, 306))
+ line_style 3
+ origin_attachment (775, 178)
+ terminal_attachment (550, 306))
+ (object RoleView "simpleTypeDefinition" @317
+ Parent_View @314
+ location (-1209, -46)
+ label (object SegLabel @318
+ Parent_View @317
+ location (875, 136)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+simpleTypeDefinition"
+ pctDist 0.283133
+ height 43
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D59750105"
+ client @314
+ supplier @313
+ line_style 3
+ origin_attachment (775, 178)
+ terminal_attachment (1128, 178)
+ label (object SegLabel @319
+ Parent_View @317
+ location (1061, 215)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.812500
+ height 37
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$124" @320
+ location (369, 72)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BC8AE0203A8"
+ roleview_list (list RoleViews
+ (object RoleView "facets" @321
+ Parent_View @320
+ location (-1615, -152)
+ label (object SegLabel @322
+ Parent_View @321
+ location (187, 496)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 132
+ justify 0
+ label "+facets"
+ pctDist 0.913863
+ height 87
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BC8AE060065"
+ client @320
+ supplier @304
+ vertices (list Points
+ (369, 72)
+ (100, 72)
+ (100, 561))
+ line_style 3
+ origin_attachment (369, 72)
+ terminal_attachment (100, 561)
+ label (object SegLabel @323
+ Parent_View @321
+ location (60, 498)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.917900
+ height 41
+ orientation 1))
+ (object RoleView "$UNNAMED$125" @324
+ Parent_View @320
+ location (-1615, -152)
+ label (object SegLabel @325
+ Parent_View @324
+ location (976, 31)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BC8AE060051"
+ client @320
+ supplier @313
+ line_style 3
+ origin_attachment (369, 72)
+ terminal_attachment (1128, 72))))
+ (object AssociationViewNew "$UNNAMED$166" @326
+ location (1538, 508)
+ label (object SegLabel @327
+ Parent_View @326
+ location (1538, 449)
+ font (object Font
+ italics TRUE)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 60
+ justify 0
+ label ""
+ pctDist 0.500000
+ height 60
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C276DA000DE"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$167" @328
+ Parent_View @326
+ location (-446, 284)
+ label (object SegLabel @329
+ Parent_View @328
+ location (1446, 340)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C276DA000DF"
+ client @326
+ supplier @313
+ vertices (list Points
+ (1538, 508)
+ (1487, 508)
+ (1487, 285))
+ line_style 3
+ origin_attachment (1538, 508)
+ terminal_attachment (1487, 285))
+ (object RoleView "itemTypeDefinition" @330
+ Parent_View @326
+ location (-446, 284)
+ label (object SegLabel @331
+ Parent_View @330
+ location (1423, 577)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 360
+ justify 0
+ label "+itemTypeDefinition"
+ pctDist -2.211539
+ height 69
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C276DA000E0"
+ client @326
+ supplier @313
+ vertices (list Points
+ (1538, 508)
+ (1590, 508)
+ (1590, 285))
+ line_style 3
+ origin_attachment (1538, 508)
+ terminal_attachment (1590, 285)
+ label (object SegLabel @332
+ Parent_View @330
+ location (1539, 468)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.003984
+ height 41
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$126" @333
+ location (1729, 574)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C34B70208"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$127" @334
+ Parent_View @333
+ location (-255, 350)
+ label (object SegLabel @335
+ Parent_View @334
+ location (1637, 353)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C34BE0258"
+ client @333
+ supplier @313
+ vertices (list Points
+ (1729, 574)
+ (1678, 574)
+ (1678, 285))
+ line_style 3
+ origin_attachment (1729, 574)
+ terminal_attachment (1678, 285))
+ (object RoleView "memberTypeDefinitions" @336
+ Parent_View @333
+ location (-255, 350)
+ label (object SegLabel @337
+ Parent_View @336
+ location (1559, 654)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 444
+ justify 0
+ label "+memberTypeDefinitions"
+ pctDist -3.269231
+ height 80
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C34BE0259"
+ client @333
+ supplier @313
+ vertices (list Points
+ (1729, 574)
+ (1781, 574)
+ (1781, 285))
+ line_style 3
+ origin_attachment (1729, 574)
+ terminal_attachment (1781, 285)
+ label (object SegLabel @338
+ Parent_View @336
+ location (1730, 520)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.312121
+ height 52
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$128" @339
+ location (748, 269)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C363201DB"
+ roleview_list (list RoleViews
+ (object RoleView "fundamentalFacets" @340
+ Parent_View @339
+ location (-1236, 45)
+ label (object SegLabel @341
+ Parent_View @340
+ location (873, 312)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+fundamentalFacets"
+ pctDist -1.409091
+ height 43
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C36350063"
+ client @339
+ supplier @307
+ vertices (list Points
+ (748, 269)
+ (659, 269)
+ (659, 561))
+ line_style 3
+ origin_attachment (748, 269)
+ terminal_attachment (659, 561)
+ label (object SegLabel @342
+ Parent_View @340
+ location (728, 385)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..*"
+ pctDist 0.538028
+ height 69
+ orientation 0))
+ (object RoleView "$UNNAMED$129" @343
+ Parent_View @339
+ location (-1236, 45)
+ label (object SegLabel @344
+ Parent_View @343
+ location (1052, 228)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C36350059"
+ client @339
+ supplier @313
+ line_style 3
+ origin_attachment (748, 269)
+ terminal_attachment (1128, 269))))
+ (object AssociationViewNew "$UNNAMED$130" @345
+ location (1175, 396)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D35AB0273"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$131" @346
+ Parent_View @345
+ location (-809, 172)
+ label (object SegLabel @347
+ Parent_View @346
+ location (1094, 316)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D35B20291"
+ client @345
+ supplier @313
+ vertices (list Points
+ (1175, 396)
+ (1135, 396)
+ (1135, 285))
+ line_style 3
+ origin_attachment (1175, 396)
+ terminal_attachment (1135, 285))
+ (object RoleView "baseTypeDefinition" @348
+ Parent_View @345
+ location (-809, 172)
+ label (object SegLabel @349
+ Parent_View @348
+ location (1074, 443)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+baseTypeDefinition"
+ pctDist -2.533333
+ height 47
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D35B202A5"
+ client @345
+ supplier @313
+ vertices (list Points
+ (1175, 396)
+ (1215, 396)
+ (1215, 285))
+ line_style 3
+ origin_attachment (1175, 396)
+ terminal_attachment (1215, 285)
+ label (object SegLabel @350
+ Parent_View @348
+ location (1172, 359)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.096154
+ height 38
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$132" @351
+ location (1360, 446)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D5572016C"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$133" @352
+ Parent_View @351
+ location (-624, 222)
+ label (object SegLabel @353
+ Parent_View @352
+ location (1268, 327)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D5575022F"
+ client @351
+ supplier @313
+ vertices (list Points
+ (1360, 446)
+ (1309, 446)
+ (1309, 285))
+ line_style 3
+ origin_attachment (1360, 446)
+ terminal_attachment (1309, 285))
+ (object RoleView "primitiveTypeDefinition" @354
+ Parent_View @351
+ location (-624, 222)
+ label (object SegLabel @355
+ Parent_View @354
+ location (1204, 508)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 432
+ justify 0
+ label "+primitiveTypeDefinition"
+ pctDist -3.000000
+ height 62
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D55750243"
+ client @351
+ supplier @313
+ vertices (list Points
+ (1360, 446)
+ (1412, 446)
+ (1412, 285))
+ line_style 3
+ origin_attachment (1360, 446)
+ terminal_attachment (1412, 285)
+ label (object SegLabel @356
+ Parent_View @354
+ location (1373, 409)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.062147
+ height 38
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleFinal" @357
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2080, 512)
+ label (object ItemLabel
+ Parent_View @357
+ location (1917, 428)
+ fill_color 13434879
+ nlines 1
+ max_width 326
+ justify 0
+ label "XSDSimpleFinal")
+ stereotype (object ItemLabel
+ Parent_View @357
+ location (1917, 378)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 326
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C25D0295"
+ compartment (object Compartment
+ Parent_View @357
+ location (1917, 488)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 3
+ max_width 0
+ compartmentItems (list Compartment
+ "+ list"
+ "+ restriction"
+ "+ union"))
+ width 344
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDVariety" @358
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2080, 176)
+ label (object ItemLabel
+ Parent_View @358
+ location (1918, 92)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDVariety")
+ stereotype (object ItemLabel
+ Parent_View @358
+ location (1918, 42)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 324
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B8FF7730249"
+ width 342
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @359
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C7B0396"
+ client @307
+ supplier @302
+ line_style 3
+ origin_attachment (591, 561)
+ terminal_attachment (591, 522)
+ drawSupplier @303)
+ (object InheritView "" @360
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C800394"
+ client @304
+ supplier @302
+ line_style 3
+ origin_attachment (272, 561)
+ terminal_attachment (272, 522)
+ drawSupplier @303)
+ (object InheritView "" @361
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D25680259"
+ client @302
+ supplier @284
+ line_style 3
+ origin_attachment (366, 306)
+ terminal_attachment (366, 215))
+ (object InheritView "" @362
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C8801B4"
+ client @262
+ supplier @304
+ line_style 3
+ origin_attachment (147, 828)
+ terminal_attachment (147, 781)
+ drawSupplier @305)
+ (object InheritView "" @363
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C7B590281"
+ client @279
+ supplier @292
+ line_style 3
+ origin_attachment (150, 1840)
+ terminal_attachment (150, 1444))))
+ (object ClassDiagram "5. Component Annotations"
+ quid "3B69D68D00D2"
+ title "5. Component Annotations"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUse" @364
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (256, 80)
+ label (object ItemLabel
+ Parent_View @364
+ location (88, 37)
+ fill_color 13434879
+ nlines 1
+ max_width 336
+ justify 0
+ label "XSDAttributeUse")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B68354601A8"
+ width 354
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @365
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (208, 1696)
+ label (object ItemLabel
+ Parent_View @365
+ location (82, 1653)
+ fill_color 13434879
+ nlines 1
+ max_width 252
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 270
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @366
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1872, 1504)
+ label (object ItemLabel
+ Parent_View @366
+ location (1626, 1461)
+ fill_color 13434879
+ nlines 1
+ max_width 492
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ width 510
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDConstrainingFacet" @367
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1888, 304)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @367
+ location (1663, 261)
+ fill_color 13434879
+ nlines 1
+ max_width 450
+ justify 0
+ label "XSDConstrainingFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C6B340093"
+ width 468
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDIdentityConstraintDefinition" @368
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (368, 1360)
+ label (object ItemLabel
+ Parent_View @368
+ location (74, 1317)
+ fill_color 13434879
+ nlines 1
+ max_width 588
+ justify 0
+ label "XSDIdentityConstraintDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B2603A2"
+ width 606
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDNotationDeclaration" @369
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (320, 704)
+ label (object ItemLabel
+ Parent_View @369
+ location (86, 661)
+ fill_color 13434879
+ nlines 1
+ max_width 468
+ justify 0
+ label "XSDNotationDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDAA021C"
+ width 486
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @370
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (320, 1184)
+ label (object ItemLabel
+ Parent_View @370
+ location (74, 1141)
+ fill_color 13434879
+ nlines 1
+ max_width 492
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ width 510
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @371
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (320, 544)
+ label (object ItemLabel
+ Parent_View @371
+ location (86, 501)
+ fill_color 13434879
+ nlines 1
+ max_width 468
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ width 486
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @372
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1200, 80)
+ label (object ItemLabel
+ Parent_View @372
+ location (1068, 37)
+ fill_color 13434879
+ nlines 1
+ max_width 264
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 282
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @373
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1936, 1216)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @373
+ location (1750, 1173)
+ fill_color 13434879
+ nlines 1
+ max_width 372
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 390
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @374
+ location (1994, 1412)
+ line_color 3342489
+ fill_color 13434879
+ supplier @373
+ vertices (list Points
+ (1994, 1412)
+ (1994, 1271)))
+ (object InheritView "" @375
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A1302A2"
+ client @366
+ supplier @373
+ line_style 3
+ origin_attachment (2084, 1449)
+ terminal_attachment (2084, 1412)
+ drawSupplier @374)
+ (object ClassView "Class" "Logical View::xsd::XSDXPathDefinition" @376
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (272, 864)
+ label (object ItemLabel
+ Parent_View @376
+ location (80, 821)
+ fill_color 13434879
+ nlines 1
+ max_width 384
+ justify 0
+ label "XSDXPathDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6D83BB0355"
+ width 402
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDFacet" @377
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2000, 80)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @377
+ location (1892, 37)
+ fill_color 13434879
+ nlines 1
+ max_width 216
+ justify 0
+ label "XSDFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C359403D2"
+ width 234
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @378
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (352, 384)
+ label (object ItemLabel
+ Parent_View @378
+ location (84, 341)
+ fill_color 13434879
+ nlines 1
+ max_width 536
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ width 554
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @379
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (320, 224)
+ label (object ItemLabel
+ Parent_View @379
+ location (86, 181)
+ fill_color 13434879
+ nlines 1
+ max_width 468
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 486
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @380
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1792, 1712)
+ label (object ItemLabel
+ Parent_View @380
+ location (1467, 1674)
+ fill_color 13434879
+ nlines 1
+ max_width 651
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ width 669
+ height 100
+ annotation 8)
+ (object InheritView "" @381
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0D01901F1"
+ client @380
+ supplier @373
+ line_style 3
+ origin_attachment (1572, 1662)
+ terminal_attachment (1572, 1412)
+ drawSupplier @374)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroup" @382
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (240, 1024)
+ label (object ItemLabel
+ Parent_View @382
+ location (78, 981)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDModelGroup")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6834E00291"
+ width 342
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDRepeatableFacet" @383
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1904, 560)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @383
+ location (1688, 517)
+ fill_color 13434879
+ nlines 1
+ max_width 432
+ justify 0
+ label "XSDRepeatableFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C6AA6031A"
+ width 450
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @384
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (208, 1536)
+ label (object ItemLabel
+ Parent_View @384
+ location (71, 1493)
+ fill_color 13434879
+ nlines 1
+ max_width 274
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ width 292
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAnnotation" @385
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1232, 944)
+ label (object ItemLabel
+ Parent_View @385
+ location (872, 685)
+ fill_color 13434879
+ nlines 1
+ max_width 720
+ justify 0
+ label "XSDAnnotation")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDC80233"
+ width 738
+ height 543
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$68" @386
+ location (865, 1359)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0D0183"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$69" @387
+ Parent_View @386
+ location (-255, 559)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0D033C"
+ client @386
+ supplier @368
+ line_style 3
+ origin_attachment (865, 1359)
+ terminal_attachment (671, 1359))
+ (object RoleView "annotation" @388
+ Parent_View @386
+ location (-255, 559)
+ label (object SegLabel @389
+ Parent_View @388
+ location (798, 1321)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist -1.116667
+ height 39
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0D0346"
+ client @386
+ supplier @385
+ vertices (list Points
+ (865, 1359)
+ (925, 1359)
+ (925, 1215))
+ line_style 3
+ origin_attachment (865, 1359)
+ terminal_attachment (925, 1215)
+ label (object SegLabel @390
+ Parent_View @388
+ location (987, 1276)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.706422
+ height 62
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$92" @391
+ location (713, 709)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0F0212"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$93" @392
+ Parent_View @391
+ location (-407, -90)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB1000C9"
+ client @391
+ supplier @369
+ line_style 3
+ origin_attachment (713, 709)
+ terminal_attachment (563, 709))
+ (object RoleView "annotation" @393
+ Parent_View @391
+ location (-407, -90)
+ label (object SegLabel @394
+ Parent_View @393
+ location (727, 667)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.095238
+ height 43
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB1000D3"
+ client @391
+ supplier @385
+ line_style 3
+ origin_attachment (713, 709)
+ terminal_attachment (863, 709)
+ label (object SegLabel @395
+ Parent_View @393
+ location (796, 753)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.553571
+ height 44
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$86" @396
+ location (719, 1193)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB15008A"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$87" @397
+ Parent_View @396
+ location (-401, 393)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB160096"
+ client @396
+ supplier @370
+ line_style 3
+ origin_attachment (719, 1193)
+ terminal_attachment (575, 1193))
+ (object RoleView "annotation" @398
+ Parent_View @396
+ location (-401, 393)
+ label (object SegLabel @399
+ Parent_View @398
+ location (720, 1147)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.006993
+ height 47
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB1600A0"
+ client @396
+ supplier @385
+ line_style 3
+ origin_attachment (719, 1193)
+ terminal_attachment (863, 1193)
+ label (object SegLabel @400
+ Parent_View @398
+ location (806, 1240)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.604167
+ height 47
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$46" @401
+ location (785, 550)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0A0066"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$47" @402
+ Parent_View @401
+ location (-335, -250)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0B023F"
+ client @401
+ supplier @371
+ line_style 3
+ origin_attachment (785, 550)
+ terminal_attachment (563, 550))
+ (object RoleView "annotation" @403
+ Parent_View @401
+ location (-335, -250)
+ label (object SegLabel @404
+ Parent_View @403
+ location (779, 516)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist -0.070707
+ height 35
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB0B0249"
+ client @401
+ supplier @385
+ vertices (list Points
+ (785, 550)
+ (884, 550)
+ (884, 673))
+ line_style 3
+ origin_attachment (785, 550)
+ terminal_attachment (884, 673)
+ label (object SegLabel @405
+ Parent_View @403
+ location (935, 612)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.729730
+ height 51
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$118" @406
+ location (1184, 404)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E4560290"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$119" @407
+ Parent_View @406
+ location (-32, -412)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E4570165"
+ client @406
+ supplier @372
+ line_style 3
+ origin_attachment (1184, 404)
+ terminal_attachment (1184, 135))
+ (object RoleView "annotations" @408
+ Parent_View @406
+ location (-32, -412)
+ label (object SegLabel @409
+ Parent_View @408
+ location (1324, 226)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 249
+ justify 0
+ label "+annotations"
+ pctDist -0.665428
+ height 140
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E457016F"
+ client @406
+ supplier @385
+ line_style 3
+ origin_attachment (1184, 404)
+ terminal_attachment (1184, 673)
+ label (object SegLabel @410
+ Parent_View @408
+ location (1251, 615)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.784387
+ height 67
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$134" @411
+ location (1752, 1034)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E2910158"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$135" @412
+ Parent_View @411
+ location (536, 218)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E292019F"
+ client @411
+ supplier @373
+ vertices (list Points
+ (1752, 1034)
+ (1812, 1034)
+ (1812, 1161))
+ line_style 3
+ origin_attachment (1752, 1034)
+ terminal_attachment (1812, 1161))
+ (object RoleView "annotation" @413
+ Parent_View @411
+ location (536, 218)
+ label (object SegLabel @414
+ Parent_View @413
+ location (1743, 997)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.059603
+ height 37
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E29201A9"
+ client @411
+ supplier @385
+ line_style 3
+ origin_attachment (1752, 1034)
+ terminal_attachment (1601, 1034)
+ label (object SegLabel @415
+ Parent_View @413
+ location (1684, 1066)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.450331
+ height 32
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$136" @416
+ location (1896, 881)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B9006CF0088"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$137" @417
+ Parent_View @416
+ location (621, 40)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B9006D1015D"
+ client @416
+ supplier @373
+ vertices (list Points
+ (1896, 881)
+ (1956, 881)
+ (1956, 1161))
+ line_style 3
+ origin_attachment (1896, 881)
+ terminal_attachment (1956, 1161))
+ (object RoleView "derivationAnnotation" @418
+ Parent_View @416
+ location (621, 40)
+ label (object SegLabel @419
+ Parent_View @418
+ location (1821, 842)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 390
+ justify 0
+ label "+derivationAnnotation"
+ pctDist 0.254237
+ height 40
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B9006D10167"
+ client @416
+ supplier @385
+ line_style 3
+ origin_attachment (1896, 881)
+ terminal_attachment (1601, 881)
+ label (object SegLabel @420
+ Parent_View @418
+ location (1689, 914)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.705085
+ height 33
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$138" @421
+ location (2040, 715)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB330264"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$139" @422
+ Parent_View @421
+ location (920, -85)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB340284"
+ client @421
+ supplier @373
+ vertices (list Points
+ (2040, 715)
+ (2100, 715)
+ (2100, 1161))
+ line_style 3
+ origin_attachment (2040, 715)
+ terminal_attachment (2100, 1161))
+ (object RoleView "annotations" @423
+ Parent_View @421
+ location (920, -85)
+ label (object SegLabel @424
+ Parent_View @423
+ location (1758, 681)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+annotations"
+ pctDist 0.643192
+ height 35
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB34028E"
+ client @421
+ supplier @385
+ line_style 3
+ origin_attachment (2040, 715)
+ terminal_attachment (1601, 715)
+ label (object SegLabel @425
+ Parent_View @423
+ location (1685, 746)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.809313
+ height 31
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$156" @426
+ location (668, 865)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C239134004F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$157" @427
+ Parent_View @426
+ location (-612, 33)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C23913600CA"
+ client @426
+ supplier @376
+ line_style 3
+ origin_attachment (668, 865)
+ terminal_attachment (473, 865))
+ (object RoleView "annotation" @428
+ Parent_View @426
+ location (-612, 33)
+ label (object SegLabel @429
+ Parent_View @428
+ location (714, 825)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.234146
+ height 41
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C23913600D4"
+ client @426
+ supplier @385
+ line_style 3
+ origin_attachment (668, 865)
+ terminal_attachment (863, 865)
+ label (object SegLabel @430
+ Parent_View @428
+ location (801, 903)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.682051
+ height 38
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$60" @431
+ location (1472, 167)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D23B901CD"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$61" @432
+ Parent_View @431
+ location (256, -649)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D23BA01C4"
+ client @431
+ supplier @377
+ vertices (list Points
+ (1472, 167)
+ (1472, 72)
+ (1883, 72))
+ line_style 3
+ origin_attachment (1472, 167)
+ terminal_attachment (1883, 72))
+ (object RoleView "annotation" @433
+ Parent_View @431
+ location (256, -649)
+ label (object SegLabel @434
+ Parent_View @433
+ location (1604, 129)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist -0.076305
+ height 132
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D23BA01CE"
+ client @431
+ supplier @385
+ line_style 3
+ origin_attachment (1472, 167)
+ terminal_attachment (1472, 673)
+ label (object SegLabel @435
+ Parent_View @433
+ location (1419, 618)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.893574
+ height 54
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$10" @436
+ location (927, 350)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB060291"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$11" @437
+ Parent_View @436
+ location (-193, -450)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB070171"
+ client @436
+ supplier @378
+ line_style 3
+ origin_attachment (927, 350)
+ terminal_attachment (629, 350))
+ (object RoleView "annotation" @438
+ Parent_View @436
+ location (-193, -450)
+ label (object SegLabel @439
+ Parent_View @438
+ location (878, 310)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist -0.816667
+ height 41
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB070172"
+ client @436
+ supplier @385
+ vertices (list Points
+ (927, 350)
+ (987, 350)
+ (987, 673))
+ line_style 3
+ origin_attachment (927, 350)
+ terminal_attachment (987, 673)
+ label (object SegLabel @440
+ Parent_View @438
+ location (1037, 612)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.843342
+ height 50
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$2" @441
+ location (1027, 222)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DADC02F5"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$3" @442
+ Parent_View @441
+ location (-93, -578)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DADD0238"
+ client @441
+ supplier @379
+ line_style 3
+ origin_attachment (1027, 222)
+ terminal_attachment (563, 222))
+ (object RoleView "annotation" @443
+ Parent_View @441
+ location (-93, -578)
+ label (object SegLabel @444
+ Parent_View @443
+ location (1003, 188)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist -0.406250
+ height 35
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DADD0242"
+ client @441
+ supplier @385
+ vertices (list Points
+ (1027, 222)
+ (1087, 222)
+ (1087, 673))
+ line_style 3
+ origin_attachment (1027, 222)
+ terminal_attachment (1087, 673)
+ label (object SegLabel @445
+ Parent_View @443
+ location (1137, 613)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 100
+ justify 0
+ label "0..1"
+ pctDist 0.882583
+ height 50
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$26" @446
+ location (1494, 1438)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B90068801C2"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$27" @447
+ Parent_View @446
+ location (214, 590)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B90068A0111"
+ client @446
+ supplier @380
+ line_style 3
+ origin_attachment (1494, 1438)
+ terminal_attachment (1494, 1662))
+ (object RoleView "contentAnnotation" @448
+ Parent_View @446
+ location (214, 590)
+ label (object SegLabel @449
+ Parent_View @448
+ location (1696, 1356)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 360
+ justify 0
+ label "+contentAnnotation"
+ pctDist 0.367713
+ height 202
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B90068A011B"
+ client @446
+ supplier @385
+ line_style 3
+ origin_attachment (1494, 1438)
+ terminal_attachment (1494, 1215)
+ label (object SegLabel @450
+ Parent_View @448
+ location (1443, 1279)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.713004
+ height 51
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$80" @451
+ location (637, 1022)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB1702C8"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$81" @452
+ Parent_View @451
+ location (-483, 222)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB1803E2"
+ client @451
+ supplier @382
+ line_style 3
+ origin_attachment (637, 1022)
+ terminal_attachment (411, 1022))
+ (object RoleView "annotation" @453
+ Parent_View @451
+ location (-483, 222)
+ label (object SegLabel @454
+ Parent_View @453
+ location (710, 979)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.328889
+ height 44
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB190004"
+ client @451
+ supplier @385
+ line_style 3
+ origin_attachment (637, 1022)
+ terminal_attachment (863, 1022)
+ label (object SegLabel @455
+ Parent_View @453
+ location (802, 1062)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.730088
+ height 40
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$0" @456
+ location (1581, 607)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C626EA70102"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$1" @457
+ Parent_View @456
+ location (301, -225)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C626EA90191"
+ client @456
+ supplier @383
+ vertices (list Points
+ (1581, 607)
+ (1581, 547)
+ (1679, 547))
+ line_style 3
+ origin_attachment (1581, 607)
+ terminal_attachment (1679, 547))
+ (object RoleView "annotations" @458
+ Parent_View @456
+ location (301, -225)
+ label (object SegLabel @459
+ Parent_View @458
+ location (1669, 462)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+annotations"
+ pctDist -2.196970
+ height 88
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C626EA90192"
+ client @456
+ supplier @385
+ line_style 3
+ origin_attachment (1581, 607)
+ terminal_attachment (1581, 673)
+ label (object SegLabel @460
+ Parent_View @458
+ location (1539, 620)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.196970
+ height 42
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$140" @461
+ location (849, 1496)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB11026F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$141" @462
+ Parent_View @461
+ location (-271, 696)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB1201F9"
+ client @461
+ supplier @384
+ line_style 3
+ origin_attachment (849, 1496)
+ terminal_attachment (354, 1496))
+ (object RoleView "annotation" @463
+ Parent_View @461
+ location (-271, 696)
+ label (object SegLabel @464
+ Parent_View @463
+ location (942, 1464)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.188259
+ height 33
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69DB120203"
+ client @461
+ supplier @385
+ vertices (list Points
+ (849, 1496)
+ (1062, 1496)
+ (1062, 1215))
+ line_style 3
+ origin_attachment (849, 1496)
+ terminal_attachment (1062, 1215)
+ label (object SegLabel @465
+ Parent_View @463
+ location (1115, 1279)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.872690
+ height 53
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$142" @466
+ location (952, 1565)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C626EB30005"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$143" @467
+ Parent_View @466
+ location (-328, 733)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C626EB40327"
+ client @466
+ supplier @384
+ line_style 3
+ origin_attachment (952, 1565)
+ terminal_attachment (354, 1565))
+ (object RoleView "annotations" @468
+ Parent_View @466
+ location (-328, 733)
+ label (object SegLabel @469
+ Parent_View @468
+ location (1075, 1538)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+annotations"
+ pctDist 0.204959
+ height 28
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C626EB40332"
+ client @466
+ supplier @385
+ vertices (list Points
+ (952, 1565)
+ (1200, 1565)
+ (1200, 1215))
+ line_style 3
+ origin_attachment (952, 1565)
+ terminal_attachment (1200, 1215)
+ label (object SegLabel @470
+ Parent_View @468
+ location (1254, 1275)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.900000
+ height 54
+ orientation 1))))
+ (object InheritView "" @471
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C800394"
+ client @367
+ supplier @377
+ line_style 3
+ origin_attachment (1984, 249)
+ terminal_attachment (1984, 135))
+ (object InheritView "" @472
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C6C8F002E"
+ client @383
+ supplier @367
+ line_style 3
+ origin_attachment (1997, 505)
+ terminal_attachment (1997, 359))))
+ (object ClassDiagram "6. Concrete Components"
+ quid "3B6AD74D03C4"
+ title "6. Concrete Components"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDComponent" @473
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (288, 416)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @473
+ location (126, 373)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846E90029"
+ width 342
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupContent" @474
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (832, 416)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @474
+ location (568, 373)
+ fill_color 13434879
+ nlines 1
+ max_width 528
+ justify 0
+ label "XSDAttributeGroupContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6940200089"
+ width 546
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefineContent" @475
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1200, 672)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @475
+ location (991, 629)
+ fill_color 13434879
+ nlines 1
+ max_width 418
+ justify 0
+ label "XSDRedefineContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AE2060172"
+ width 436
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaContent" @476
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1360, 416)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @476
+ location (1156, 373)
+ fill_color 13434879
+ nlines 1
+ max_width 408
+ justify 0
+ label "XSDSchemaContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B688CB800BA"
+ width 426
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @477
+ location (1360, 561)
+ line_color 3342489
+ fill_color 13434879
+ supplier @476
+ vertices (list Points
+ (1360, 561)
+ (1360, 471)))
+ (object ClassView "Class" "Logical View::xsd::XSDInclude" @478
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1632, 1200)
+ label (object ItemLabel
+ Parent_View @478
+ location (1512, 1157)
+ fill_color 13434879
+ nlines 1
+ max_width 240
+ justify 0
+ label "XSDInclude")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B688C7D0250"
+ width 258
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDImport" @479
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1408, 944)
+ label (object ItemLabel
+ Parent_View @479
+ location (1294, 901)
+ fill_color 13434879
+ nlines 1
+ max_width 228
+ justify 0
+ label "XSDImport")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B688C93017F"
+ width 246
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefine" @480
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1936, 1200)
+ label (object ItemLabel
+ Parent_View @480
+ location (1805, 1157)
+ fill_color 13434879
+ nlines 1
+ max_width 262
+ justify 0
+ label "XSDRedefine")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B688C9B02AD"
+ width 280
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDAnnotation" @481
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (800, 1200)
+ label (object ItemLabel
+ Parent_View @481
+ location (375, 1153)
+ fill_color 13434879
+ nlines 1
+ max_width 851
+ justify 0
+ label "XSDAnnotation")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDC80233"
+ width 869
+ height 119
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$78" @482
+ location (1368, 1206)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADCC5007E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$79" @483
+ Parent_View @482
+ location (1160, 406)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADCC6006B"
+ client @482
+ supplier @478
+ line_style 3
+ origin_attachment (1368, 1206)
+ terminal_attachment (1503, 1206))
+ (object RoleView "annotation" @484
+ Parent_View @482
+ location (1160, 406)
+ label (object SegLabel @485
+ Parent_View @484
+ location (1347, 1154)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.154412
+ height 53
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADCC6006C"
+ client @482
+ supplier @481
+ line_style 3
+ origin_attachment (1368, 1206)
+ terminal_attachment (1234, 1206)
+ label (object SegLabel @486
+ Parent_View @484
+ location (1300, 1253)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 107
+ justify 0
+ label "0..1"
+ pctDist 0.514706
+ height 47
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$76" @487
+ location (1168, 1022)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADCD802FC"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$77" @488
+ Parent_View @487
+ location (960, 222)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADCD9018B"
+ client @487
+ supplier @479
+ vertices (list Points
+ (1168, 1022)
+ (1168, 962)
+ (1285, 962))
+ line_style 3
+ origin_attachment (1168, 1022)
+ terminal_attachment (1285, 962))
+ (object RoleView "annotation" @489
+ Parent_View @487
+ location (960, 222)
+ label (object SegLabel @490
+ Parent_View @489
+ location (1290, 1075)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 216
+ justify 0
+ label "+annotation"
+ pctDist 0.445378
+ height 122
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADCD9018C"
+ client @487
+ supplier @481
+ line_style 3
+ origin_attachment (1168, 1022)
+ terminal_attachment (1168, 1141)
+ label (object SegLabel @491
+ Parent_View @489
+ location (1127, 1074)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.436975
+ height 41
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$98" @492
+ location (1563, 1353)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADE42009A"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$99" @493
+ Parent_View @492
+ location (1355, 553)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADE4302FE"
+ client @492
+ supplier @480
+ vertices (list Points
+ (1563, 1353)
+ (1940, 1353)
+ (1940, 1255))
+ line_style 3
+ origin_attachment (1563, 1353)
+ terminal_attachment (1940, 1255))
+ (object RoleView "annotations" @494
+ Parent_View @492
+ location (1355, 553)
+ label (object SegLabel @495
+ Parent_View @494
+ location (1317, 1322)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+annotations"
+ pctDist 0.516807
+ height 32
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6ADE430308"
+ client @492
+ supplier @481
+ vertices (list Points
+ (1563, 1353)
+ (1181, 1353)
+ (1181, 1259))
+ line_style 3
+ origin_attachment (1563, 1353)
+ terminal_attachment (1181, 1259)
+ label (object SegLabel @496
+ Parent_View @494
+ location (1130, 1326)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.861345
+ height 52
+ orientation 0))))
+ (object InheritTreeView "" @497
+ location (288, 561)
+ line_color 3342489
+ fill_color 13434879
+ supplier @473
+ vertices (list Points
+ (288, 561)
+ (288, 471)))
+ (object ClassView "Class" "Logical View::xsd::XSDNamedComponent" @498
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (688, 672)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @498
+ location (460, 629)
+ fill_color 13434879
+ nlines 1
+ max_width 456
+ justify 0
+ label "XSDNamedComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846D303A4"
+ width 474
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDParticleContent" @499
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1856, 416)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @499
+ location (1658, 373)
+ fill_color 13434879
+ nlines 1
+ max_width 396
+ justify 0
+ label "XSDParticleContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6BD22300C6"
+ width 414
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefinableComponent" @500
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (720, 960)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @500
+ location (450, 917)
+ fill_color 13434879
+ nlines 1
+ max_width 540
+ justify 0
+ label "XSDRedefinableComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B7FCA8B020B"
+ width 558
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDScope" @501
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (224, 672)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @501
+ location (110, 629)
+ fill_color 13434879
+ nlines 1
+ max_width 228
+ justify 0
+ label "XSDScope")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B54000F2"
+ width 246
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @502
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCD640231"
+ client @501
+ supplier @473
+ line_style 3
+ origin_attachment (221, 617)
+ terminal_attachment (221, 561)
+ drawSupplier @497)
+ (object InheritView "" @503
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0CEA20197"
+ client @498
+ supplier @473
+ line_style 3
+ origin_attachment (589, 617)
+ terminal_attachment (589, 561)
+ drawSupplier @497)
+ (object InheritView "" @504
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE2B301D5"
+ client @475
+ supplier @476
+ line_style 3
+ origin_attachment (1016, 617)
+ terminal_attachment (1016, 561)
+ drawSupplier @477)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaCompositor" @505
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1824, 944)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @505
+ location (1590, 901)
+ fill_color 13434879
+ nlines 1
+ max_width 468
+ justify 0
+ label "XSDSchemaCompositor")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C21DB4102AE"
+ width 486
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @506
+ location (1824, 1089)
+ line_color 3342489
+ fill_color 13434879
+ supplier @505
+ vertices (list Points
+ (1824, 1089)
+ (1824, 999)))
+ (object InheritView "" @507
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AD8DC0381"
+ client @478
+ supplier @505
+ line_style 3
+ origin_attachment (1666, 1145)
+ terminal_attachment (1666, 1089)
+ drawSupplier @506)
+ (object InheritView "" @508
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DB640240"
+ client @480
+ supplier @505
+ line_style 3
+ origin_attachment (1934, 1145)
+ terminal_attachment (1934, 1089)
+ drawSupplier @506)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaDirective" @509
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1840, 672)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @509
+ location (1630, 629)
+ fill_color 13434879
+ nlines 1
+ max_width 420
+ justify 0
+ label "XSDSchemaDirective")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD8A202A2"
+ width 438
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @510
+ location (1762, 819)
+ line_color 3342489
+ fill_color 13434879
+ supplier @509
+ vertices (list Points
+ (1762, 819)
+ (1762, 727)))
+ (object InheritView "" @511
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AD8D9003E"
+ client @479
+ supplier @509
+ line_style 3
+ origin_attachment (1416, 889)
+ terminal_attachment (1416, 819)
+ drawSupplier @510)
+ (object InheritView "" @512
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE32102AF"
+ client @509
+ supplier @476
+ line_style 3
+ origin_attachment (1756, 617)
+ terminal_attachment (1756, 561)
+ drawSupplier @477)
+ (object ClassView "Class" "Logical View::xsd::XSDConcreteComponent" @513
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ location (1120, 144)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @513
+ location (875, 101)
+ fill_color 13434879
+ nlines 1
+ max_width 490
+ justify 0
+ label "XSDConcreteComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD7B40065"
+ width 508
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @514
+ location (1120, 289)
+ line_color 3342489
+ fill_color 13434879
+ supplier @513
+ vertices (list Points
+ (1120, 289)
+ (1120, 199)))
+ (object AssociationViewNew "$UNNAMED$40" @515
+ location (1485, 215)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751B0803C7"
+ roleview_list (list RoleViews
+ (object RoleView "container" @516
+ Parent_View @515
+ location (989, 103)
+ label (object SegLabel @517
+ Parent_View @516
+ location (1604, 210)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 192
+ justify 0
+ label "+container"
+ pctDist 0.033113
+ height 119
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751B0C01CE"
+ client @515
+ supplier @513
+ vertices (list Points
+ (1485, 215)
+ (1485, 176)
+ (1374, 176))
+ line_style 3
+ origin_attachment (1485, 215)
+ terminal_attachment (1374, 176)
+ label (object SegLabel @518
+ Parent_View @516
+ location (1435, 226)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 69
+ justify 0
+ label "0..1"
+ pctDist 0.602649
+ height 50
+ orientation 0))
+ (object RoleView "$UNNAMED$41" @519
+ Parent_View @515
+ location (989, 103)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751B0C01CF"
+ client @515
+ supplier @513
+ vertices (list Points
+ (1485, 215)
+ (1485, 254)
+ (1345, 254)
+ (1345, 199))
+ line_style 3
+ origin_attachment (1485, 215)
+ terminal_attachment (1345, 199))))
+ (object AssociationViewNew "$UNNAMED$42" @520
+ location (773, 216)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751B480261"
+ roleview_list (list RoleViews
+ (object RoleView "rootContainer" @521
+ Parent_View @520
+ location (53, 104)
+ label (object SegLabel @522
+ Parent_View @521
+ location (614, 217)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 264
+ justify 0
+ label "+rootContainer"
+ pctDist -0.025000
+ height 160
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751B4C0285"
+ client @520
+ supplier @513
+ vertices (list Points
+ (773, 216)
+ (773, 176)
+ (866, 176))
+ line_style 3
+ origin_attachment (773, 216)
+ terminal_attachment (866, 176)
+ label (object SegLabel @523
+ Parent_View @521
+ location (800, 228)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.300000
+ height 27
+ orientation 1))
+ (object RoleView "$UNNAMED$43" @524
+ Parent_View @520
+ location (53, 104)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751B4C0286"
+ client @520
+ supplier @513
+ vertices (list Points
+ (773, 216)
+ (773, 257)
+ (895, 257)
+ (895, 199))
+ line_style 3
+ origin_attachment (773, 216)
+ terminal_attachment (895, 199))))
+ (object InheritView "" @525
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AD8E60372"
+ client @476
+ supplier @513
+ line_style 3
+ origin_attachment (1367, 361)
+ terminal_attachment (1367, 289)
+ drawSupplier @514)
+ (object InheritView "" @526
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B72D8E200EA"
+ client @474
+ supplier @513
+ line_style 3
+ origin_attachment (752, 361)
+ terminal_attachment (752, 289)
+ drawSupplier @514)
+ (object InheritView "" @527
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0CEA903D2"
+ client @473
+ supplier @513
+ line_style 3
+ origin_attachment (299, 361)
+ terminal_attachment (299, 289)
+ drawSupplier @514)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @528
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (192, 1200)
+ label (object ItemLabel
+ Parent_View @528
+ location (61, 1157)
+ fill_color 13434879
+ nlines 1
+ max_width 262
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 280
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @529
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCC4A0182"
+ client @528
+ supplier @501
+ line_style 3
+ origin_attachment (216, 1145)
+ terminal_attachment (216, 727))
+ (object AssociationViewNew "$UNNAMED$154" @530
+ location (1382, 1425)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DD0C03DB"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$155" @531
+ Parent_View @530
+ location (1190, 225)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DD100304"
+ client @530
+ supplier @505
+ vertices (list Points
+ (1382, 1425)
+ (2147, 1425)
+ (2147, 943)
+ (2067, 943))
+ line_style 3
+ origin_attachment (1382, 1425)
+ terminal_attachment (2067, 943))
+ (object RoleView "incorporatedSchema" @532
+ Parent_View @530
+ location (1190, 225)
+ label (object SegLabel @533
+ Parent_View @532
+ location (445, 1389)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+incorporatedSchema"
+ pctDist 0.706546
+ height 37
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DD100305"
+ client @530
+ supplier @528
+ vertices (list Points
+ (1382, 1425)
+ (225, 1425)
+ (225, 1255))
+ line_style 3
+ origin_attachment (1382, 1425)
+ terminal_attachment (225, 1255)
+ label (object SegLabel @534
+ Parent_View @532
+ location (183, 1392)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.896915
+ height 43
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$152" @535
+ location (1505, 1503)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DCC700EC"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$153" @536
+ Parent_View @535
+ location (1313, 303)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DCCE0042"
+ client @535
+ supplier @509
+ vertices (list Points
+ (1505, 1503)
+ (2188, 1503)
+ (2188, 675)
+ (2059, 675))
+ line_style 3
+ origin_attachment (1505, 1503)
+ terminal_attachment (2059, 675))
+ (object RoleView "resolvedSchema" @537
+ Parent_View @535
+ location (1313, 303)
+ label (object SegLabel @538
+ Parent_View @537
+ location (303, 1472)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 324
+ justify 0
+ label "+resolvedSchema"
+ pctDist 0.733333
+ height 32
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DCCE0043"
+ client @535
+ supplier @528
+ vertices (list Points
+ (1505, 1503)
+ (113, 1503)
+ (113, 1255))
+ line_style 3
+ origin_attachment (1505, 1503)
+ terminal_attachment (113, 1255)
+ label (object SegLabel @539
+ Parent_View @537
+ location (73, 1472)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.867683
+ height 41
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$44" @540
+ location (66, 244)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751C310356"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$45" @541
+ Parent_View @540
+ location (-94, -444)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751C330331"
+ client @540
+ supplier @513
+ vertices (list Points
+ (66, 244)
+ (66, 144)
+ (866, 144))
+ line_style 3
+ origin_attachment (66, 244)
+ terminal_attachment (866, 144))
+ (object RoleView "schema" @542
+ Parent_View @540
+ location (-94, -444)
+ label (object SegLabel @543
+ Parent_View @542
+ location (165, 93)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 168
+ justify 0
+ label "+schema"
+ pctDist -0.168113
+ height 99
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B751C33033B"
+ client @540
+ supplier @528
+ line_style 3
+ origin_attachment (66, 244)
+ terminal_attachment (66, 1145)
+ label (object SegLabel @544
+ Parent_View @542
+ location (136, 184)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 113
+ justify 0
+ label "0..1"
+ pctDist -0.066593
+ height 70
+ orientation 0))))
+ (object InheritView "" @545
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B780BD90059"
+ client @499
+ supplier @513
+ line_style 3
+ origin_attachment (1759, 361)
+ terminal_attachment (1759, 289)
+ drawSupplier @514)
+ (object InheritView "" @546
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E1770116"
+ client @481
+ supplier @473
+ line_style 3
+ origin_attachment (400, 1141)
+ terminal_attachment (400, 561)
+ drawSupplier @497)
+ (object InheritTreeView "" @547
+ location (1012, 837)
+ line_color 3342489
+ fill_color 13434879
+ supplier @475
+ vertices (list Points
+ (1012, 837)
+ (1012, 727)))
+ (object InheritView "" @548
+ stereotype (object SegLabel @549
+ Parent_View @548
+ location (1071, 871)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 243
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.888158
+ height 34
+ orientation 1)
+ line_color 3342489
+ quidu "3B7FD4E20366"
+ client @481
+ supplier @475
+ line_style 3
+ origin_attachment (1037, 1141)
+ terminal_attachment (1037, 837)
+ drawSupplier @547)
+ (object InheritView "" @550
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DB560092"
+ client @505
+ supplier @509
+ line_style 3
+ origin_attachment (1828, 889)
+ terminal_attachment (1828, 819)
+ drawSupplier @510)
+ (object InheritView "" @551
+ stereotype (object SegLabel @552
+ Parent_View @551
+ location (890, 865)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 263
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.581633
+ height 36
+ orientation 0)
+ line_color 3342489
+ quidu "3B7FD4BA023C"
+ client @500
+ supplier @475
+ line_style 3
+ origin_attachment (925, 905)
+ terminal_attachment (925, 837)
+ drawSupplier @547)
+ (object InheritView "" @553
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A26036D"
+ client @500
+ supplier @498
+ line_style 3
+ origin_attachment (588, 905)
+ terminal_attachment (588, 727))))
+ (object ClassDiagram "7. Concrete Attributes"
+ quid "3B9F8F7602C7"
+ title "7. Concrete Attributes"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDFeature" @554
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2144, 1440)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @554
+ location (1938, 1359)
+ fill_color 13434879
+ nlines 1
+ max_width 412
+ justify 0
+ label "XSDFeature")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B537026C"
+ compartment (object Compartment
+ Parent_View @554
+ location (1938, 1419)
+ font (object Font
+ italics TRUE)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 418
+ compartmentItems (list Compartment
+ "+ form : XSDForm"
+ "+ lexicalValue : String"))
+ width 430
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDForm" @555
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2560, 1424)
+ label (object ItemLabel
+ Parent_View @555
+ location (2398, 1365)
+ fill_color 13434879
+ nlines 1
+ max_width 324
+ justify 0
+ label "XSDForm")
+ stereotype (object ItemLabel
+ Parent_View @555
+ location (2398, 1315)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 324
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B9F913B01EB"
+ compartment (object Compartment
+ Parent_View @555
+ location (2398, 1425)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 250)
+ width 342
+ height 242
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDConcreteComponent" @556
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (368, 96)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @556
+ location (40, 37)
+ fill_color 13434879
+ nlines 1
+ max_width 657
+ justify 0
+ label "XSDConcreteComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD7B40065"
+ compartment (object Compartment
+ Parent_View @556
+ location (40, 97)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 484
+ compartmentItems (list Compartment
+ "+ element : DOMElement"))
+ width 675
+ height 143
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDComponent" @557
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (848, 384)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @557
+ location (687, 333)
+ fill_color 13434879
+ nlines 1
+ max_width 322
+ justify 0
+ label "XSDComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846E90029"
+ width 340
+ height 126
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDNamedComponent" @558
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1904, 944)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @558
+ location (1678, 892)
+ fill_color 13434879
+ nlines 1
+ max_width 452
+ justify 0
+ label "XSDNamedComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846D303A4"
+ width 470
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefinableComponent" @559
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1600, 1408)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @559
+ location (1328, 1356)
+ fill_color 13434879
+ nlines 1
+ max_width 544
+ justify 0
+ label "XSDRedefinableComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B7FCA8B020B"
+ width 562
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDScope" @560
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (864, 624)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @560
+ location (745, 573)
+ fill_color 13434879
+ nlines 1
+ max_width 238
+ justify 0
+ label "XSDScope")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B54000F2"
+ width 256
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @561
+ location (850, 537)
+ line_color 3342489
+ fill_color 13434879
+ supplier @557
+ vertices (list Points
+ (850, 537)
+ (850, 447)))
+ (object ClassView "Class" "Logical View::xsd::DOMElement" @562
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1248, 128)
+ label (object ItemLabel
+ Parent_View @562
+ location (873, 90)
+ fill_color 13434879
+ nlines 1
+ max_width 751
+ justify 0
+ label "DOMElement")
+ stereotype (object ItemLabel
+ Parent_View @562
+ location (873, 40)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 751
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 14671839
+ quidu "3B8189790200"
+ compartment (object Compartment
+ Parent_View @562
+ location (873, 150)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 731)
+ width 769
+ height 200
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaDirective" @563
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (288, 640)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @563
+ location (41, 584)
+ fill_color 13434879
+ nlines 1
+ max_width 494
+ justify 0
+ label "XSDSchemaDirective")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD8A202A2"
+ compartment (object Compartment
+ Parent_View @563
+ location (41, 644)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 500)
+ width 512
+ height 136
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaContent" @564
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (240, 384)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @564
+ location (38, 333)
+ fill_color 13434879
+ nlines 1
+ max_width 404
+ justify 0
+ label "XSDSchemaContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B688CB800BA"
+ width 422
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @565
+ location (368, 263)
+ line_color 3342489
+ fill_color 13434879
+ supplier @556
+ vertices (list Points
+ (368, 263)
+ (368, 167)))
+ (object ClassView "Class" "Logical View::xsd::XSDDisallowedSubstitutions" @566
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (992, 1456)
+ label (object ItemLabel
+ Parent_View @566
+ location (723, 1347)
+ fill_color 13434879
+ nlines 1
+ max_width 538
+ justify 0
+ label "XSDDisallowedSubstitutions")
+ stereotype (object ItemLabel
+ Parent_View @566
+ location (723, 1297)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 538
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C5A403DF"
+ compartment (object Compartment
+ Parent_View @566
+ location (723, 1407)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 4
+ max_width 268
+ compartmentItems (list Compartment
+ "+ substitution"
+ "+ extension"
+ "+ restriction"
+ "+ all"))
+ width 556
+ height 342
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDProhibitedSubstitutions" @567
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (880, 1792)
+ label (object ItemLabel
+ Parent_View @567
+ location (614, 1708)
+ fill_color 13434879
+ nlines 1
+ max_width 532
+ justify 0
+ label "XSDProhibitedSubstitutions")
+ stereotype (object ItemLabel
+ Parent_View @567
+ location (614, 1658)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 532
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C5BE0272"
+ compartment (object Compartment
+ Parent_View @567
+ location (614, 1768)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 237
+ compartmentItems (list Compartment
+ "+ extension"
+ "+ restriction"
+ "+ all"))
+ width 550
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @568
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (912, 2096)
+ label (object ItemLabel
+ Parent_View @568
+ location (532, 2040)
+ fill_color 13434879
+ nlines 1
+ max_width 760
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ compartment (object Compartment
+ Parent_View @568
+ location (532, 2100)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 765
+ compartmentItems (list Compartment
+ "<<0..*>> + lexicalFinal : XSDSimpleFinal"))
+ width 778
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleFinal" @569
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (208, 1984)
+ label (object ItemLabel
+ Parent_View @569
+ location (45, 1875)
+ fill_color 13434879
+ nlines 1
+ max_width 326
+ justify 0
+ label "XSDSimpleFinal")
+ stereotype (object ItemLabel
+ Parent_View @569
+ location (45, 1825)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 326
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C25D0295"
+ compartment (object Compartment
+ Parent_View @569
+ location (45, 1935)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 4
+ max_width 237)
+ width 344
+ height 342
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexFinal" @570
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2544, 2016)
+ label (object ItemLabel
+ Parent_View @570
+ location (2362, 1932)
+ fill_color 13434879
+ nlines 1
+ max_width 364
+ justify 0
+ label "XSDComplexFinal")
+ stereotype (object ItemLabel
+ Parent_View @570
+ location (2362, 1882)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 364
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3B97C2CA01CB"
+ compartment (object Compartment
+ Parent_View @570
+ location (2362, 1992)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 237)
+ width 382
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUse" @571
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (352, 1360)
+ label (object ItemLabel
+ Parent_View @571
+ location (41, 1279)
+ fill_color 13434879
+ nlines 1
+ max_width 622
+ justify 0
+ label "XSDAttributeUse")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B68354601A8"
+ compartment (object Compartment
+ Parent_View @571
+ location (41, 1339)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 2
+ max_width 628
+ compartmentItems (list Compartment
+ "+ use : XSDAttributeUseCategory"
+ "+ lexicalValue : String"))
+ width 640
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUseCategory" @572
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (288, 1632)
+ label (object ItemLabel
+ Parent_View @572
+ location (41, 1548)
+ fill_color 13434879
+ nlines 1
+ max_width 494
+ justify 0
+ label "XSDAttributeUseCategory")
+ stereotype (object ItemLabel
+ Parent_View @572
+ location (41, 1498)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 494
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3BA7B0E801A8"
+ compartment (object Compartment
+ Parent_View @572
+ location (41, 1608)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 234)
+ width 512
+ height 292
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDTerm" @573
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2608, 928)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @573
+ location (2498, 881)
+ fill_color 13434879
+ nlines 1
+ max_width 220
+ justify 0
+ label "XSDTerm")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683C5E0174"
+ width 238
+ height 119
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @574
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2240, 1712)
+ label (object ItemLabel
+ Parent_View @574
+ location (1757, 1631)
+ fill_color 13434879
+ nlines 1
+ max_width 966
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ compartment (object Compartment
+ Parent_View @574
+ location (1757, 1691)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 971
+ compartmentItems (list Compartment
+ "<<0..*>> + lexicalFinal : XSDProhibitedSubstitutions"
+ "<<0..*>> + block : XSDDisallowedSubstitutions"))
+ width 984
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @575
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2272, 1152)
+ label (object ItemLabel
+ Parent_View @575
+ location (1828, 1096)
+ fill_color 13434879
+ nlines 1
+ max_width 888
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ compartment (object Compartment
+ Parent_View @575
+ location (1828, 1156)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 893
+ compartmentItems (list Compartment
+ "<<0..*>> + lexicalNamespaceConstraint : String"))
+ width 906
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @576
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1120, 1008)
+ label (object ItemLabel
+ Parent_View @576
+ location (622, 777)
+ fill_color 13434879
+ nlines 1
+ max_width 996
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ compartment (object Compartment
+ Parent_View @576
+ location (622, 837)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 8
+ max_width 1003)
+ width 1014
+ height 486
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDImport" @577
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (240, 960)
+ label (object ItemLabel
+ Parent_View @577
+ location (37, 904)
+ fill_color 13434879
+ nlines 1
+ max_width 406
+ justify 0
+ label "XSDImport")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B688C93017F"
+ compartment (object Compartment
+ Parent_View @577
+ location (37, 964)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 412)
+ width 424
+ height 136
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDFacet" @578
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1344, 656)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @578
+ location (1138, 600)
+ fill_color 13434879
+ nlines 1
+ max_width 412
+ justify 0
+ label "XSDFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C359403D2"
+ compartment (object Compartment
+ Parent_View @578
+ location (1138, 660)
+ font (object Font
+ italics TRUE)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 418
+ compartmentItems (list Compartment
+ "+ lexicalValue : String"))
+ width 430
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @579
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1840, 2048)
+ label (object ItemLabel
+ Parent_View @579
+ location (1410, 1942)
+ fill_color 13434879
+ nlines 1
+ max_width 860
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ compartment (object Compartment
+ Parent_View @579
+ location (1410, 2002)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 865
+ compartmentItems (list Compartment
+ "<<0..*>> + lexicalFinal : XSDComplexFinal"
+ "<<0..*>> + block : XSDProhibitedSubstitutions"
+ "+ mixed : boolean"))
+ width 878
+ height 236
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @580
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1488, 1696)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @580
+ location (1304, 1644)
+ fill_color 13434879
+ nlines 1
+ max_width 368
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 386
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @581
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAB1004D"
+ client @580
+ supplier @559
+ line_style 3
+ origin_attachment (1506, 1632)
+ terminal_attachment (1506, 1472))
+ (object ClassView "Class" "Logical View::xsd::XSDAnnotation" @582
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2208, 704)
+ label (object ItemLabel
+ Parent_View @582
+ location (1758, 598)
+ fill_color 13434879
+ nlines 1
+ max_width 900
+ justify 0
+ label "XSDAnnotation")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDC80233"
+ compartment (object Compartment
+ Parent_View @582
+ location (1758, 658)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 3
+ max_width 906)
+ width 918
+ height 236
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @583
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6848AA01D3"
+ client @573
+ supplier @557
+ line_style 3
+ origin_attachment (2696, 869)
+ terminal_attachment (2696, 537)
+ drawSupplier @561)
+ (object InheritView "" @584
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69EDEE01BF"
+ client @574
+ supplier @554
+ line_style 3
+ origin_attachment (2094, 1619)
+ terminal_attachment (2094, 1533))
+ (object InheritTreeView "" @585
+ location (1487, 1856)
+ line_color 3342489
+ fill_color 13434879
+ supplier @580
+ vertices (list Points
+ (1487, 1856)
+ (1487, 1760)))
+ (object ClassView "Class" "Logical View::xsd::DOMAttr" @586
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2400, 384)
+ label (object ItemLabel
+ Parent_View @586
+ location (2080, 350)
+ fill_color 13434879
+ nlines 1
+ max_width 640
+ justify 0
+ label "DOMAttr")
+ stereotype (object ItemLabel
+ Parent_View @586
+ location (2080, 300)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 640
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 14671839
+ quidu "3BBF8C8901B6"
+ compartment (object Compartment
+ Parent_View @586
+ location (2080, 410)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 646)
+ width 658
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @587
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0D01901F1"
+ client @579
+ supplier @580
+ line_style 3
+ origin_attachment (1734, 1930)
+ terminal_attachment (1734, 1856)
+ drawSupplier @585)
+ (object InheritView "" @588
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D25680259"
+ client @578
+ supplier @557
+ line_style 3
+ origin_attachment (1328, 588)
+ terminal_attachment (1328, 537)
+ drawSupplier @561)
+ (object InheritView "" @589
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69E1770116"
+ client @582
+ supplier @557
+ line_style 3
+ origin_attachment (2190, 586)
+ terminal_attachment (2190, 537)
+ drawSupplier @561)
+ (object InheritView "" @590
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE32102AF"
+ client @563
+ supplier @564
+ line_style 3
+ origin_attachment (222, 572)
+ terminal_attachment (222, 447))
+ (object InheritView "" @591
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AD8E60372"
+ client @564
+ supplier @556
+ line_style 3
+ origin_attachment (260, 321)
+ terminal_attachment (260, 263)
+ drawSupplier @565)
+ (object InheritView "" @592
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AD8D9003E"
+ client @577
+ supplier @563
+ line_style 3
+ origin_attachment (223, 892)
+ terminal_attachment (223, 708))
+ (object InheritView "" @593
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A3A0041"
+ client @575
+ supplier @573
+ line_style 3
+ origin_attachment (2600, 1084)
+ terminal_attachment (2600, 987))
+ (object ClassView "Class" "Logical View::xsd::DOMDocument" @594
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2336, 128)
+ label (object ItemLabel
+ Parent_View @594
+ location (1957, 94)
+ fill_color 13434879
+ nlines 1
+ max_width 758
+ justify 0
+ label "DOMDocument")
+ stereotype (object ItemLabel
+ Parent_View @594
+ location (1957, 44)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 758
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 14671839
+ quidu "3C27850E0381"
+ compartment (object Compartment
+ Parent_View @594
+ location (1957, 154)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 765)
+ width 776
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @595
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0CEA903D2"
+ client @557
+ supplier @556
+ line_style 3
+ origin_attachment (856, 321)
+ terminal_attachment (856, 263)
+ drawSupplier @565)
+ (object ClassView "Class" "Logical View::xsd::DOMNode" @596
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1568, 384)
+ label (object ItemLabel
+ Parent_View @596
+ location (1234, 350)
+ fill_color 13434879
+ nlines 1
+ max_width 668
+ justify 0
+ label "DOMNode")
+ stereotype (object ItemLabel
+ Parent_View @596
+ location (1234, 300)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 668
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 14671839
+ quidu "3BFE64A50117"
+ compartment (object Compartment
+ Parent_View @596
+ location (1234, 410)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 675)
+ width 686
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object InheritView "" @597
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCD640231"
+ client @560
+ supplier @557
+ line_style 3
+ origin_attachment (850, 561)
+ terminal_attachment (850, 537)
+ drawSupplier @561)
+ (object InheritView "" @598
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B72D7BB0349"
+ client @571
+ supplier @557
+ line_style 3
+ origin_attachment (575, 1267)
+ terminal_attachment (575, 537)
+ drawSupplier @561)
+ (object InheritView "" @599
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0CEA20197"
+ client @558
+ supplier @557
+ line_style 3
+ origin_attachment (1694, 880)
+ terminal_attachment (1694, 537)
+ drawSupplier @561)
+ (object InheritView "" @600
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCC4A0182"
+ client @576
+ supplier @560
+ line_style 3
+ origin_attachment (856, 765)
+ terminal_attachment (856, 687))
+ (object InheritTreeView "" @601
+ location (1703, 1290)
+ line_color 3342489
+ fill_color 13434879
+ supplier @558
+ vertices (list Points
+ (1703, 1290)
+ (1703, 1008)))
+ (object InheritView "" @602
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A26036D"
+ client @559
+ supplier @558
+ line_style 3
+ origin_attachment (1503, 1344)
+ terminal_attachment (1503, 1290)
+ drawSupplier @601)
+ (object InheritView "" @603
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A2C0307"
+ client @554
+ supplier @558
+ line_style 3
+ origin_attachment (2093, 1347)
+ terminal_attachment (2093, 1290)
+ drawSupplier @601)
+ (object InheritView "" @604
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A1302A2"
+ client @568
+ supplier @580
+ line_style 3
+ origin_attachment (1253, 2028)
+ terminal_attachment (1253, 1856)
+ drawSupplier @585)))
+ (object ClassDiagram "8. Concrete Containment"
+ quid "3B6A8097027A"
+ title "8. Concrete Containment"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDNotationDeclaration" @605
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2672, 992)
+ label (object ItemLabel
+ Parent_View @605
+ location (2439, 949)
+ fill_color 13434879
+ nlines 1
+ max_width 466
+ justify 0
+ label "XSDNotationDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66EDAA021C"
+ width 484
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaDirective" @606
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2640, 576)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @606
+ location (2431, 533)
+ fill_color 13434879
+ nlines 1
+ max_width 418
+ justify 0
+ label "XSDSchemaDirective")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD8A202A2"
+ width 436
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefine" @607
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2144, 784)
+ label (object ItemLabel
+ Parent_View @607
+ location (2013, 741)
+ fill_color 13434879
+ nlines 1
+ max_width 262
+ justify 0
+ label "XSDRedefine")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B688C9B02AD"
+ width 280
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefineContent" @608
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2064, 576)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @608
+ location (1854, 533)
+ fill_color 13434879
+ nlines 1
+ max_width 420
+ justify 0
+ label "XSDRedefineContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AE2060172"
+ width 438
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @609
+ location (1943, 868)
+ line_color 3342489
+ fill_color 13434879
+ supplier @608
+ vertices (list Points
+ (1943, 868)
+ (1943, 631)))
+ (object AssociationViewNew "$UNNAMED$100" @610
+ location (2125, 680)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE8240051"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$101" @611
+ Parent_View @610
+ location (157, 344)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE82602AD"
+ client @610
+ supplier @607
+ line_style 3
+ origin_attachment (2125, 680)
+ terminal_attachment (2125, 729))
+ (object RoleView "contents" @612
+ Parent_View @610
+ location (157, 344)
+ label (object SegLabel @613
+ Parent_View @612
+ location (2255, 671)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+contents"
+ pctDist 0.175439
+ height 130
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE82602B7"
+ client @610
+ supplier @608
+ line_style 3
+ origin_attachment (2125, 680)
+ terminal_attachment (2125, 631)
+ label (object SegLabel @614
+ Parent_View @612
+ location (2067, 671)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.175439
+ height 59
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDTerm" @615
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (256, 320)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @615
+ location (148, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 216
+ justify 0
+ label "XSDTerm")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683C5E0174"
+ width 234
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @616
+ location (272, 465)
+ line_color 3342489
+ fill_color 13434879
+ supplier @615
+ vertices (list Points
+ (272, 465)
+ (272, 375)))
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @617
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2656, 1168)
+ label (object ItemLabel
+ Parent_View @617
+ location (2372, 1121)
+ fill_color 13434879
+ nlines 1
+ max_width 569
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ width 587
+ height 118
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroup" @618
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (256, 576)
+ label (object ItemLabel
+ Parent_View @618
+ location (89, 533)
+ fill_color 13434879
+ nlines 1
+ max_width 334
+ justify 0
+ label "XSDModelGroup")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6834E00291"
+ width 352
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$88" @619
+ location (1170, 1356)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837AC025A"
+ roleview_list (list RoleViews
+ (object RoleView "modelGroup" @620
+ Parent_View @619
+ location (866, -20)
+ label (object SegLabel @621
+ Parent_View @620
+ location (269, 1389)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 252
+ justify 0
+ label "+modelGroup"
+ pctDist 0.534044
+ height 33
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837AD0339"
+ client @619
+ supplier @618
+ vertices (list Points
+ (1170, 1356)
+ (206, 1356)
+ (206, 631))
+ line_style 3
+ origin_attachment (1170, 1356)
+ terminal_attachment (206, 631)
+ label (object SegLabel @622
+ Parent_View @620
+ location (226, 1322)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.559146
+ height 35
+ orientation 1))
+ (object RoleView "$UNNAMED$89" @623
+ Parent_View @619
+ location (866, -20)
+ label (object SegLabel @624
+ Parent_View @623
+ location (2521, 1398)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6837AD0338"
+ client @619
+ supplier @617
+ vertices (list Points
+ (1170, 1356)
+ (2731, 1356)
+ (2731, 1227))
+ line_style 3
+ origin_attachment (1170, 1356)
+ terminal_attachment (2731, 1227))))
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @625
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (160, 1696)
+ label (object ItemLabel
+ Parent_View @625
+ location (35, 1653)
+ fill_color 13434879
+ nlines 1
+ max_width 250
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 268
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$82" @626
+ location (122, 1136)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6BCEB102F8"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$83" @627
+ Parent_View @626
+ location (-630, -256)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6BCEB6001B"
+ client @626
+ supplier @618
+ line_style 3
+ origin_attachment (122, 1136)
+ terminal_attachment (122, 631))
+ (object RoleView "contents" @628
+ Parent_View @626
+ location (-630, -256)
+ label (object SegLabel @629
+ Parent_View @628
+ location (223, 1515)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+contents"
+ pctDist 0.750495
+ height 101
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6BCEB60025"
+ client @626
+ supplier @625
+ line_style 3
+ origin_attachment (122, 1136)
+ terminal_attachment (122, 1641)
+ label (object SegLabel @630
+ Parent_View @628
+ location (180, 1581)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.881188
+ height 58
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDParticleContent" @631
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (288, 80)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @631
+ location (41, 42)
+ fill_color 13434879
+ nlines 1
+ max_width 495
+ justify 0
+ label "XSDParticleContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6BD22300C6"
+ width 513
+ height 100
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$94" @632
+ location (47, 885)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B47150119"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$95" @633
+ Parent_View @632
+ location (-289, 821)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B471A03AB"
+ client @632
+ supplier @625
+ line_style 3
+ origin_attachment (47, 885)
+ terminal_attachment (47, 1641))
+ (object RoleView "content" @634
+ Parent_View @632
+ location (-289, 821)
+ label (object SegLabel @635
+ Parent_View @634
+ location (142, 189)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 168
+ justify 0
+ label "+content"
+ pctDist 0.921854
+ height 95
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B471A03B5"
+ client @632
+ supplier @631
+ line_style 3
+ origin_attachment (47, 885)
+ terminal_attachment (47, 130)
+ label (object SegLabel @636
+ Parent_View @634
+ location (28, 192)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.917881
+ height 19
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeUse" @637
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1424, 896)
+ label (object ItemLabel
+ Parent_View @637
+ location (1252, 849)
+ fill_color 13434879
+ nlines 1
+ max_width 345
+ justify 0
+ label "XSDAttributeUse")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B68354601A8"
+ width 363
+ height 119
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @638
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1408, 1168)
+ label (object ItemLabel
+ Parent_View @638
+ location (1175, 1125)
+ fill_color 13434879
+ nlines 1
+ max_width 466
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 484
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$24" @639
+ location (1319, 1034)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6F1DE9018A"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$25" @640
+ Parent_View @639
+ location (-57, -102)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6F1DEA036C"
+ client @639
+ supplier @637
+ line_style 3
+ origin_attachment (1319, 1034)
+ terminal_attachment (1319, 955))
+ (object RoleView "content" @641
+ Parent_View @639
+ location (-57, -102)
+ label (object SegLabel @642
+ Parent_View @641
+ location (1439, 1039)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 168
+ justify 0
+ label "+content"
+ pctDist 0.073171
+ height 120
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6F1DEA0380"
+ client @639
+ supplier @638
+ line_style 3
+ origin_attachment (1319, 1034)
+ terminal_attachment (1319, 1113)
+ label (object SegLabel @643
+ Parent_View @641
+ location (1279, 1031)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.040816
+ height 41
+ orientation 1))))
+ (object ClassView "Class" "Logical View::xsd::XSDConstrainingFacet" @644
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2080, 1696)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @644
+ location (1855, 1653)
+ fill_color 13434879
+ nlines 1
+ max_width 450
+ justify 0
+ label "XSDConstrainingFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C6B340093"
+ width 468
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @645
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1280, 1696)
+ label (object ItemLabel
+ Parent_View @645
+ location (1035, 1653)
+ fill_color 13434879
+ nlines 1
+ max_width 490
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ width 508
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$120" @646
+ location (1351, 1840)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D5CA50112"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$121" @647
+ Parent_View @646
+ location (-297, 224)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D5CA703B4"
+ client @646
+ supplier @645
+ vertices (list Points
+ (1351, 1840)
+ (1294, 1840)
+ (1294, 1751))
+ line_style 3
+ origin_attachment (1351, 1840)
+ terminal_attachment (1294, 1751))
+ (object RoleView "contents" @648
+ Parent_View @646
+ location (-297, 224)
+ label (object SegLabel @649
+ Parent_View @648
+ location (1517, 1806)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+contents"
+ pctDist 0.632653
+ height 108
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D5CA703C8"
+ client @646
+ supplier @645
+ vertices (list Points
+ (1351, 1840)
+ (1409, 1840)
+ (1409, 1751))
+ line_style 3
+ origin_attachment (1351, 1840)
+ terminal_attachment (1409, 1751)
+ label (object SegLabel @650
+ Parent_View @648
+ location (1361, 1801)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.072848
+ height 40
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$4" @651
+ location (1190, 1432)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6890D6006F"
+ roleview_list (list RoleViews
+ (object RoleView "anonymousTypeDefinition" @652
+ Parent_View @651
+ location (774, -1832)
+ label (object SegLabel @653
+ Parent_View @652
+ location (1462, 1525)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 492
+ justify 0
+ label "+anonymousTypeDefinition"
+ pctDist 0.444976
+ height 272
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6890D60318"
+ client @651
+ supplier @645
+ line_style 3
+ origin_attachment (1190, 1432)
+ terminal_attachment (1190, 1641)
+ label (object SegLabel @654
+ Parent_View @652
+ location (1143, 1527)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.454545
+ height 47
+ orientation 1))
+ (object RoleView "$UNNAMED$5" @655
+ Parent_View @651
+ location (774, -1832)
+ label (object SegLabel @656
+ Parent_View @655
+ location (1149, 1266)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6890D6030E"
+ client @651
+ supplier @638
+ line_style 3
+ origin_attachment (1190, 1432)
+ terminal_attachment (1190, 1223))))
+ (object AssociationViewNew "$UNNAMED$122" @657
+ location (1690, 1684)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C35AD0374"
+ roleview_list (list RoleViews
+ (object RoleView "facetContents" @658
+ Parent_View @657
+ location (-326, -12)
+ label (object SegLabel @659
+ Parent_View @658
+ location (1695, 1731)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 276
+ justify 0
+ label "+facetContents"
+ pctDist 0.032051
+ height 47
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C35AF0010"
+ client @657
+ supplier @644
+ line_style 3
+ origin_attachment (1690, 1684)
+ terminal_attachment (1846, 1684)
+ label (object SegLabel @660
+ Parent_View @658
+ location (1756, 1644)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 94
+ justify 0
+ label "0..*"
+ pctDist 0.420732
+ height 41
+ orientation 0))
+ (object RoleView "$UNNAMED$123" @661
+ Parent_View @657
+ location (-326, -12)
+ label (object SegLabel @662
+ Parent_View @661
+ location (1566, 1643)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6C35AF0006"
+ client @657
+ supplier @645
+ line_style 3
+ origin_attachment (1690, 1684)
+ terminal_attachment (1534, 1684))))
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaCompositor" @663
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2624, 784)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @663
+ location (2388, 741)
+ fill_color 13434879
+ nlines 1
+ max_width 472
+ justify 0
+ label "XSDSchemaCompositor")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C21DB4102AE"
+ width 490
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaContent" @664
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1312, 320)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @664
+ location (1108, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 408
+ justify 0
+ label "XSDSchemaContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B688CB800BA"
+ width 426
+ height 110
+ annotation 8)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @665
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (688, 320)
+ label (object ItemLabel
+ Parent_View @665
+ location (557, 277)
+ fill_color 13434879
+ nlines 1
+ max_width 262
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 280
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$102" @666
+ location (963, 319)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B688E6B003D"
+ roleview_list (list RoleViews
+ (object RoleView "contents" @667
+ Parent_View @666
+ location (595, -17)
+ label (object SegLabel @668
+ Parent_View @667
+ location (974, 361)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+contents"
+ pctDist 0.081081
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B688E6C0111"
+ client @666
+ supplier @664
+ line_style 3
+ origin_attachment (963, 319)
+ terminal_attachment (1099, 319)
+ label (object SegLabel @669
+ Parent_View @667
+ location (1016, 290)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.396396
+ height 30
+ orientation 0))
+ (object RoleView "$UNNAMED$103" @670
+ Parent_View @666
+ location (595, -17)
+ label (object SegLabel @671
+ Parent_View @670
+ location (855, 361)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B688E6C0107"
+ client @666
+ supplier @665
+ line_style 3
+ origin_attachment (963, 319)
+ terminal_attachment (828, 319))))
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @672
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2160, 992)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @672
+ location (1974, 949)
+ fill_color 13434879
+ nlines 1
+ max_width 372
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 390
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @673
+ location (2322, 1593)
+ line_color 3342489
+ fill_color 13434879
+ supplier @672
+ vertices (list Points
+ (2322, 1593)
+ (2322, 1047)))
+ (object InheritView "" @674
+ stereotype (object SegLabel @675
+ Parent_View @674
+ location (2146, 905)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 225
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.460000
+ height 5
+ orientation 0)
+ line_color 3342489
+ quidu "3B6AE2F5013A"
+ client @672
+ supplier @608
+ line_style 3
+ origin_attachment (2150, 937)
+ terminal_attachment (2150, 868)
+ drawSupplier @609)
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @676
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (832, 576)
+ label (object ItemLabel
+ Parent_View @676
+ location (510, 532)
+ fill_color 13434879
+ nlines 1
+ max_width 644
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ width 662
+ height 112
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$48" @677
+ location (1498, 1431)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B68911401AF"
+ roleview_list (list RoleViews
+ (object RoleView "anonymousTypeDefinition" @678
+ Parent_View @677
+ location (1038, -1810)
+ label (object SegLabel @679
+ Parent_View @678
+ location (2027, 1472)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 492
+ justify 0
+ label "+anonymousTypeDefinition"
+ pctDist 0.454389
+ height 41
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6891150017"
+ client @677
+ supplier @672
+ vertices (list Points
+ (1498, 1431)
+ (2281, 1431)
+ (2281, 1047))
+ line_style 3
+ origin_attachment (1498, 1431)
+ terminal_attachment (2281, 1047)
+ label (object SegLabel @680
+ Parent_View @678
+ location (2204, 1397)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.605419
+ height 35
+ orientation 0))
+ (object RoleView "$UNNAMED$49" @681
+ Parent_View @677
+ location (1038, -1810)
+ label (object SegLabel @682
+ Parent_View @681
+ location (1090, 866)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6891150016"
+ client @677
+ supplier @676
+ vertices (list Points
+ (1498, 1431)
+ (1131, 1431)
+ (1131, 632))
+ line_style 3
+ origin_attachment (1498, 1431)
+ terminal_attachment (1131, 632))))
+ (object ClassView "Class" "Logical View::xsd::XSDXPathDefinition" @683
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (848, 1168)
+ label (object ItemLabel
+ Parent_View @683
+ location (655, 1125)
+ fill_color 13434879
+ nlines 1
+ max_width 386
+ justify 0
+ label "XSDXPathDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6D83BB0355"
+ width 404
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDIdentityConstraintDefinition" @684
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (800, 896)
+ label (object ItemLabel
+ Parent_View @684
+ location (505, 853)
+ fill_color 13434879
+ nlines 1
+ max_width 590
+ justify 0
+ label "XSDIdentityConstraintDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B2603A2"
+ width 608
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$52" @685
+ location (534, 736)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833EF0160"
+ roleview_list (list RoleViews
+ (object RoleView "identityConstraintDefinitions" @686
+ Parent_View @685
+ location (86, -2144)
+ label (object SegLabel @687
+ Parent_View @686
+ location (820, 748)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 550
+ justify 0
+ label "+identityConstraintDefinitions"
+ pctDist 0.111111
+ height 286
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833F00299"
+ client @685
+ supplier @684
+ line_style 3
+ origin_attachment (534, 736)
+ terminal_attachment (534, 841)
+ label (object SegLabel @688
+ Parent_View @686
+ location (595, 807)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.675926
+ height 61
+ orientation 0))
+ (object RoleView "$UNNAMED$53" @689
+ Parent_View @685
+ location (86, -2144)
+ label (object SegLabel @690
+ Parent_View @689
+ location (576, 653)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6833F00298"
+ client @685
+ supplier @676
+ line_style 3
+ origin_attachment (534, 736)
+ terminal_attachment (534, 632))))
+ (object AssociationViewNew "$UNNAMED$72" @691
+ location (900, 1032)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D3D003E"
+ roleview_list (list RoleViews
+ (object RoleView "selector" @692
+ Parent_View @691
+ location (84, 120)
+ label (object SegLabel @693
+ Parent_View @692
+ location (1013, 1042)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 168
+ justify 0
+ label "+selector"
+ pctDist 0.123288
+ height 113
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D3E0234"
+ client @691
+ supplier @683
+ line_style 3
+ origin_attachment (900, 1032)
+ terminal_attachment (900, 1113)
+ label (object SegLabel @694
+ Parent_View @692
+ location (859, 1040)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.095890
+ height 42
+ orientation 1))
+ (object RoleView "$UNNAMED$73" @695
+ Parent_View @691
+ location (84, 120)
+ label (object SegLabel @696
+ Parent_View @695
+ location (859, 968)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D3E022A"
+ client @691
+ supplier @684
+ line_style 3
+ origin_attachment (900, 1032)
+ terminal_attachment (900, 951))))
+ (object AssociationViewNew "$UNNAMED$74" @697
+ location (700, 1032)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D330025"
+ roleview_list (list RoleViews
+ (object RoleView "fields" @698
+ Parent_View @697
+ location (-116, 120)
+ label (object SegLabel @699
+ Parent_View @698
+ location (616, 1036)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 120
+ justify 0
+ label "+fields"
+ pctDist 0.054795
+ height 85
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D330379"
+ client @697
+ supplier @683
+ line_style 3
+ origin_attachment (700, 1032)
+ terminal_attachment (700, 1113)
+ label (object SegLabel @700
+ Parent_View @698
+ location (771, 1042)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..*"
+ pctDist 0.123077
+ height 71
+ orientation 0))
+ (object RoleView "$UNNAMED$75" @701
+ Parent_View @697
+ location (-116, 120)
+ label (object SegLabel @702
+ Parent_View @701
+ location (659, 968)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6D8D330365"
+ client @697
+ supplier @684
+ line_style 3
+ origin_attachment (700, 1032)
+ terminal_attachment (700, 951))))
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeContent" @703
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (752, 1440)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @703
+ location (500, 1397)
+ fill_color 13434879
+ nlines 1
+ max_width 504
+ justify 0
+ label "XSDComplexTypeContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B683BA00196"
+ width 522
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @704
+ location (550, 1590)
+ line_color 3342489
+ fill_color 13434879
+ supplier @703
+ vertices (list Points
+ (550, 1590)
+ (550, 1495)))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupContent" @705
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1504, 576)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @705
+ location (1240, 533)
+ fill_color 13434879
+ nlines 1
+ max_width 528
+ justify 0
+ label "XSDAttributeGroupContent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6940200089"
+ width 546
+ height 110
+ annotation 8)
+ (object InheritTreeView "" @706
+ location (1406, 765)
+ line_color 3342489
+ fill_color 13434879
+ supplier @705
+ vertices (list Points
+ (1406, 765)
+ (1406, 631)))
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @707
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2656, 1696)
+ label (object ItemLabel
+ Parent_View @707
+ location (2393, 1653)
+ fill_color 13434879
+ nlines 1
+ max_width 526
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ width 544
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$30" @708
+ location (1614, 1868)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6FDDD70113"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$31" @709
+ Parent_View @708
+ location (526, 476)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6FDDDA026B"
+ client @708
+ supplier @707
+ vertices (list Points
+ (1614, 1868)
+ (2500, 1868)
+ (2500, 1751))
+ line_style 3
+ origin_attachment (1614, 1868)
+ terminal_attachment (2500, 1751))
+ (object RoleView "content" @710
+ Parent_View @708
+ location (526, 476)
+ label (object SegLabel @711
+ Parent_View @710
+ location (896, 1787)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 168
+ justify 0
+ label "+content"
+ pctDist 0.709870
+ height 89
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6FDDDA0275"
+ client @708
+ supplier @703
+ vertices (list Points
+ (1614, 1868)
+ (984, 1868)
+ (984, 1495))
+ line_style 3
+ origin_attachment (1614, 1868)
+ terminal_attachment (984, 1495)
+ label (object SegLabel @712
+ Parent_View @710
+ location (1042, 1824)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 72
+ justify 0
+ label "0..1"
+ pctDist 0.571286
+ height 45
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$36" @713
+ location (2927, 387)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B698E360386"
+ roleview_list (list RoleViews
+ (object RoleView "attributeContents" @714
+ Parent_View @713
+ location (2463, -3757)
+ label (object SegLabel @715
+ Parent_View @714
+ location (1915, 357)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+attributeContents"
+ pctDist 0.773060
+ height 31
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B698E38007C"
+ client @713
+ supplier @705
+ vertices (list Points
+ (2927, 387)
+ (1750, 387)
+ (1750, 521))
+ line_style 3
+ origin_attachment (2927, 387)
+ terminal_attachment (1750, 521)
+ label (object SegLabel @716
+ Parent_View @714
+ location (1804, 425)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.857247
+ height 38
+ orientation 0))
+ (object RoleView "$UNNAMED$37" @717
+ Parent_View @713
+ location (2463, -3757)
+ label (object SegLabel @718
+ Parent_View @717
+ location (2946, 1448)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B698E380072"
+ client @713
+ supplier @707
+ vertices (list Points
+ (2927, 387)
+ (2987, 387)
+ (2987, 1671)
+ (2928, 1671))
+ line_style 3
+ origin_attachment (2927, 387)
+ terminal_attachment (2928, 1671))))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @719
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1968, 1168)
+ label (object ItemLabel
+ Parent_View @719
+ location (1699, 1125)
+ fill_color 13434879
+ nlines 1
+ max_width 538
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ width 556
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$12" @720
+ location (1750, 872)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69404E0067"
+ roleview_list (list RoleViews
+ (object RoleView "contents" @721
+ Parent_View @720
+ location (1462, -2392)
+ label (object SegLabel @722
+ Parent_View @721
+ location (1640, 691)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+contents"
+ pctDist 0.751037
+ height 110
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69405002A5"
+ client @720
+ supplier @705
+ line_style 3
+ origin_attachment (1750, 872)
+ terminal_attachment (1750, 631)
+ label (object SegLabel @723
+ Parent_View @721
+ location (1814, 695)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.734440
+ height 64
+ orientation 1))
+ (object RoleView "$UNNAMED$13" @724
+ Parent_View @720
+ location (1462, -2392)
+ label (object SegLabel @725
+ Parent_View @724
+ location (1709, 1065)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B694050029B"
+ client @720
+ supplier @719
+ line_style 3
+ origin_attachment (1750, 872)
+ terminal_attachment (1750, 1113))))
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @726
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (416, 1168)
+ label (object ItemLabel
+ Parent_View @726
+ location (279, 1125)
+ fill_color 13434879
+ nlines 1
+ max_width 274
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ width 292
+ height 110
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$144" @727
+ location (1252, 1896)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BEBDC870247"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$145" @728
+ Parent_View @727
+ location (708, 1288)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BEBDC8C02F9"
+ client @727
+ supplier @707
+ vertices (list Points
+ (1252, 1896)
+ (2603, 1896)
+ (2603, 1751))
+ line_style 3
+ origin_attachment (1252, 1896)
+ terminal_attachment (2603, 1751))
+ (object RoleView "attributeWildcardContent" @729
+ Parent_View @727
+ location (708, 1288)
+ label (object SegLabel @730
+ Parent_View @729
+ location (682, 1858)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 480
+ justify 0
+ label "+attributeWildcardContent"
+ pctDist 0.381142
+ height 39
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BEBDC8C0303"
+ client @727
+ supplier @726
+ vertices (list Points
+ (1252, 1896)
+ (428, 1896)
+ (428, 1223))
+ line_style 3
+ origin_attachment (1252, 1896)
+ terminal_attachment (428, 1223)
+ label (object SegLabel @731
+ Parent_View @729
+ location (382, 1860)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.575033
+ height 47
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$16" @732
+ location (1199, 1321)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C275D320220"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$17" @733
+ Parent_View @732
+ location (655, 713)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C275D3C010C"
+ client @732
+ supplier @719
+ vertices (list Points
+ (1199, 1321)
+ (1897, 1321)
+ (1897, 1223))
+ line_style 3
+ origin_attachment (1199, 1321)
+ terminal_attachment (1897, 1223))
+ (object RoleView "attributeWildcardContent" @734
+ Parent_View @732
+ location (655, 713)
+ label (object SegLabel @735
+ Parent_View @734
+ location (857, 1279)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 480
+ justify 0
+ label "+attributeWildcardContent"
+ pctDist 0.429569
+ height 43
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C275D3C010D"
+ client @732
+ supplier @726
+ vertices (list Points
+ (1199, 1321)
+ (500, 1321)
+ (500, 1223))
+ line_style 3
+ origin_attachment (1199, 1321)
+ terminal_attachment (500, 1223)
+ label (object SegLabel @736
+ Parent_View @734
+ location (576, 1279)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.782305
+ height 43
+ orientation 1))))
+ (object InheritView "" @737
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0D01901F1"
+ client @707
+ supplier @672
+ line_style 3
+ origin_attachment (2606, 1641)
+ terminal_attachment (2606, 1593)
+ drawSupplier @673)
+ (object InheritView "" @738
+ stereotype (object SegLabel @739
+ Parent_View @738
+ location (759, 495)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 243
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.446429
+ height 6
+ orientation 1)
+ line_color 3342489
+ quidu "3B685F17002E"
+ client @676
+ supplier @615
+ line_style 3
+ origin_attachment (753, 520)
+ terminal_attachment (753, 465)
+ drawSupplier @616)
+ (object InheritView "" @740
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A1302A2"
+ client @645
+ supplier @672
+ line_style 3
+ origin_attachment (1409, 1641)
+ terminal_attachment (1409, 1593)
+ drawSupplier @673)
+ (object InheritView "" @741
+ stereotype (object SegLabel @742
+ Parent_View @741
+ location (759, 1591)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 219
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.980392
+ height 385
+ orientation 0)
+ line_color 3342489
+ quidu "3B685F55032B"
+ client @645
+ supplier @703
+ line_style 3
+ origin_attachment (1144, 1641)
+ terminal_attachment (1144, 1590)
+ drawSupplier @704)
+ (object InheritView "" @743
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A640279"
+ client @618
+ supplier @615
+ line_style 3
+ origin_attachment (166, 521)
+ terminal_attachment (166, 465)
+ drawSupplier @616)
+ (object InheritTreeView "" @744
+ location (431, 222)
+ line_color 3342489
+ fill_color 13434879
+ supplier @631
+ vertices (list Points
+ (431, 222)
+ (431, 130)))
+ (object InheritView "" @745
+ stereotype (object SegLabel @746
+ Parent_View @745
+ location (361, 224)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 237
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.976744
+ height 86
+ orientation 1)
+ line_color 3342489
+ quidu "3B6BD2440069"
+ client @615
+ supplier @631
+ line_style 3
+ origin_attachment (275, 265)
+ terminal_attachment (275, 222)
+ drawSupplier @744)
+ (object InheritTreeView "" @747
+ location (1309, 465)
+ line_color 3342489
+ fill_color 13434879
+ supplier @664
+ vertices (list Points
+ (1309, 465)
+ (1309, 375)))
+ (object InheritView "" @748
+ stereotype (object SegLabel @749
+ Parent_View @748
+ location (941, 495)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 225
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.464286
+ height 10
+ orientation 1)
+ line_color 3342489
+ quidu "3B688E660339"
+ client @676
+ supplier @664
+ line_style 3
+ origin_attachment (931, 520)
+ terminal_attachment (931, 465)
+ drawSupplier @747)
+ (object InheritView "" @750
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6848FC01E7"
+ client @625
+ supplier @703
+ line_style 3
+ origin_attachment (250, 1641)
+ terminal_attachment (250, 1590)
+ drawSupplier @704)
+ (object InheritView "" @751
+ stereotype (object SegLabel @752
+ Parent_View @751
+ location (1205, 493)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 212
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.958333
+ height 8
+ orientation 1)
+ line_color 3342489
+ quidu "3B688E6103BE"
+ client @638
+ supplier @664
+ line_style 3
+ origin_attachment (1197, 1113)
+ terminal_attachment (1197, 465)
+ drawSupplier @747)
+ (object InheritView "" @753
+ stereotype (object SegLabel @754
+ Parent_View @753
+ location (1951, 905)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 225
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.848980
+ height 73
+ orientation 1)
+ line_color 3342489
+ quidu "3B6AE2EB02A8"
+ client @719
+ supplier @608
+ line_style 3
+ origin_attachment (1878, 1113)
+ terminal_attachment (1878, 868)
+ drawSupplier @609)
+ (object InheritView "" @755
+ stereotype (object SegLabel @756
+ Parent_View @755
+ location (1642, 807)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 187
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.879310
+ height 61
+ orientation 0)
+ line_color 3342489
+ quidu "3B69403A0221"
+ client @719
+ supplier @705
+ line_style 3
+ origin_attachment (1703, 1113)
+ terminal_attachment (1703, 765)
+ drawSupplier @706)
+ (object InheritView "" @757
+ stereotype (object SegLabel @758
+ Parent_View @757
+ location (1354, 801)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 225
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.500000
+ height 70
+ orientation 1)
+ line_color 3342489
+ quidu "3B72D737038F"
+ client @637
+ supplier @705
+ line_style 3
+ origin_attachment (1284, 837)
+ terminal_attachment (1284, 765)
+ drawSupplier @706)
+ (object InheritView "" @759
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DB640240"
+ client @607
+ supplier @663
+ line_style 3
+ origin_attachment (2284, 762)
+ terminal_attachment (2379, 762))
+ (object InheritView "" @760
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE32102AF"
+ client @606
+ supplier @664
+ line_style 3
+ origin_attachment (2637, 521)
+ terminal_attachment (2637, 465)
+ drawSupplier @747)
+ (object InheritView "" @761
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DB560092"
+ client @663
+ supplier @606
+ line_style 3
+ origin_attachment (2637, 729)
+ terminal_attachment (2637, 631))
+ (object InheritView "" @762
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6AE2B301D5"
+ client @608
+ supplier @664
+ line_style 3
+ origin_attachment (1950, 521)
+ terminal_attachment (1950, 465)
+ drawSupplier @747)
+ (object InheritView "" @763
+ stereotype (object SegLabel @764
+ Parent_View @763
+ location (2821, 897)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 181
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.087719
+ height 76
+ orientation 0)
+ line_color 3342489
+ quidu "3B688E4F023C"
+ client @605
+ supplier @664
+ line_style 3
+ origin_attachment (2896, 937)
+ terminal_attachment (2896, 465)
+ drawSupplier @747)
+ (object InheritView "" @765
+ stereotype (object SegLabel @766
+ Parent_View @765
+ location (2313, 904)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 207
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.850622
+ height 68
+ orientation 0)
+ line_color 3342489
+ quidu "3B6AE2E20381"
+ client @617
+ supplier @608
+ line_style 3
+ origin_attachment (2381, 1109)
+ terminal_attachment (2381, 868)
+ drawSupplier @609)
+ (object InheritView "" @767
+ stereotype (object SegLabel @768
+ Parent_View @767
+ location (2878, 269)
+ font (object Font
+ size 8)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 238
+ justify 0
+ label "<<mixin>>"
+ pctDist 0.946667
+ height 66
+ orientation 0)
+ line_color 3342489
+ quidu "3B6BD2550385"
+ client @617
+ supplier @631
+ line_style 3
+ origin_attachment (2943, 1109)
+ terminal_attachment (2943, 222)
+ drawSupplier @744)
+ (object InheritView "" @769
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A3A0041"
+ client @726
+ supplier @615
+ line_style 3
+ origin_attachment (462, 1113)
+ terminal_attachment (462, 465)
+ drawSupplier @616)))
+ (object ClassDiagram "9. Concrete Schema Composition"
+ quid "3C25EB7A038C"
+ title "9. Concrete Schema Composition"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @770
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (304, 1536)
+ label (object ItemLabel
+ Parent_View @770
+ location (73, 1493)
+ fill_color 13434879
+ nlines 1
+ max_width 462
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ width 480
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$54" @771
+ location (228, 1695)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B41E60251"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$55" @772
+ Parent_View @771
+ location (-476, -385)
+ label (object SegLabel @773
+ Parent_View @772
+ location (217, 1623)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B41EA02F7"
+ client @771
+ supplier @770
+ vertices (list Points
+ (228, 1695)
+ (175, 1695)
+ (175, 1591))
+ line_style 3
+ origin_attachment (228, 1695)
+ terminal_attachment (175, 1591))
+ (object RoleView "resolvedElementDeclaration" @774
+ Parent_View @771
+ location (-476, -385)
+ label (object SegLabel @775
+ Parent_View @774
+ location (329, 1740)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 528
+ justify 0
+ label "+resolvedElementDeclaration"
+ pctDist 1.924528
+ height 45
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B41EA030B"
+ client @771
+ supplier @770
+ vertices (list Points
+ (228, 1695)
+ (281, 1695)
+ (281, 1591))
+ line_style 3
+ origin_attachment (228, 1695)
+ terminal_attachment (281, 1591)
+ label (object SegLabel @776
+ Parent_View @774
+ location (229, 1646)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.005714
+ height 50
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @777
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1040, 1536)
+ label (object ItemLabel
+ Parent_View @777
+ location (790, 1493)
+ fill_color 13434879
+ nlines 1
+ max_width 500
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ width 518
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$90" @778
+ location (952, 1698)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B42450398"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$91" @779
+ Parent_View @778
+ location (-1288, -318)
+ label (object SegLabel @780
+ Parent_View @779
+ location (860, 1623)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B4249038A"
+ client @778
+ supplier @777
+ vertices (list Points
+ (952, 1698)
+ (901, 1698)
+ (901, 1591))
+ line_style 3
+ origin_attachment (952, 1698)
+ terminal_attachment (901, 1591))
+ (object RoleView "resolvedModelGroupDefinition" @781
+ Parent_View @778
+ location (-1288, -318)
+ label (object SegLabel @782
+ Parent_View @781
+ location (1020, 1739)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 564
+ justify 0
+ label "+resolvedModelGroupDefinition"
+ pctDist 1.326923
+ height 41
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B4249039E"
+ client @778
+ supplier @777
+ vertices (list Points
+ (952, 1698)
+ (1004, 1698)
+ (1004, 1591))
+ line_style 3
+ origin_attachment (952, 1698)
+ terminal_attachment (1004, 1591)
+ label (object SegLabel @783
+ Parent_View @781
+ location (952, 1649)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.000000
+ height 50
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaCompositor" @784
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (656, 992)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @784
+ location (420, 949)
+ fill_color 13434879
+ nlines 1
+ max_width 472
+ justify 0
+ label "XSDSchemaCompositor")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C21DB4102AE"
+ width 490
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchemaDirective" @785
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (640, 784)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @785
+ location (412, 737)
+ fill_color 13434879
+ nlines 1
+ max_width 457
+ justify 0
+ label "XSDSchemaDirective")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD8A202A2"
+ width 475
+ height 118
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @786
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (640, 416)
+ label (object ItemLabel
+ Parent_View @786
+ location (446, 285)
+ fill_color 13434879
+ nlines 1
+ max_width 388
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 406
+ height 287
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$154" @787
+ location (1303, 679)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DD0C03DB"
+ roleview_list (list RoleViews
+ (object RoleView "incorporatedSchema" @788
+ Parent_View @787
+ location (-41, -857)
+ label (object SegLabel @789
+ Parent_View @788
+ location (1059, 381)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+incorporatedSchema"
+ pctDist 0.700384
+ height 39
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DD100305"
+ client @787
+ supplier @786
+ vertices (list Points
+ (1303, 679)
+ (1303, 419)
+ (843, 419))
+ line_style 3
+ origin_attachment (1303, 679)
+ terminal_attachment (843, 419)
+ label (object SegLabel @790
+ Parent_View @788
+ location (922, 454)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.890746
+ height 35
+ orientation 0))
+ (object RoleView "$UNNAMED$155" @791
+ Parent_View @787
+ location (-41, -857)
+ label (object SegLabel @792
+ Parent_View @791
+ location (1045, 956)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DD100304"
+ client @787
+ supplier @784
+ vertices (list Points
+ (1303, 679)
+ (1303, 997)
+ (901, 997))
+ line_style 3
+ origin_attachment (1303, 679)
+ terminal_attachment (901, 997))))
+ (object AssociationViewNew "$UNNAMED$152" @793
+ location (1216, 649)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DCC700EC"
+ roleview_list (list RoleViews
+ (object RoleView "resolvedSchema" @794
+ Parent_View @793
+ location (336, -1399)
+ label (object SegLabel @795
+ Parent_View @794
+ location (1038, 500)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 324
+ justify 0
+ label "+resolvedSchema"
+ pctDist 0.601923
+ height 35
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DCCE0043"
+ client @793
+ supplier @786
+ vertices (list Points
+ (1216, 649)
+ (1216, 534)
+ (843, 534))
+ line_style 3
+ origin_attachment (1216, 649)
+ terminal_attachment (843, 534)
+ label (object SegLabel @796
+ Parent_View @794
+ location (926, 577)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.831643
+ height 43
+ orientation 0))
+ (object RoleView "$UNNAMED$153" @797
+ Parent_View @793
+ location (336, -1399)
+ label (object SegLabel @798
+ Parent_View @797
+ location (974, 756)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DCCE0042"
+ client @793
+ supplier @785
+ vertices (list Points
+ (1216, 649)
+ (1216, 797)
+ (877, 797))
+ line_style 3
+ origin_attachment (1216, 649)
+ terminal_attachment (877, 797))))
+ (object AssociationViewNew "$UNNAMED$158" @799
+ location (662, 642)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25D3A60131"
+ roleview_list (list RoleViews
+ (object RoleView "referencingDirectives" @800
+ Parent_View @799
+ location (-234, 114)
+ label (object SegLabel @801
+ Parent_View @800
+ location (878, 675)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+referencingDirectives"
+ pctDist 0.408759
+ height 216
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25D3A90371"
+ client @799
+ supplier @785
+ line_style 3
+ origin_attachment (662, 642)
+ terminal_attachment (662, 725)
+ label (object SegLabel @802
+ Parent_View @800
+ location (615, 678)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.430657
+ height 48
+ orientation 1))
+ (object RoleView "$UNNAMED$159" @803
+ Parent_View @799
+ location (-234, 114)
+ label (object SegLabel @804
+ Parent_View @803
+ location (621, 576)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25D3A90370"
+ client @799
+ supplier @786
+ line_style 3
+ origin_attachment (662, 642)
+ terminal_attachment (662, 559))))
+ (object AssociationViewNew "$UNNAMED$160" @805
+ location (75, 188)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25ECF0005E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$161" @806
+ Parent_View @805
+ location (-853, -308)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25ECF4001E"
+ client @805
+ supplier @786
+ vertices (list Points
+ (75, 188)
+ (75, 128)
+ (510, 128)
+ (510, 273))
+ line_style 3
+ origin_attachment (75, 188)
+ terminal_attachment (510, 273))
+ (object RoleView "rootVersion" @807
+ Parent_View @805
+ location (-853, -308)
+ label (object SegLabel @808
+ Parent_View @807
+ location (176, 74)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+rootVersion"
+ pctDist -0.593750
+ height 101
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25ECF40028"
+ client @805
+ supplier @786
+ vertices (list Points
+ (75, 188)
+ (75, 380)
+ (437, 380))
+ line_style 3
+ origin_attachment (75, 188)
+ terminal_attachment (437, 380)
+ label (object SegLabel @809
+ Parent_View @807
+ location (368, 328)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.874755
+ height 53
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$162" @810
+ location (1262, 134)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25ED0B011B"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$163" @811
+ Parent_View @810
+ location (334, -362)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25ED0F0121"
+ client @810
+ supplier @786
+ vertices (list Points
+ (1262, 134)
+ (766, 134)
+ (766, 273))
+ line_style 3
+ origin_attachment (1262, 134)
+ terminal_attachment (766, 273))
+ (object RoleView "originalVersion" @812
+ Parent_View @810
+ location (334, -362)
+ label (object SegLabel @813
+ Parent_View @812
+ location (1164, 97)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 288
+ justify 0
+ label "+originalVersion"
+ pctDist -1.650000
+ height 38
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25ED0F012B"
+ client @810
+ supplier @786
+ vertices (list Points
+ (1262, 134)
+ (1322, 134)
+ (1322, 334)
+ (843, 334))
+ line_style 3
+ origin_attachment (1262, 134)
+ terminal_attachment (843, 334)
+ label (object SegLabel @814
+ Parent_View @812
+ location (919, 279)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.898108
+ height 56
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$164" @815
+ location (126, 656)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25EEAB001F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$165" @816
+ Parent_View @815
+ location (-834, 160)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25EEAF010B"
+ client @815
+ supplier @786
+ vertices (list Points
+ (126, 656)
+ (513, 656)
+ (513, 559))
+ line_style 3
+ origin_attachment (126, 656)
+ terminal_attachment (513, 559))
+ (object RoleView "incorporatedVersions" @817
+ Parent_View @815
+ location (-834, 160)
+ label (object SegLabel @818
+ Parent_View @817
+ location (217, 431)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 408
+ justify 0
+ label "+incorporatedVersions"
+ pctDist 0.643902
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C25EEAF0115"
+ client @815
+ supplier @786
+ vertices (list Points
+ (126, 656)
+ (66, 656)
+ (66, 472)
+ (437, 472))
+ line_style 3
+ origin_attachment (126, 656)
+ terminal_attachment (437, 472)
+ label (object SegLabel @819
+ Parent_View @817
+ location (356, 526)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.868468
+ height 54
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$168" @820
+ location (642, 126)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2784730194"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$169" @821
+ Parent_View @820
+ location (82, -418)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C27847501F1"
+ client @820
+ supplier @786
+ vertices (list Points
+ (642, 126)
+ (588, 126)
+ (588, 273))
+ line_style 3
+ origin_attachment (642, 126)
+ terminal_attachment (588, 273))
+ (object RoleView "schemaForSchema" @822
+ Parent_View @820
+ location (82, -418)
+ label (object SegLabel @823
+ Parent_View @822
+ location (639, 74)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 384
+ justify 0
+ label "+schemaForSchema"
+ pctDist -0.055556
+ height 53
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C27847501FB"
+ client @820
+ supplier @786
+ vertices (list Points
+ (642, 126)
+ (697, 126)
+ (697, 273))
+ line_style 3
+ origin_attachment (642, 126)
+ terminal_attachment (697, 273)
+ label (object SegLabel @824
+ Parent_View @822
+ location (643, 213)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.701863
+ height 55
+ orientation 1))))
+ (object InheritView "" @825
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C21DB560092"
+ client @784
+ supplier @785
+ line_style 3
+ origin_attachment (638, 937)
+ terminal_attachment (638, 843))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @826
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (304, 1184)
+ label (object ItemLabel
+ Parent_View @826
+ location (67, 1141)
+ fill_color 13434879
+ nlines 1
+ max_width 474
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 492
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$8" @827
+ location (234, 1340)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B426B0194"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$9" @828
+ Parent_View @827
+ location (-310, -4)
+ label (object SegLabel @829
+ Parent_View @828
+ location (140, 1271)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B426D0309"
+ client @827
+ supplier @826
+ vertices (list Points
+ (234, 1340)
+ (181, 1340)
+ (181, 1239))
+ line_style 3
+ origin_attachment (234, 1340)
+ terminal_attachment (181, 1239))
+ (object RoleView "resolvedAttributeDeclaration" @830
+ Parent_View @827
+ location (-310, -4)
+ label (object SegLabel @831
+ Parent_View @830
+ location (333, 1389)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 528
+ justify 0
+ label "+resolvedAttributeDeclaration"
+ pctDist 1.867925
+ height 49
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B426D0313"
+ client @827
+ supplier @826
+ vertices (list Points
+ (234, 1340)
+ (287, 1340)
+ (287, 1239))
+ line_style 3
+ origin_attachment (234, 1340)
+ terminal_attachment (287, 1239)
+ label (object SegLabel @832
+ Parent_View @830
+ location (241, 1295)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.042945
+ height 46
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @833
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1760, 144)
+ label (object ItemLabel
+ Parent_View @833
+ location (1517, 101)
+ fill_color 13434879
+ nlines 1
+ max_width 486
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ width 504
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDFacet" @834
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1712, 416)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @834
+ location (1599, 373)
+ fill_color 13434879
+ nlines 1
+ max_width 226
+ justify 0
+ label "XSDFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C359403D2"
+ width 244
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$242" @835
+ location (1668, 280)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4AE01CC"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$243" @836
+ Parent_View @835
+ location (8, -152)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4AF010F"
+ client @835
+ supplier @833
+ line_style 3
+ origin_attachment (1668, 280)
+ terminal_attachment (1668, 199))
+ (object RoleView "syntheticFacets" @837
+ Parent_View @835
+ location (8, -152)
+ label (object SegLabel @838
+ Parent_View @837
+ location (1852, 300)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 324
+ justify 0
+ label "+syntheticFacets"
+ pctDist 0.246154
+ height 184
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4AF011A"
+ client @835
+ supplier @834
+ line_style 3
+ origin_attachment (1668, 280)
+ terminal_attachment (1668, 361)
+ label (object SegLabel @839
+ Parent_View @837
+ location (1625, 301)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.276923
+ height 44
+ orientation 1))))
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @840
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1552, 944)
+ label (object ItemLabel
+ Parent_View @840
+ location (1426, 901)
+ fill_color 13434879
+ nlines 1
+ max_width 252
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 270
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @841
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1776, 640)
+ label (object ItemLabel
+ Parent_View @841
+ location (1515, 597)
+ fill_color 13434879
+ nlines 1
+ max_width 522
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ width 540
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$244" @842
+ location (1508, 792)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4D3028E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$245" @843
+ Parent_View @842
+ location (-12, -280)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4D402F3"
+ client @842
+ supplier @841
+ line_style 3
+ origin_attachment (1508, 792)
+ terminal_attachment (1508, 695))
+ (object RoleView "syntheticParticle" @844
+ Parent_View @842
+ location (-12, -280)
+ label (object SegLabel @845
+ Parent_View @844
+ location (1695, 767)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+syntheticParticle"
+ pctDist -0.259259
+ height 187
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4D402FD"
+ client @842
+ supplier @840
+ line_style 3
+ origin_attachment (1508, 792)
+ terminal_attachment (1508, 889)
+ label (object SegLabel @846
+ Parent_View @844
+ location (1454, 829)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.395062
+ height 55
+ orientation 1))))
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @847
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1024, 1184)
+ label (object ItemLabel
+ Parent_View @847
+ location (756, 1141)
+ fill_color 13434879
+ nlines 1
+ max_width 536
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ width 554
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$20" @848
+ location (919, 1349)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B425E01F9"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$21" @849
+ Parent_View @848
+ location (-233, -59)
+ label (object SegLabel @850
+ Parent_View @849
+ location (825, 1273)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B42620046"
+ client @848
+ supplier @847
+ vertices (list Points
+ (919, 1349)
+ (866, 1349)
+ (866, 1239))
+ line_style 3
+ origin_attachment (919, 1349)
+ terminal_attachment (866, 1239))
+ (object RoleView "resolvedAttributeGroupDefinition" @851
+ Parent_View @848
+ location (-233, -59)
+ label (object SegLabel @852
+ Parent_View @851
+ location (993, 1393)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 600
+ justify 0
+ label "+resolvedAttributeGroupDefinition"
+ pctDist 1.377358
+ height 44
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B6B42620050"
+ client @848
+ supplier @847
+ vertices (list Points
+ (919, 1349)
+ (973, 1349)
+ (973, 1239))
+ line_style 3
+ origin_attachment (919, 1349)
+ terminal_attachment (973, 1239)
+ label (object SegLabel @853
+ Parent_View @851
+ location (919, 1296)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.014925
+ height 54
+ orientation 0))))
+ (object ClassView "Class" "Logical View::xsd::XSDWildcard" @854
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1952, 944)
+ label (object ItemLabel
+ Parent_View @854
+ location (1816, 901)
+ fill_color 13434879
+ nlines 1
+ max_width 272
+ justify 0
+ label "XSDWildcard")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6838370031"
+ width 290
+ height 110
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$246" @855
+ location (2025, 792)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4D901F6"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$247" @856
+ Parent_View @855
+ location (153, -280)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4DA0284"
+ client @855
+ supplier @841
+ line_style 3
+ origin_attachment (2025, 792)
+ terminal_attachment (2025, 695))
+ (object RoleView "syntheticWildcard" @857
+ Parent_View @855
+ location (153, -280)
+ label (object SegLabel @858
+ Parent_View @857
+ location (1826, 838)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+syntheticWildcard"
+ pctDist 0.488095
+ height 200
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4BB4DA028E"
+ client @855
+ supplier @854
+ line_style 3
+ origin_attachment (2025, 792)
+ terminal_attachment (2025, 889)
+ label (object SegLabel @859
+ Parent_View @857
+ location (2098, 840)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.506173
+ height 73
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$248" @860
+ location (1754, 1178)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4C68FF01BF"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$249" @861
+ Parent_View @860
+ location (-198, 234)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4C69020317"
+ client @860
+ supplier @847
+ line_style 3
+ origin_attachment (1754, 1178)
+ terminal_attachment (1301, 1178))
+ (object RoleView "syntheticWildcard" @862
+ Parent_View @860
+ location (-198, 234)
+ label (object SegLabel @863
+ Parent_View @862
+ location (1828, 1261)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+syntheticWildcard"
+ pctDist 0.163355
+ height 83
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4C69020318"
+ client @860
+ supplier @854
+ vertices (list Points
+ (1754, 1178)
+ (2028, 1178)
+ (2028, 999))
+ line_style 3
+ origin_attachment (1754, 1178)
+ terminal_attachment (2028, 999)
+ label (object SegLabel @864
+ Parent_View @862
+ location (2082, 1098)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.783664
+ height 54
+ orientation 1))))))
+ (object ClassDiagram "10. Diagnostics"
+ quid "3BFE5F0803E2"
+ title "10. Diagnostics"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::DOMNode" @865
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (400, 1024)
+ label (object ItemLabel
+ Parent_View @865
+ location (66, 990)
+ fill_color 13434879
+ nlines 1
+ max_width 668
+ justify 0
+ label "DOMNode")
+ stereotype (object ItemLabel
+ Parent_View @865
+ location (66, 940)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 668
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 14671839
+ quidu "3BFE64A50117"
+ width 686
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDDiagnosticSeverity" @866
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1040, 656)
+ label (object ItemLabel
+ Parent_View @866
+ location (818, 547)
+ fill_color 13434879
+ nlines 1
+ max_width 444
+ justify 0
+ label "XSDDiagnosticSeverity")
+ stereotype (object ItemLabel
+ Parent_View @866
+ location (818, 497)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 444
+ justify 0
+ label "<<enumeration>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8432127
+ quidu "3BFE68A7032F"
+ width 462
+ height 342
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSchema" @867
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (192, 112)
+ label (object ItemLabel
+ Parent_View @867
+ location (59, 60)
+ fill_color 13434879
+ nlines 1
+ max_width 266
+ justify 0
+ label "XSDSchema")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "374B182500BB"
+ width 284
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDConcreteComponent" @868
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (896, 112)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @868
+ location (540, 62)
+ fill_color 13434879
+ nlines 1
+ max_width 713
+ justify 0
+ label "XSDConcreteComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD7B40065"
+ width 731
+ height 125
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDDiagnostic" @869
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (384, 608)
+ label (object ItemLabel
+ Parent_View @869
+ location (64, 352)
+ fill_color 13434879
+ nlines 1
+ max_width 640
+ justify 0
+ label "XSDDiagnostic")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3BFE5F910046"
+ width 658
+ height 536
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$150" @870
+ location (144, 258)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE6431035F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$151" @871
+ Parent_View @870
+ location (-1088, -686)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE643201C6"
+ client @870
+ supplier @867
+ line_style 3
+ origin_attachment (144, 258)
+ terminal_attachment (144, 176))
+ (object RoleView "allDiagnostics" @872
+ Parent_View @870
+ location (-1088, -686)
+ label (object SegLabel @873
+ Parent_View @872
+ location (309, 294)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 276
+ justify 0
+ label "+allDiagnostics"
+ pctDist 0.448598
+ height 165
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE643201C7"
+ client @870
+ supplier @869
+ line_style 3
+ origin_attachment (144, 258)
+ terminal_attachment (144, 340)
+ label (object SegLabel @874
+ Parent_View @872
+ location (96, 291)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.420561
+ height 49
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$146" @875
+ location (1028, 440)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE622703CD"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$147" @876
+ Parent_View @875
+ location (-396, -72)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE622B0061"
+ client @875
+ supplier @869
+ line_style 3
+ origin_attachment (1028, 440)
+ terminal_attachment (713, 440))
+ (object RoleView "components" @877
+ Parent_View @875
+ location (-396, -72)
+ label (object SegLabel @878
+ Parent_View @877
+ location (938, 230)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 252
+ justify 0
+ label "+components"
+ pctDist 0.829181
+ height 151
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE622B006C"
+ client @875
+ supplier @868
+ vertices (list Points
+ (1028, 440)
+ (1088, 440)
+ (1088, 174))
+ line_style 3
+ origin_attachment (1028, 440)
+ terminal_attachment (1088, 174)
+ label (object SegLabel @879
+ Parent_View @877
+ location (1143, 232)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "1..*"
+ pctDist 0.823848
+ height 55
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$148" @880
+ location (688, 257)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE62690165"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$149" @881
+ Parent_View @880
+ location (160, -303)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE626A0026"
+ client @880
+ supplier @868
+ line_style 3
+ origin_attachment (688, 257)
+ terminal_attachment (688, 174))
+ (object RoleView "diagnostics" @882
+ Parent_View @880
+ location (160, -303)
+ label (object SegLabel @883
+ Parent_View @882
+ location (822, 294)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+diagnostics"
+ pctDist 0.452632
+ height 134
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BFE626A0027"
+ client @880
+ supplier @869
+ line_style 3
+ origin_attachment (688, 257)
+ terminal_attachment (688, 340)
+ label (object SegLabel @884
+ Parent_View @882
+ location (645, 298)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 70
+ justify 0
+ label "0..*"
+ pctDist 0.494737
+ height 44
+ orientation 1))))
+ (object InheritView "" @885
+ stereotype TRUE
+ line_color 3342489
+ quidu "3D4C0F4C01A1"
+ client @869
+ supplier @868
+ line_style 3
+ origin_attachment (575, 340)
+ terminal_attachment (575, 174))))
+ (object ClassDiagram "11. Supplemental"
+ quid "3C287E49019B"
+ title "11. Supplemental"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeGroupDefinition" @886
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (464, 816)
+ label (object ItemLabel
+ Parent_View @886
+ location (47, 760)
+ fill_color 13434879
+ nlines 1
+ max_width 834
+ justify 0
+ label "XSDAttributeGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED840290"
+ compartment (object Compartment
+ Parent_View @886
+ location (47, 820)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 0)
+ width 852
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDAttributeDeclaration" @887
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2112, 880)
+ label (object ItemLabel
+ Parent_View @887
+ location (1731, 824)
+ fill_color 13434879
+ nlines 1
+ max_width 762
+ justify 0
+ label "XSDAttributeDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED2E0192"
+ width 780
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDConcreteComponent" @888
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (288, 112)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @888
+ location (48, 60)
+ fill_color 13434879
+ nlines 1
+ max_width 480
+ justify 0
+ label "XSDConcreteComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6AD7B40065"
+ width 498
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDDiagnostic" @889
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2384, 112)
+ label (object ItemLabel
+ Parent_View @889
+ location (2236, 60)
+ fill_color 13434879
+ nlines 1
+ max_width 296
+ justify 0
+ label "XSDDiagnostic")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3BFE5F910046"
+ width 314
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$172" @890
+ location (1382, 84)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2882C50137"
+ roleview_list (list RoleViews
+ (object RoleView "primaryComponent" @891
+ Parent_View @890
+ location (-250, -508)
+ label (object SegLabel @892
+ Parent_View @891
+ location (756, 116)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+primaryComponent"
+ pctDist 0.740828
+ height 32
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2882C70113"
+ client @890
+ supplier @888
+ line_style 3
+ origin_attachment (1382, 84)
+ terminal_attachment (537, 84)
+ label (object SegLabel @893
+ Parent_View @891
+ location (624, 55)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.897260
+ height 30
+ orientation 1))
+ (object RoleView "$UNNAMED$173" @894
+ Parent_View @890
+ location (-250, -508)
+ label (object SegLabel @895
+ Parent_View @894
+ location (2058, 126)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2882C70112"
+ client @890
+ supplier @889
+ line_style 3
+ origin_attachment (1382, 84)
+ terminal_attachment (2227, 84))))
+ (object ClassView "Class" "Logical View::xsd::XSDElementDeclaration" @896
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2160, 688)
+ label (object ItemLabel
+ Parent_View @896
+ location (1778, 607)
+ fill_color 13434879
+ nlines 1
+ max_width 764
+ justify 0
+ label "XSDElementDeclaration")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED580214"
+ compartment (object Compartment
+ Parent_View @896
+ location (1778, 667)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ elementDeclarationReference : boolean"
+ "+ circular : boolean"))
+ width 782
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDFacet" @897
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2320, 1072)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @897
+ location (2100, 991)
+ fill_color 13434879
+ nlines 1
+ max_width 440
+ justify 0
+ label "XSDFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6C359403D2"
+ compartment (object Compartment
+ Parent_View @897
+ location (2100, 1051)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ facetName : String"
+ "+ effectiveValue : Value"))
+ width 458
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDModelGroupDefinition" @898
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (448, 624)
+ label (object ItemLabel
+ Parent_View @898
+ location (47, 568)
+ fill_color 13434879
+ nlines 1
+ max_width 802
+ justify 0
+ label "XSDModelGroupDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B66ED9A0205"
+ compartment (object Compartment
+ Parent_View @898
+ location (47, 628)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "+ modelGroupDefinitionReference : boolean"))
+ width 820
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDNamedComponent" @899
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1232, 288)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @899
+ location (1005, 157)
+ fill_color 13434879
+ nlines 1
+ max_width 454
+ justify 0
+ label "XSDNamedComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B6846D303A4"
+ compartment (object Compartment
+ Parent_View @899
+ location (1005, 217)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 4
+ max_width 0
+ compartmentItems (list Compartment
+ "+ aliasName : String"
+ "+ uRI : String"
+ "+ aliasURI : String"
+ "+ qName : String"))
+ width 472
+ height 286
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDRedefinableComponent" @900
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (320, 352)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @900
+ location (48, 296)
+ fill_color 13434879
+ nlines 1
+ max_width 544
+ justify 0
+ label "XSDRedefinableComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B7FCA8B020B"
+ width 562
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @901
+ location (320, 510)
+ line_color 3342489
+ fill_color 13434879
+ supplier @900
+ vertices (list Points
+ (320, 510)
+ (320, 420)))
+ (object InheritView "" @902
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAC40090"
+ client @898
+ supplier @900
+ line_style 3
+ origin_attachment (81, 556)
+ terminal_attachment (81, 510)
+ drawSupplier @901)
+ (object InheritView "" @903
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAC800D2"
+ client @886
+ supplier @900
+ line_style 3
+ origin_attachment (877, 748)
+ terminal_attachment (877, 510)
+ drawSupplier @901)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxInclusiveFacet" @904
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2320, 1808)
+ label (object ItemLabel
+ Parent_View @904
+ location (2101, 1761)
+ fill_color 13434879
+ nlines 1
+ max_width 438
+ justify 0
+ label "XSDMaxInclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C787D00DA"
+ width 456
+ height 119
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinInclusiveFacet" @905
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (272, 1776)
+ label (object ItemLabel
+ Parent_View @905
+ location (35, 1729)
+ fill_color 13434879
+ nlines 1
+ max_width 475
+ justify 0
+ label "XSDMinInclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C788702C9"
+ width 493
+ height 119
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinExclusiveFacet" @906
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (272, 1936)
+ label (object ItemLabel
+ Parent_View @906
+ location (35, 1889)
+ fill_color 13434879
+ nlines 1
+ max_width 475
+ justify 0
+ label "XSDMinExclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C792D000A"
+ width 493
+ height 118
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxExclusiveFacet" @907
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2304, 1968)
+ label (object ItemLabel
+ Parent_View @907
+ location (2073, 1917)
+ fill_color 13434879
+ nlines 1
+ max_width 462
+ justify 0
+ label "XSDMaxExclusiveFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C789600C2"
+ width 480
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDCardinalityFacet" @908
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2336, 1424)
+ label (object ItemLabel
+ Parent_View @908
+ location (2134, 1372)
+ fill_color 13434879
+ nlines 1
+ max_width 404
+ justify 0
+ label "XSDCardinalityFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C755D03D2"
+ width 422
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDBoundedFacet" @909
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2352, 1264)
+ label (object ItemLabel
+ Parent_View @909
+ location (2163, 1212)
+ fill_color 13434879
+ nlines 1
+ max_width 378
+ justify 0
+ label "XSDBoundedFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C751D0344"
+ width 396
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDOrderedFacet" @910
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (224, 1392)
+ label (object ItemLabel
+ Parent_View @910
+ location (43, 1340)
+ fill_color 13434879
+ nlines 1
+ max_width 362
+ justify 0
+ label "XSDOrderedFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C74DD0248"
+ width 380
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDNumericFacet" @911
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (240, 1232)
+ label (object ItemLabel
+ Parent_View @911
+ location (49, 1178)
+ fill_color 13434879
+ nlines 1
+ max_width 382
+ justify 0
+ label "XSDNumericFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C75950206"
+ width 400
+ height 132
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxFacet" @912
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2336, 1616)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @912
+ location (2135, 1535)
+ fill_color 13434879
+ nlines 1
+ max_width 402
+ justify 0
+ label "XSDMaxFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C0A1CEB010E"
+ compartment (object Compartment
+ Parent_View @912
+ location (2135, 1595)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ inclusive : boolean"
+ "+ exclusive : boolean"))
+ width 420
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDWhiteSpaceFacet" @913
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2320, 2288)
+ label (object ItemLabel
+ Parent_View @913
+ location (2102, 2236)
+ fill_color 13434879
+ nlines 1
+ max_width 436
+ justify 0
+ label "XSDWhiteSpaceFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C784601B7"
+ width 454
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDFractionDigitsFacet" @914
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2304, 2624)
+ label (object ItemLabel
+ Parent_View @914
+ location (2074, 2572)
+ fill_color 13434879
+ nlines 1
+ max_width 460
+ justify 0
+ label "XSDFractionDigitsFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C79BE02EE"
+ width 478
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDPatternFacet" @915
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2368, 2128)
+ label (object ItemLabel
+ Parent_View @915
+ location (2196, 2076)
+ fill_color 13434879
+ nlines 1
+ max_width 344
+ justify 0
+ label "XSDPatternFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C6ADB026C"
+ width 362
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDEnumerationFacet" @916
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (256, 2096)
+ label (object ItemLabel
+ Parent_View @916
+ location (36, 2044)
+ fill_color 13434879
+ nlines 1
+ max_width 440
+ justify 0
+ label "XSDEnumerationFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C6ACE0141"
+ width 458
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDLengthFacet" @917
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (208, 2272)
+ label (object ItemLabel
+ Parent_View @917
+ location (38, 2220)
+ fill_color 13434879
+ nlines 1
+ max_width 340
+ justify 0
+ label "XSDLengthFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C776200E7"
+ width 358
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinFacet" @918
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (240, 1584)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @918
+ location (38, 1503)
+ fill_color 13434879
+ nlines 1
+ max_width 404
+ justify 0
+ label "XSDMinFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3C0A1CDE037C"
+ compartment (object Compartment
+ Parent_View @918
+ location (38, 1563)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ inclusive : boolean"
+ "+ exclusive : boolean"))
+ width 422
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMaxLengthFacet" @919
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2320, 2464)
+ label (object ItemLabel
+ Parent_View @919
+ location (2111, 2412)
+ fill_color 13434879
+ nlines 1
+ max_width 418
+ justify 0
+ label "XSDMaxLengthFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C77C70146"
+ width 436
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDMinLengthFacet" @920
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (240, 2448)
+ label (object ItemLabel
+ Parent_View @920
+ location (39, 2396)
+ fill_color 13434879
+ nlines 1
+ max_width 402
+ justify 0
+ label "XSDMinLengthFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C778C0065"
+ width 420
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDTotalDigitsFacet" @921
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (240, 2608)
+ label (object ItemLabel
+ Parent_View @921
+ location (38, 2556)
+ fill_color 13434879
+ nlines 1
+ max_width 404
+ justify 0
+ label "XSDTotalDigitsFacet")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B6C79A0020E"
+ width 422
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDComplexTypeDefinition" @922
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (928, 1152)
+ label (object ItemLabel
+ Parent_View @922
+ location (667, 1100)
+ fill_color 13434879
+ nlines 1
+ max_width 522
+ justify 0
+ label "XSDComplexTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682B82031A"
+ width 540
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDParticle" @923
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (176, 1072)
+ label (object ItemLabel
+ Parent_View @923
+ location (50, 1020)
+ fill_color 13434879
+ nlines 1
+ max_width 252
+ justify 0
+ label "XSDParticle")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BBD01F7"
+ width 270
+ height 128
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::xsd::XSDSimpleTypeDefinition" @924
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (1232, 1360)
+ label (object ItemLabel
+ Parent_View @924
+ location (944, 1304)
+ fill_color 13434879
+ nlines 1
+ max_width 576
+ justify 0
+ label "XSDSimpleTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3B682BA7005D"
+ compartment (object Compartment
+ Parent_View @924
+ location (944, 1364)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<0..*>> + validFacets : String"))
+ width 594
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object AssociationViewNew "$UNNAMED$184" @925
+ location (1446, 1218)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A994030A"
+ roleview_list (list RoleViews
+ (object RoleView "rootTypeDefinition" @926
+ Parent_View @925
+ location (582, -78)
+ label (object SegLabel @927
+ Parent_View @926
+ location (1580, 1173)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+rootTypeDefinition"
+ pctDist 3.268293
+ height 46
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A99700DD"
+ client @925
+ supplier @924
+ vertices (list Points
+ (1446, 1218)
+ (1487, 1218)
+ (1487, 1292))
+ line_style 3
+ origin_attachment (1446, 1218)
+ terminal_attachment (1487, 1292)
+ label (object SegLabel @928
+ Parent_View @926
+ location (1439, 1257)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.184211
+ height 39
+ orientation 1))
+ (object RoleView "$UNNAMED$185" @929
+ Parent_View @925
+ location (582, -78)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A99700E7"
+ client @925
+ supplier @924
+ vertices (list Points
+ (1446, 1218)
+ (1405, 1218)
+ (1405, 1292))
+ line_style 3
+ origin_attachment (1446, 1218)
+ terminal_attachment (1405, 1292))))
+ (object AssociationViewNew "$UNNAMED$188" @930
+ location (1733, 1575)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B08D0252"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$189" @931
+ Parent_View @930
+ location (917, 7)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B08E0091"
+ client @930
+ supplier @924
+ vertices (list Points
+ (1733, 1575)
+ (1487, 1575)
+ (1487, 1428))
+ line_style 3
+ origin_attachment (1733, 1575)
+ terminal_attachment (1487, 1428))
+ (object RoleView "maxFacet" @932
+ Parent_View @930
+ location (917, 7)
+ label (object SegLabel @933
+ Parent_View @932
+ location (1751, 1541)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 204
+ justify 0
+ label "+maxFacet"
+ pctDist 0.046243
+ height 35
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B08E009B"
+ client @930
+ supplier @912
+ line_style 3
+ origin_attachment (1733, 1575)
+ terminal_attachment (2126, 1575)
+ label (object SegLabel @934
+ Parent_View @932
+ location (2042, 1536)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.789157
+ height 40
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$190" @935
+ location (1587, 1793)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0AB0396"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$191" @936
+ Parent_View @935
+ location (707, -31)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0AC03C9"
+ client @935
+ supplier @924
+ vertices (list Points
+ (1587, 1793)
+ (1447, 1793)
+ (1447, 1428))
+ line_style 3
+ origin_attachment (1587, 1793)
+ terminal_attachment (1447, 1428))
+ (object RoleView "maxInclusiveFacet" @937
+ Parent_View @935
+ location (707, -31)
+ label (object SegLabel @938
+ Parent_View @937
+ location (1737, 1751)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 360
+ justify 0
+ label "+maxInclusiveFacet"
+ pctDist 0.298441
+ height 43
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0AC03D4"
+ client @935
+ supplier @904
+ line_style 3
+ origin_attachment (1587, 1793)
+ terminal_attachment (2092, 1793)
+ label (object SegLabel @939
+ Parent_View @937
+ location (2020, 1754)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.859155
+ height 40
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$192" @940
+ location (937, 1787)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0AF0338"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$193" @941
+ Parent_View @940
+ location (617, -5)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B001F9"
+ client @940
+ supplier @924
+ vertices (list Points
+ (937, 1787)
+ (997, 1787)
+ (997, 1428))
+ line_style 3
+ origin_attachment (937, 1787)
+ terminal_attachment (997, 1428))
+ (object RoleView "minInclusiveFacet" @942
+ Parent_View @940
+ location (617, -5)
+ label (object SegLabel @943
+ Parent_View @942
+ location (792, 1745)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+minInclusiveFacet"
+ pctDist 0.346062
+ height 43
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B00203"
+ client @940
+ supplier @905
+ line_style 3
+ origin_attachment (937, 1787)
+ terminal_attachment (518, 1787)
+ label (object SegLabel @944
+ Parent_View @942
+ location (575, 1743)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.863962
+ height 45
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$194" @945
+ location (981, 1937)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B30207"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$195" @946
+ Parent_View @945
+ location (677, -79)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B40190"
+ client @945
+ supplier @924
+ vertices (list Points
+ (981, 1937)
+ (1041, 1937)
+ (1041, 1428))
+ line_style 3
+ origin_attachment (981, 1937)
+ terminal_attachment (1041, 1428))
+ (object RoleView "minExclusiveFacet" @947
+ Parent_View @945
+ location (677, -79)
+ label (object SegLabel @948
+ Parent_View @947
+ location (823, 1900)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+minExclusiveFacet"
+ pctDist 0.341253
+ height 38
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B4019A"
+ client @945
+ supplier @906
+ line_style 3
+ origin_attachment (981, 1937)
+ terminal_attachment (518, 1937)
+ label (object SegLabel @949
+ Parent_View @947
+ location (589, 1897)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.846652
+ height 41
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$196" @950
+ location (1469, 1953)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B6028D"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$197" @951
+ Parent_View @950
+ location (621, -95)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B70217"
+ client @950
+ supplier @924
+ vertices (list Points
+ (1469, 1953)
+ (1400, 1953)
+ (1400, 1428))
+ line_style 3
+ origin_attachment (1469, 1953)
+ terminal_attachment (1400, 1428))
+ (object RoleView "maxExclusiveFacet" @952
+ Parent_View @950
+ location (621, -95)
+ label (object SegLabel @953
+ Parent_View @952
+ location (1646, 1913)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 384
+ justify 0
+ label "+maxExclusiveFacet"
+ pctDist 0.298097
+ height 41
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0B70221"
+ client @950
+ supplier @907
+ line_style 3
+ origin_attachment (1469, 1953)
+ terminal_attachment (2064, 1953)
+ label (object SegLabel @954
+ Parent_View @952
+ location (1961, 1913)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.827236
+ height 41
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$198" @955
+ location (1122, 2180)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0BC0051"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$199" @956
+ Parent_View @955
+ location (-318, 628)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0BC0246"
+ client @955
+ supplier @924
+ line_style 3
+ origin_attachment (1122, 2180)
+ terminal_attachment (1122, 1428))
+ (object RoleView "lengthFacet" @957
+ Parent_View @955
+ location (-318, 628)
+ label (object SegLabel @958
+ Parent_View @957
+ location (804, 2204)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+lengthFacet"
+ pctDist 0.475472
+ height 37
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0BC0250"
+ client @955
+ supplier @917
+ vertices (list Points
+ (1122, 2180)
+ (1122, 2240)
+ (387, 2240))
+ line_style 3
+ origin_attachment (1122, 2180)
+ terminal_attachment (387, 2240)
+ label (object SegLabel @959
+ Parent_View @957
+ location (471, 2204)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.895597
+ height 37
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$202" @960
+ location (1084, 1989)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C2021D"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$203" @961
+ Parent_View @960
+ location (-1380, 437)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C300AB"
+ client @960
+ supplier @924
+ line_style 3
+ origin_attachment (1084, 1989)
+ terminal_attachment (1084, 1428))
+ (object RoleView "enumerationFacets" @962
+ Parent_View @960
+ location (-1380, 437)
+ label (object SegLabel @963
+ Parent_View @962
+ location (837, 2016)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 372
+ justify 0
+ label "+enumerationFacets"
+ pctDist 0.465857
+ height 34
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C300AC"
+ client @960
+ supplier @916
+ vertices (list Points
+ (1084, 1989)
+ (1084, 2049)
+ (485, 2049))
+ line_style 3
+ origin_attachment (1084, 1989)
+ terminal_attachment (485, 2049)
+ label (object SegLabel @964
+ Parent_View @962
+ location (583, 2021)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.851290
+ height 29
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$204" @965
+ location (1451, 2074)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C50159"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$205" @966
+ Parent_View @965
+ location (-1525, 538)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C600B0"
+ client @965
+ supplier @924
+ vertices (list Points
+ (1451, 2074)
+ (1362, 2074)
+ (1362, 1428))
+ line_style 3
+ origin_attachment (1451, 2074)
+ terminal_attachment (1362, 1428))
+ (object RoleView "patternFacets" @967
+ Parent_View @965
+ location (-1525, 538)
+ label (object SegLabel @968
+ Parent_View @967
+ location (1720, 2038)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 276
+ justify 0
+ label "+patternFacets"
+ pctDist 0.367223
+ height 37
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C600BA"
+ client @965
+ supplier @915
+ line_style 3
+ origin_attachment (1451, 2074)
+ terminal_attachment (2187, 2074)
+ label (object SegLabel @969
+ Parent_View @967
+ location (1972, 2035)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.708649
+ height 40
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$206" @970
+ location (1827, 1400)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C802A7"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$207" @971
+ Parent_View @970
+ location (-1149, -472)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C901EA"
+ client @970
+ supplier @924
+ line_style 3
+ origin_attachment (1827, 1400)
+ terminal_attachment (1529, 1400))
+ (object RoleView "cardinalityFacet" @972
+ Parent_View @970
+ location (-1149, -472)
+ label (object SegLabel @973
+ Parent_View @972
+ location (1847, 1358)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 312
+ justify 0
+ label "+cardinalityFacet"
+ pctDist 0.071730
+ height 43
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C901F5"
+ client @970
+ supplier @908
+ line_style 3
+ origin_attachment (1827, 1400)
+ terminal_attachment (2125, 1400)
+ label (object SegLabel @974
+ Parent_View @972
+ location (2083, 1357)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.863426
+ height 44
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$216" @975
+ location (1262, 2413)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0DB0377"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$217" @976
+ Parent_View @975
+ location (-786, 301)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0DC035A"
+ client @975
+ supplier @924
+ line_style 3
+ origin_attachment (1262, 2413)
+ terminal_attachment (1262, 1428))
+ (object RoleView "fractionDigitsFacet" @977
+ Parent_View @975
+ location (-786, 301)
+ label (object SegLabel @978
+ Parent_View @977
+ location (1608, 2556)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 360
+ justify 0
+ label "+fractionDigitsFacet"
+ pctDist 0.537393
+ height 41
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0DC0364"
+ client @975
+ supplier @914
+ vertices (list Points
+ (1262, 2413)
+ (1262, 2596)
+ (2065, 2596))
+ line_style 3
+ origin_attachment (1262, 2413)
+ terminal_attachment (2065, 2596)
+ label (object SegLabel @979
+ Parent_View @977
+ location (1979, 2556)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.913886
+ height 41
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$220" @980
+ location (1841, 1306)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0E300D9"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$221" @981
+ Parent_View @980
+ location (-1135, -790)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0E4038E"
+ client @980
+ supplier @924
+ line_style 3
+ origin_attachment (1841, 1306)
+ terminal_attachment (1529, 1306))
+ (object RoleView "boundedFacet" @982
+ Parent_View @980
+ location (-1135, -790)
+ label (object SegLabel @983
+ Parent_View @982
+ location (1832, 1270)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 288
+ justify 0
+ label "+boundedFacet"
+ pctDist -0.031746
+ height 37
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0E40398"
+ client @980
+ supplier @909
+ line_style 3
+ origin_attachment (1841, 1306)
+ terminal_attachment (2154, 1306)
+ label (object SegLabel @984
+ Parent_View @982
+ location (2077, 1275)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.754717
+ height 32
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$200" @985
+ location (1328, 2186)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0BF018C"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$201" @986
+ Parent_View @985
+ location (-640, 634)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C0006B"
+ client @985
+ supplier @924
+ line_style 3
+ origin_attachment (1328, 2186)
+ terminal_attachment (1328, 1428))
+ (object RoleView "whiteSpaceFacet" @987
+ Parent_View @985
+ location (-640, 634)
+ label (object SegLabel @988
+ Parent_View @987
+ location (1673, 2207)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+whiteSpaceFacet"
+ pctDist 0.490909
+ height 40
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0C00075"
+ client @985
+ supplier @913
+ vertices (list Points
+ (1328, 2186)
+ (1328, 2246)
+ (2093, 2246))
+ line_style 3
+ origin_attachment (1328, 2186)
+ terminal_attachment (2093, 2246)
+ label (object SegLabel @989
+ Parent_View @987
+ location (2033, 2203)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.926763
+ height 44
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$218" @990
+ location (674, 1390)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0DF0048"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$219" @991
+ Parent_View @990
+ location (-1854, -706)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0DF03B9"
+ client @990
+ supplier @924
+ line_style 3
+ origin_attachment (674, 1390)
+ terminal_attachment (935, 1390))
+ (object RoleView "orderedFacet" @992
+ Parent_View @990
+ location (-1854, -706)
+ label (object SegLabel @993
+ Parent_View @992
+ location (658, 1353)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 264
+ justify 0
+ label "+orderedFacet"
+ pctDist 0.061538
+ height 38
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0DF03C3"
+ client @990
+ supplier @910
+ line_style 3
+ origin_attachment (674, 1390)
+ terminal_attachment (414, 1390)
+ label (object SegLabel @994
+ Parent_View @992
+ location (510, 1355)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.634615
+ height 36
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$208" @995
+ location (687, 1296)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0CB039C"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$209" @996
+ Parent_View @995
+ location (-1809, -576)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0CC03D0"
+ client @995
+ supplier @924
+ line_style 3
+ origin_attachment (687, 1296)
+ terminal_attachment (935, 1296))
+ (object RoleView "numericFacet" @997
+ Parent_View @995
+ location (-1809, -576)
+ label (object SegLabel @998
+ Parent_View @997
+ location (668, 1257)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 276
+ justify 0
+ label "+numericFacet"
+ pctDist 0.080972
+ height 40
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0CC03D1"
+ client @995
+ supplier @911
+ line_style 3
+ origin_attachment (687, 1296)
+ terminal_attachment (440, 1296)
+ label (object SegLabel @999
+ Parent_View @997
+ location (506, 1260)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.736842
+ height 37
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$222" @1000
+ location (1689, 1662)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B44401EC"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$223" @1001
+ Parent_View @1000
+ location (-183, -354)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B4450360"
+ client @1000
+ supplier @924
+ vertices (list Points
+ (1689, 1662)
+ (1487, 1662)
+ (1487, 1428))
+ line_style 3
+ origin_attachment (1689, 1662)
+ terminal_attachment (1487, 1428))
+ (object RoleView "effectiveMaxFacet" @1002
+ Parent_View @1000
+ location (-183, -354)
+ label (object SegLabel @1003
+ Parent_View @1002
+ location (1769, 1623)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+effectiveMaxFacet"
+ pctDist 0.182051
+ height 40
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B445036A"
+ client @1000
+ supplier @912
+ line_style 3
+ origin_attachment (1689, 1662)
+ terminal_attachment (2126, 1662)
+ label (object SegLabel @1004
+ Parent_View @1002
+ location (2044, 1627)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.815385
+ height 36
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$224" @1005
+ location (1328, 2258)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B54F0145"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$225" @1006
+ Parent_View @1005
+ location (-1072, -462)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B550038C"
+ client @1005
+ supplier @924
+ line_style 3
+ origin_attachment (1328, 2258)
+ terminal_attachment (1328, 1428))
+ (object RoleView "effectiveWhiteSpaceFacet" @1007
+ Parent_View @1005
+ location (-1072, -462)
+ label (object SegLabel @1008
+ Parent_View @1007
+ location (1685, 2288)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 492
+ justify 0
+ label "+effectiveWhiteSpaceFacet"
+ pctDist 0.508541
+ height 37
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B5500396"
+ client @1005
+ supplier @913
+ vertices (list Points
+ (1328, 2258)
+ (1328, 2324)
+ (2093, 2324))
+ line_style 3
+ origin_attachment (1328, 2258)
+ terminal_attachment (2093, 2324)
+ label (object SegLabel @1009
+ Parent_View @1007
+ location (2009, 2293)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.898817
+ height 32
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$226" @1010
+ location (1297, 2366)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B5C4011C"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$227" @1011
+ Parent_View @1010
+ location (-607, -722)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B5C5020D"
+ client @1010
+ supplier @924
+ line_style 3
+ origin_attachment (1297, 2366)
+ terminal_attachment (1297, 1428))
+ (object RoleView "effectiveMaxLengthFacet" @1012
+ Parent_View @1010
+ location (-607, -722)
+ label (object SegLabel @1013
+ Parent_View @1012
+ location (1657, 2463)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 480
+ justify 0
+ label "+effectiveMaxLengthFacet"
+ pctDist 0.526906
+ height 37
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B5C50217"
+ client @1010
+ supplier @919
+ vertices (list Points
+ (1297, 2366)
+ (1297, 2499)
+ (2102, 2499))
+ line_style 3
+ origin_attachment (1297, 2366)
+ terminal_attachment (2102, 2499)
+ label (object SegLabel @1014
+ Parent_View @1012
+ location (2007, 2471)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.899308
+ height 29
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$228" @1015
+ location (1262, 2449)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B62A00AA"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$229" @1016
+ Parent_View @1015
+ location (-1170, -815)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B62B0138"
+ client @1015
+ supplier @924
+ line_style 3
+ origin_attachment (1262, 2449)
+ terminal_attachment (1262, 1428))
+ (object RoleView "effectiveFractionDigitsFacet" @1017
+ Parent_View @1015
+ location (-1170, -815)
+ label (object SegLabel @1018
+ Parent_View @1017
+ location (1640, 2634)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 528
+ justify 0
+ label "+effectiveFractionDigitsFacet"
+ pctDist 0.585315
+ height 35
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B62B0142"
+ client @1015
+ supplier @914
+ vertices (list Points
+ (1262, 2449)
+ (1262, 2668)
+ (2065, 2668))
+ line_style 3
+ origin_attachment (1262, 2449)
+ terminal_attachment (2065, 2668)
+ label (object SegLabel @1019
+ Parent_View @1017
+ location (1989, 2629)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.926485
+ height 40
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$230" @1020
+ location (1422, 2159)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B6B003A6"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$231" @1021
+ Parent_View @1020
+ location (-770, -1313)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B6B10311"
+ client @1020
+ supplier @924
+ vertices (list Points
+ (1422, 2159)
+ (1362, 2159)
+ (1362, 1428))
+ line_style 3
+ origin_attachment (1422, 2159)
+ terminal_attachment (1362, 1428))
+ (object RoleView "effectivePatternFacet" @1022
+ Parent_View @1020
+ location (-770, -1313)
+ label (object SegLabel @1023
+ Parent_View @1022
+ location (1727, 2125)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 408
+ justify 0
+ label "+effectivePatternFacet"
+ pctDist 0.399090
+ height 35
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B6B10312"
+ client @1020
+ supplier @915
+ line_style 3
+ origin_attachment (1422, 2159)
+ terminal_attachment (2187, 2159)
+ label (object SegLabel @1024
+ Parent_View @1022
+ location (2102, 2119)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.889226
+ height 41
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$232" @1025
+ location (1084, 2083)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B7CA026B"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$233" @1026
+ Parent_View @1025
+ location (828, -1373)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B7CB0186"
+ client @1025
+ supplier @924
+ line_style 3
+ origin_attachment (1084, 2083)
+ terminal_attachment (1084, 1428))
+ (object RoleView "effectiveEnumerationFacet" @1027
+ Parent_View @1025
+ location (828, -1373)
+ label (object SegLabel @1028
+ Parent_View @1027
+ location (822, 2101)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 504
+ justify 0
+ label "+effectiveEnumerationFacet"
+ pctDist 0.488619
+ height 43
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B7CB0190"
+ client @1025
+ supplier @916
+ vertices (list Points
+ (1084, 2083)
+ (1084, 2143)
+ (485, 2143))
+ line_style 3
+ origin_attachment (1084, 2083)
+ terminal_attachment (485, 2143)
+ label (object SegLabel @1029
+ Parent_View @1027
+ location (531, 2100)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.931715
+ height 44
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$238" @1030
+ location (1122, 2241)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8DC0052"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$239" @1031
+ Parent_View @1030
+ location (866, -479)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8DC03B9"
+ client @1030
+ supplier @924
+ line_style 3
+ origin_attachment (1122, 2241)
+ terminal_attachment (1122, 1428))
+ (object RoleView "effectiveLengthFacet" @1032
+ Parent_View @1030
+ location (866, -479)
+ label (object SegLabel @1033
+ Parent_View @1032
+ location (800, 2279)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 396
+ justify 0
+ label "+effectiveLengthFacet"
+ pctDist 0.491731
+ height 40
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8DC03C3"
+ client @1030
+ supplier @917
+ vertices (list Points
+ (1122, 2241)
+ (1122, 2318)
+ (387, 2318))
+ line_style 3
+ origin_attachment (1122, 2241)
+ terminal_attachment (387, 2318)
+ label (object SegLabel @1034
+ Parent_View @1032
+ location (470, 2279)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.898567
+ height 40
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$186" @1035
+ location (773, 1565)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B085025B"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$187" @1036
+ Parent_View @1035
+ location (469, 13)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0860270"
+ client @1035
+ supplier @924
+ vertices (list Points
+ (773, 1565)
+ (959, 1565)
+ (959, 1428))
+ line_style 3
+ origin_attachment (773, 1565)
+ terminal_attachment (959, 1428))
+ (object RoleView "minFacet" @1037
+ Parent_View @1035
+ location (469, 13)
+ label (object SegLabel @1038
+ Parent_View @1037
+ location (753, 1532)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 192
+ justify 0
+ label "+minFacet"
+ pctDist 0.063091
+ height 34
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B086027A"
+ client @1035
+ supplier @918
+ line_style 3
+ origin_attachment (773, 1565)
+ terminal_attachment (451, 1565)
+ label (object SegLabel @1039
+ Parent_View @1037
+ location (534, 1523)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.746667
+ height 43
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$240" @1040
+ location (816, 1650)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B97001DB"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$241" @1041
+ Parent_View @1040
+ location (496, -334)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B97100CF"
+ client @1040
+ supplier @924
+ vertices (list Points
+ (816, 1650)
+ (959, 1650)
+ (959, 1428))
+ line_style 3
+ origin_attachment (816, 1650)
+ terminal_attachment (959, 1428))
+ (object RoleView "effectiveMinFacet" @1042
+ Parent_View @1040
+ location (496, -334)
+ label (object SegLabel @1043
+ Parent_View @1042
+ location (764, 1614)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+effectiveMinFacet"
+ pctDist 0.141618
+ height 37
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B97100D9"
+ client @1040
+ supplier @918
+ line_style 3
+ origin_attachment (816, 1650)
+ terminal_attachment (451, 1650)
+ label (object SegLabel @1044
+ Parent_View @1042
+ location (523, 1606)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.802740
+ height 44
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$210" @1045
+ location (1297, 2321)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0CF0199"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$211" @1046
+ Parent_View @1045
+ location (-719, 497)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D20085"
+ client @1045
+ supplier @924
+ line_style 3
+ origin_attachment (1297, 2321)
+ terminal_attachment (1297, 1428))
+ (object RoleView "maxLengthFacet" @1047
+ Parent_View @1045
+ location (-719, 497)
+ label (object SegLabel @1048
+ Parent_View @1047
+ location (1630, 2380)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 336
+ justify 0
+ label "+maxLengthFacet"
+ pctDist 0.472255
+ height 30
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D2008F"
+ client @1045
+ supplier @919
+ vertices (list Points
+ (1297, 2321)
+ (1297, 2409)
+ (2102, 2409))
+ line_style 3
+ origin_attachment (1297, 2321)
+ terminal_attachment (2102, 2409)
+ label (object SegLabel @1049
+ Parent_View @1047
+ location (1994, 2366)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.879208
+ height 44
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$212" @1050
+ location (1159, 2273)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D500C5"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$213" @1051
+ Parent_View @1050
+ location (-281, 449)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D6001D"
+ client @1050
+ supplier @924
+ line_style 3
+ origin_attachment (1159, 2273)
+ terminal_attachment (1159, 1428))
+ (object RoleView "minLengthFacet" @1052
+ Parent_View @1050
+ location (-281, 449)
+ label (object SegLabel @1053
+ Parent_View @1052
+ location (857, 2372)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 324
+ justify 0
+ label "+minLengthFacet"
+ pctDist 0.519527
+ height 38
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D60027"
+ client @1050
+ supplier @920
+ vertices (list Points
+ (1159, 2273)
+ (1159, 2409)
+ (450, 2409))
+ line_style 3
+ origin_attachment (1159, 2273)
+ terminal_attachment (450, 2409)
+ label (object SegLabel @1054
+ Parent_View @1052
+ location (523, 2369)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.913610
+ height 41
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$236" @1055
+ location (1197, 2334)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B898016D"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$237" @1056
+ Parent_View @1055
+ location (941, -610)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8990056"
+ client @1055
+ supplier @924
+ line_style 3
+ origin_attachment (1197, 2334)
+ terminal_attachment (1197, 1428))
+ (object RoleView "effectiveMinLengthFacet" @1057
+ Parent_View @1055
+ location (941, -610)
+ label (object SegLabel @1058
+ Parent_View @1057
+ location (856, 2454)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 468
+ justify 0
+ label "+effectiveMinLengthFacet"
+ pctDist 0.552604
+ height 40
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8990060"
+ client @1055
+ supplier @920
+ vertices (list Points
+ (1197, 2334)
+ (1197, 2493)
+ (450, 2493))
+ line_style 3
+ origin_attachment (1197, 2334)
+ terminal_attachment (450, 2493)
+ label (object SegLabel @1059
+ Parent_View @1057
+ location (527, 2451)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.916047
+ height 43
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$234" @1060
+ location (1231, 2438)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8400062"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$235" @1061
+ Parent_View @1060
+ location (863, -746)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B841001D"
+ client @1060
+ supplier @924
+ line_style 3
+ origin_attachment (1231, 2438)
+ terminal_attachment (1231, 1428))
+ (object RoleView "effectiveTotalDigitsFacet" @1062
+ Parent_View @1060
+ location (863, -746)
+ label (object SegLabel @1063
+ Parent_View @1062
+ location (859, 2632)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 468
+ justify 0
+ label "+effectiveTotalDigitsFacet"
+ pctDist 0.597030
+ height 37
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B8410027"
+ client @1060
+ supplier @921
+ vertices (list Points
+ (1231, 2438)
+ (1231, 2668)
+ (451, 2668))
+ line_style 3
+ origin_attachment (1231, 2438)
+ terminal_attachment (451, 2668)
+ label (object SegLabel @1064
+ Parent_View @1062
+ location (534, 2631)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.918812
+ height 38
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$214" @1065
+ location (1231, 2397)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D800DE"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$215" @1066
+ Parent_View @1065
+ location (-209, 253)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D803CD"
+ client @1065
+ supplier @924
+ line_style 3
+ origin_attachment (1231, 2397)
+ terminal_attachment (1231, 1428))
+ (object RoleView "totalDigitsFacet" @1067
+ Parent_View @1065
+ location (-209, 253)
+ label (object SegLabel @1068
+ Parent_View @1067
+ location (853, 2550)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 312
+ justify 0
+ label "+totalDigitsFacet"
+ pctDist 0.585567
+ height 38
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28B0D803D7"
+ client @1065
+ supplier @921
+ vertices (list Points
+ (1231, 2397)
+ (1231, 2587)
+ (451, 2587))
+ line_style 3
+ origin_attachment (1231, 2397)
+ terminal_attachment (451, 2587)
+ label (object SegLabel @1069
+ Parent_View @1067
+ location (535, 2560)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.914647
+ height 28
+ orientation 1))))
+ (object ClassView "Class" "Logical View::xsd::XSDTypeDefinition" @1070
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1232, 768)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @1070
+ location (1019, 574)
+ fill_color 13434879
+ nlines 1
+ max_width 426
+ justify 0
+ label "XSDTypeDefinition")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B66ECD302A9"
+ width 444
+ height 413
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @1071
+ location (1209, 1065)
+ line_color 3342489
+ fill_color 13434879
+ supplier @1070
+ vertices (list Points
+ (1209, 1065)
+ (1209, 974)))
+ (object AssociationViewNew "$UNNAMED$170" @1072
+ location (1090, 1031)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2880F503D9"
+ roleview_list (list RoleViews
+ (object RoleView "rootTypeDefinition" @1073
+ Parent_View @1072
+ location (322, -25)
+ label (object SegLabel @1074
+ Parent_View @1073
+ location (897, 1036)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 348
+ justify 0
+ label "+rootTypeDefinition"
+ pctDist -0.098765
+ height 194
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2880F9003C"
+ client @1072
+ supplier @1070
+ line_style 3
+ origin_attachment (1090, 1031)
+ terminal_attachment (1090, 974)
+ label (object SegLabel @1075
+ Parent_View @1073
+ location (1121, 1034)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.061728
+ height 31
+ orientation 1))
+ (object RoleView "$UNNAMED$171" @1076
+ Parent_View @1072
+ location (322, -25)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C2880F90046"
+ client @1072
+ supplier @922
+ line_style 3
+ origin_attachment (1090, 1031)
+ terminal_attachment (1090, 1088))))
+ (object AssociationViewNew "$UNNAMED$176" @1077
+ location (1538, 873)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A6DB01E5"
+ roleview_list (list RoleViews
+ (object RoleView "rootType" @1078
+ Parent_View @1077
+ location (178, 105)
+ label (object SegLabel @1079
+ Parent_View @1078
+ location (1558, 792)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 180
+ justify 0
+ label "+rootType"
+ pctDist -1.760870
+ height 20
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A6DD03DD"
+ client @1077
+ supplier @1070
+ vertices (list Points
+ (1538, 873)
+ (1538, 919)
+ (1454, 919))
+ line_style 3
+ origin_attachment (1538, 873)
+ terminal_attachment (1454, 919)
+ label (object SegLabel @1080
+ Parent_View @1078
+ location (1509, 875)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.016667
+ height 30
+ orientation 1))
+ (object RoleView "$UNNAMED$177" @1081
+ Parent_View @1077
+ location (178, 105)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A6DD03DE"
+ client @1077
+ supplier @1070
+ vertices (list Points
+ (1538, 873)
+ (1538, 828)
+ (1454, 828))
+ line_style 3
+ origin_attachment (1538, 873)
+ terminal_attachment (1454, 828))))
+ (object AssociationViewNew "$UNNAMED$178" @1082
+ location (1535, 684)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A7120108"
+ roleview_list (list RoleViews
+ (object RoleView "baseType" @1083
+ Parent_View @1082
+ location (175, -84)
+ label (object SegLabel @1084
+ Parent_View @1083
+ location (1559, 597)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 204
+ justify 0
+ label "+baseType"
+ pctDist -1.977273
+ height 24
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A7140151"
+ client @1082
+ supplier @1070
+ vertices (list Points
+ (1535, 684)
+ (1535, 728)
+ (1454, 728))
+ line_style 3
+ origin_attachment (1535, 684)
+ terminal_attachment (1454, 728)
+ label (object SegLabel @1085
+ Parent_View @1083
+ location (1506, 683)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist -0.027778
+ height 30
+ orientation 1))
+ (object RoleView "$UNNAMED$179" @1086
+ Parent_View @1082
+ location (175, -84)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A714015B"
+ client @1082
+ supplier @1070
+ vertices (list Points
+ (1535, 684)
+ (1535, 641)
+ (1454, 641))
+ line_style 3
+ origin_attachment (1535, 684)
+ terminal_attachment (1454, 641))))
+ (object AssociationViewNew "$UNNAMED$182" @1087
+ location (613, 940)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A7ED03C0"
+ roleview_list (list RoleViews
+ (object RoleView "complexType" @1088
+ Parent_View @1087
+ location (-747, 172)
+ label (object SegLabel @1089
+ Parent_View @1088
+ location (465, 983)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 264
+ justify 0
+ label "+complexType"
+ pctDist 0.373057
+ height 43
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A7F40117"
+ client @1087
+ supplier @923
+ vertices (list Points
+ (613, 940)
+ (284, 940)
+ (284, 1008))
+ line_style 3
+ origin_attachment (613, 940)
+ terminal_attachment (284, 1008)
+ label (object SegLabel @1090
+ Parent_View @1088
+ location (224, 972)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.909320
+ height 61
+ orientation 1))
+ (object RoleView "$UNNAMED$183" @1091
+ Parent_View @1087
+ location (-747, 172)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A7F40121"
+ client @1087
+ supplier @1070
+ line_style 3
+ origin_attachment (613, 940)
+ terminal_attachment (1010, 940))))
+ (object InheritView "" @1092
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B7FCAB1004D"
+ client @1070
+ supplier @900
+ line_style 3
+ origin_attachment (1112, 562)
+ terminal_attachment (1112, 510)
+ drawSupplier @901)
+ (object InheritView "" @1093
+ stereotype TRUE
+ line_color 3342489
+ quidu "3BA0D01901F1"
+ client @922
+ supplier @1070
+ line_style 3
+ origin_attachment (1146, 1088)
+ terminal_attachment (1146, 1065)
+ drawSupplier @1071)
+ (object AssociationViewNew "$UNNAMED$180" @1094
+ location (1362, 1133)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A74B0178"
+ roleview_list (list RoleViews
+ (object RoleView "simpleType" @1095
+ Parent_View @1094
+ location (-158, -163)
+ label (object SegLabel @1096
+ Parent_View @1095
+ location (1499, 1094)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+simpleType"
+ pctDist -0.246753
+ height 137
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A74D017B"
+ client @1094
+ supplier @924
+ line_style 3
+ origin_attachment (1362, 1133)
+ terminal_attachment (1362, 1292)
+ label (object SegLabel @1097
+ Parent_View @1095
+ location (1321, 1097)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist -0.227273
+ height 42
+ orientation 1))
+ (object RoleView "$UNNAMED$181" @1098
+ Parent_View @1094
+ location (-158, -163)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A74D0185"
+ client @1094
+ supplier @1070
+ line_style 3
+ origin_attachment (1362, 1133)
+ terminal_attachment (1362, 974))))
+ (object ClassView "Class" "Logical View::xsd::XSDFeature" @1099
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (2272, 384)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @1099
+ location (2002, 303)
+ fill_color 13434879
+ nlines 1
+ max_width 540
+ justify 0
+ label "XSDFeature")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16777088
+ quidu "3B69B537026C"
+ compartment (object Compartment
+ Parent_View @1099
+ location (2002, 363)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 0
+ compartmentItems (list Compartment
+ "+ global : boolean"
+ "+ featureReference : boolean"))
+ width 558
+ height 186
+ annotation 8
+ autoResize TRUE)
+ (object InheritTreeView "" @1100
+ location (2262, 568)
+ line_color 3342489
+ fill_color 13434879
+ supplier @1099
+ vertices (list Points
+ (2262, 568)
+ (2262, 477)))
+ (object InheritView "" @1101
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69EDEE01BF"
+ client @896
+ supplier @1099
+ line_style 3
+ origin_attachment (2346, 595)
+ terminal_attachment (2346, 568)
+ drawSupplier @1100)
+ (object AssociationViewNew "$UNNAMED$174" @1102
+ location (1553, 453)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A0F201A4"
+ roleview_list (list RoleViews
+ (object RoleView "type" @1103
+ Parent_View @1102
+ location (801, 293)
+ label (object SegLabel @1104
+ Parent_View @1103
+ location (1331, 499)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 108
+ justify 0
+ label "+type"
+ pctDist 0.506266
+ height 46
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A0F302E5"
+ client @1102
+ supplier @1070
+ vertices (list Points
+ (1553, 453)
+ (1222, 453)
+ (1222, 562))
+ line_style 3
+ origin_attachment (1553, 453)
+ terminal_attachment (1222, 562)
+ label (object SegLabel @1105
+ Parent_View @1103
+ location (1185, 479)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.812030
+ height 38
+ orientation 1))
+ (object RoleView "$UNNAMED$175" @1106
+ Parent_View @1102
+ location (801, 293)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C28A0F302F0"
+ client @1102
+ supplier @1099
+ line_style 3
+ origin_attachment (1553, 453)
+ terminal_attachment (1993, 453))))
+ (object AssociationViewNew "$UNNAMED$66" @1107
+ location (1908, 353)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C29010602D7"
+ roleview_list (list RoleViews
+ (object RoleView "resolvedFeature" @1108
+ Parent_View @1107
+ location (-268, -159)
+ label (object SegLabel @1109
+ Parent_View @1108
+ location (1729, 352)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 312
+ justify 0
+ label "+resolvedFeature"
+ pctDist -0.029412
+ height 180
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C29010B000E"
+ client @1107
+ supplier @1099
+ vertices (list Points
+ (1908, 353)
+ (1908, 387)
+ (1993, 387))
+ line_style 3
+ origin_attachment (1908, 353)
+ terminal_attachment (1993, 387)
+ label (object SegLabel @1110
+ Parent_View @1108
+ location (1945, 354)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.596639
+ height 34
+ orientation 0))
+ (object RoleView "$UNNAMED$67" @1111
+ Parent_View @1107
+ location (-268, -159)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C29010B0018"
+ client @1107
+ supplier @1099
+ vertices (list Points
+ (1908, 353)
+ (1908, 319)
+ (1993, 319))
+ line_style 3
+ origin_attachment (1908, 353)
+ terminal_attachment (1993, 319))))
+ (object InheritView "" @1112
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A26036D"
+ client @900
+ supplier @899
+ vertices (list Points
+ (494, 284)
+ (494, 244)
+ (996, 244))
+ line_style 3
+ origin_attachment (494, 284)
+ terminal_attachment (996, 244))
+ (object InheritView "" @1113
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B69B7DC0193"
+ client @887
+ supplier @1099
+ line_style 3
+ origin_attachment (1718, 812)
+ terminal_attachment (1718, 568)
+ drawSupplier @1100)
+ (object InheritView "" @1114
+ stereotype TRUE
+ line_color 3342489
+ quidu "3B684A1302A2"
+ client @924
+ supplier @1070
+ line_style 3
+ origin_attachment (1265, 1292)
+ terminal_attachment (1265, 1065)
+ drawSupplier @1071)
+ (object InheritView "" @1115
+ stereotype TRUE
+ line_color 3342489
+ quidu "3C290A2C0307"
+ client @1099
+ supplier @899
+ vertices (list Points
+ (2147, 291)
+ (2147, 244)
+ (1468, 244))
+ line_style 3
+ origin_attachment (2147, 291)
+ terminal_attachment (1468, 244))))))
diff --git a/plugins/org.eclipse.xsd/modeling32.png b/plugins/org.eclipse.xsd/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.xsd/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.xsd/plugin.properties b/plugins/org.eclipse.xsd/plugin.properties
new file mode 100644
index 0000000..8e5beee
--- /dev/null
+++ b/plugins/org.eclipse.xsd/plugin.properties
@@ -0,0 +1,219 @@
+# /**
+# * Copyright (c) 2002-2009 IBM Corporation and others.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v2.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v20.html
+# *
+# * Contributors:
+# * IBM - Initial API and implementation
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = XSD Model
+providerName = Eclipse Modeling Project
+
+_EXC_CompareNotSupported = Order comparison is not supported for the simple type
+
+_UI_DiagnosticFileLineColumn_message = {0}: URI {1} Line {2} Column {3}
+
+_UI_IOError_message = IO: {0}
+_UI_ParserError_message = DOM: {0}
+_UI_XSDError_message = XSD: {0}
+
+_UI_ResourceLoad_progress = Loading XML Schemas
+_UI_XML_SCHEMA_name = XML Schema
+
+_UI_XMLSchemaDiagnostic_marker = XML Schema Problem
+
+_UI_XSDDiagnosticSeverity_fatal = Fatal
+_UI_XSDDiagnosticSeverity_error = Error
+_UI_XSDDiagnosticSeverity_warning = Warning
+_UI_XSDDiagnosticSeverity_information = Information
+
+_UI_UnresolvedAttributeDeclaration_message = Attribute reference ''{0}'' is unresolved
+_UI_UnresolvedAttributeGroupDefinition_message = Attribute group reference ''{0}'' is unresolved
+_UI_UnresolvedElementDeclaration_message = Element reference ''{0}'' is unresolved
+_UI_UnresolvedIdentityConstraintDefinition_message = Key reference ''{0}'' is unresolved
+_UI_UnresolvedModelGroupDefinition_message = Model group reference ''{0}'' is unresolved
+_UI_UnresolvedTypeDefinition_message = Type reference ''{0}'' is unresolved
+_UI_UnresolvedSchemaDirective_message = The schema directive failed to resolve ''{0}''
+
+cvc-complex-type.3 = The attribute ''{0}'' is not permitted
+cvc-complex-type.4 = The attribute ''{0}'' is required
+cvc-datatype-valid.1.2.1 = The value ''{0}'' of {1} ''{2}'' must be of type ''{3}''
+cvc-enumeration-valid = The value ''{0}'' of {1} ''{2}'' must be one of {3} as constrained by ''{4}''
+cvc-fractionDigits-valid= The value ''{0}'' of {1} ''{2}'' must have at most {3} fraction digits as constrained by ''{4}''
+cvc-length-valid = The value ''{0}'' of {1} ''{2}'' must have length {3} as constrained by ''{4}''
+cvc-maxExclusive-valid = The value ''{0}'' of {1} ''{2}'' must be less than ''{3}'' as constrained by ''{4}''
+cvc-maxInclusive-valid = The value ''{0}'' of {1} ''{2}'' must be less than or equal to ''{3}'' as constrained by ''{4}''
+cvc-maxLength-valid = The value ''{0}'' of {1} ''{2}'' must have length at most {3} as constrained by ''{4}''
+cvc-minExclusive-valid = The value ''{0}'' of {1} ''{2}'' must be greater than ''{3}'' as constrained by ''{4}''
+cvc-minInclusive-valid = The value ''{0}'' of {1} ''{2}'' must be greater than or equal to ''{3}'' as constrained by ''{4}''
+cvc-minLength-valid = The value ''{0}'' of {1} ''{2}'' must have length at least {3} as constrained by ''{4}''
+cvc-pattern-valid = The value ''{0}'' of {1} ''{2}'' must conform to pattern ''{3}'' as constrained by ''{4}''
+cvc-totalDigits-valid= The value ''{0}'' of {1} ''{2}'' must have at most {3} digits as constrained by ''{4}''
+cvc-datatype-valid.1.2.3 = The value ''{0}'' of {1} ''{2}'' must be of one of the members types of ''{3}''
+
+st-props-correct.2 = The type is circularly defined
+
+dt-regex = The regular expression ''{0}'' failed to validate{1,choice,-1#|0# at location {1}}: {2}
+
+cos-applicable-facets = The {0} facet is not permitted in a type based on ''{1}''
+cos-list-of-atomic = The item type of the list is not atomic or union
+cos-no-circular-unions = The union type is circularly defined
+cos-valid-default.2.2.2 = An element with a value constraint must have simple content, or mixed, emptiable content
+cos-ct-derived-ok = The base type ''{0}'' has a derivation method excluded by the substitution group
+cos-ct-extends.1.1 = The base type ''{0}'' is final for extension
+cos-ct-extends.1.2.1 = The attribute ''{0}'' must present as in the base
+cos-ct-extends.1.2.2 = The attribute ''{0}'' must have type ''{1}'' as in the base
+cos-ct-extends.1.3 = The attribute wildcard must be a superset of that of the base
+cos-ct-extends.1.4.1 = The content type must be the same simple type ''{0}'' as that of the base
+cos-ct-extends.1.4.2.2.2.1 = The basetype has ''{0}'' content so this extended type must also
+cos-ct-extends.1.5.1 = The attribute ''{0}'' is prohibited in by prior restriction
+cos-ct-extends.2.1 = The base type must be the content type
+cos-all-limited.2 = The maxOccurs of a particle in an 'all' group must be 0 or 1
+cos-element-consistent = The element ''{0}'' may not have both type ''{1}'' and type ''{2}''
+cos-st-restricts.1.2 = The base type ''{0}'' is final for restriction
+cos-st-restricts.2.0 = The base type ''{0}'' is final for list
+cos-st-restricts.3.0 = The base type ''{0}'' is final for union
+cos-ct-retricts.0 = The type ''{0}'' is not a valid base type
+cos-st-retricts.0.0 = The type ''{0}'' is not a valid base type outside the schema for schemas
+cos-st-retricts.0.1 = The type ''{0}'' is not a valid item type
+cos-st-retricts.0.2 = The type ''{0}'' is not a valid member type
+
+src-single-facet-value = The {0} facet cannot be repeated
+src-attribute.1 = The attributes 'fixed' and 'default' may not both be present
+src-attribute.2 = The 'use' must be 'optional' when a 'default' is present
+src-attribute.3.1 = An attribute reference may not have a name
+src-attribute.3.2.1 = An attribute reference may not have a form
+src-attribute.3.2.2 = An attribute reference may not have a type
+src-attribute.4 = An attribute may not have both a type and an anonymous type
+src-element.1 = The attributes 'fixed' and 'default' may not both be present
+src-element.2.1 = An element reference may not have a name
+src-element.2.2.1 = An element reference may only have an id, minOccurs, or maxOccurs
+src-element.2.2.2 = An element reference may only contain an annotation
+src-element.3 = An element may not have both a type and an anonymous type
+src-attribute_group.2 = The intensional intersection of the attribute wildcards is not expressible
+src-attribute_group.3 = The attribute group may not be circularly defined
+src-ct.1 = The base type ''{0}'' must be complex to support complex content
+src-ct.2.1 = The base type ''{0}'' must have simple content to support simple content
+src-ct.2.2 = The base type ''{0}'' may not be simple to support a restriction
+src-ct.4 = The intensional intersection of the attribute wildcards is not expressible
+src-import.0 = The location ''{0}'' has not been resolved
+src-import.0.1 = There is no xmlns declaration for namespace ''{0}''
+src-import.0.2 = The location ''{0}'' has not been resolved because the import is unused
+src-import.1 = The namespace ''{0}'' conflicts with that of the importing schema
+src-import.2 = The location ''{0}'' may not resolve to something other than a schema
+src-import.3 = The target namespace ''{0}'' of the resolved schema conflicts with ''{1}''
+src-include.0 = The location ''{0}'' has not been resolved
+src-include.1 = The location ''{0}'' may not resolve to something other than a schema
+src-include.2 = The target namespace ''{0}'' of the resolved schema conflicts with that of the including schema
+src-redefine.0 = The location ''{0}'' has not been resolved
+src-redefine.1 = The location ''{0}'' must resolve for the redefinitions to be meaningful
+src-redefine.2 = The location ''{0}'' may not resolve to something other than a schema
+src-redefine.3 = The target namespace ''{0}'' of the resolved schema conflicts with that of the including schema
+src-redefine.4 = The base type must be ''{0}''
+src-redefine.5 = The type ''{0}'' must resolve in the redefined schema
+src-redefine.6.1.1 = The model group may not have more than one self reference
+src-redefine.6.1.2 = The value of both 'minOccurs' and 'maxOccurs' must 1
+src-redefine.6.2.1 = The group ''{0}'' must resolve in the redefined schema
+src-redefine.6.2.2 = The group must be a valid restriction of the version in the redefined schema
+src-redefine.7.1 = The attribute group may not have more than one self reference
+src-redefine.7.2.1 = The attribute group ''{0}'' must resolve in the redefined schema
+src-list-itemType-or-simpleType = The 'itemType' attribute conflicts with the contained item type
+src-list-itemType-or-simpleType.0 = The 'itemType' attribute or a contained item type must be present
+src-restriction-base-or-simpleType = The 'base' attribute conflicts with the contained base type
+src-restriction-base-or-simpleType.0 = The 'base' attribute or a contained base type must be present
+src-union-memberTypes-or-simpleTypes = The 'memberTypes' attribute must be present or there must be contained member types
+
+# These words used to compose phrases along with a proper noun
+#
+attribute_noun = attribute
+element_noun = element
+attributeGroup_noun = attribute group
+modelGroup_noun = model group
+type_noun = type
+identityConstraint_noun = identity constraint
+notation_noun = notation
+
+# This uses the nouns above
+coss-schema.2 = The {0} may not have duplicate name and target namespace ''{1}''
+coss-attribute.3 = An attribute with an 'ID' type may not have a value constraint
+coss-attruse.2 = The ''fixed'' value ''{0}'' must be equal to the ''fixed'' value ''{1}'' of the referenced attribute
+coss-attrGroup.2 = The attribute name ''{0}'' collides with that of another
+coss-attrGroup.3 = The attribute ''{0}'' may not be an ID because ''{1}'' is the ID
+coss-modelGroup.2 = The group may not be circularly defined
+coss-particle.0.1 = The content model with {0} states is too large
+coss-particle.0.2 = The <all> content model with {0} options is too large
+coss-particle.2.1 = The value of 'minOccurs' may not be greater than the value of 'maxOccurs'
+
+e-props-correct.3 = The element''s type does not derive from ''{0}'' as required by the substitution group
+e-props-correct.4 = An attribute with an 'ID' type may not have a value constraint
+
+ct-props-correct.3 = The type may not be circularly defined
+ct-props-correct.4 = The attribute name ''{0}'' collides with that of another
+ct-props-correct.5 = The attribute ''{0}'' may not be an ID because ''{1}'' is the ID
+
+derivation-ok-restriction.1 = The base type ''{0}'' is final for restriction
+derivation-ok-restriction.2.1.1 = The attribute ''{0}'' must be ''required'' as in the base
+derivation-ok-restriction.2.1.2 = The type of attribute ''{0}'' must derive from ''{1}''
+derivation-ok-restriction.2.2 = The attribute target namespace of ''{0}'' must be allowed by the base type wildcard
+derivation-ok-restriction.3 = The attribute ''{0}'' must be declared since it is required in the base type
+derivation-ok-restriction.4 = The attribute wildcard must be a subset of that of the base type
+derivation-ok-restriction.5.1.1 = The simple content type ''{0}'' must derive from ''{1}''
+derivation-ok-restriction.5.1.2 = The base content type must be mixed and emptiable to support simple content
+derivation-ok-restriction.5.2 = The restricted content type many not be empty because the base isn't empty or emptiable
+derivation-ok-restriction.5.3.1 = A type with complex content may not restrict a base type with simple or empty content
+derivation-ok-restriction.5.3.2 = A type with mixed content may only restrict a base type with mixed content
+derivation-ok-restriction.5.3.3 = The restricted content type must accept a subset of the content accepted by the base type
+
+key-overlap.1 = The element ''{0}'' may not overlap with another element
+key-overlap.2 = The element ''{0}'' may not overlap with a wildcard allowing its namespace
+key-overlap.3 = A wildcard that allows ''{0}'' may not overlap with a wildcard allowing the same namespace
+
+c-props-correct.2 = The keyref must contain the same number of fields as the referenced key
+
+rcase-NameAndTypeOK.2 = The element ''{0}'' must be ''nillable'' as in the base
+rcase-NameAndTypeOK.4 = The ''fixed'' value ''{0}'' of element ''{1}'' must be the same as in the base
+rcase-NameAndTypeOK.6 = The ''disallowed substitutions'' of ''{0}'' must be a superset of those in the base
+rcase-NameAndTypeOK.7 = The type of element ''{0}'' must derive from ''{1}''
+
+fractionDigits-valid-restriction = The value ''{0}'' is not less than or equal to the value ''{1}'' of the fractionDigits facet of ''{2}''
+length-minLength-maxLength = The length facet is not permitted in the same type as a minLength or maxLength facet
+length-valid-restriction = The value ''{0}'' is not equal to the value ''{1}'' of the length facet of ''{2}''
+maxExclusive-valid-restriction.2 = The value ''{0}'' is not less than or equal to the value ''{1}'' of the maxExclusive facet of ''{2}''
+maxExclusive-valid-restriction.4 = The value ''{0}'' is not greater than the value ''{1}'' of the minExclusive facet of ''{2}''
+maxInclusive-maxExclusive = The maxExclusive facet cannot appear in the same type as a maxInclusive facet
+maxInclusive-valid-restriction.2 = The value ''{0}'' is not less than or equal to the value ''{1}'' of the maxExclusive facet of ''{2}''
+maxInclusive-valid-restriction.4 = The value ''{0}'' is not greater than the value ''{1}'' of the minExclusive facet of ''{2}''
+maxLength-valid-restriction = The value ''{0}'' is not less than or equal to the value ''{1}'' of the maxLength facet of ''{2}''
+minExclusive-less-than-equal-to-maxExclusive = The value ''{0}'' is not less than or equal to the value ''{1}'' of the maxExclusive facet
+minExclusive-less-than-maxInclusive = The value ''{0}'' is not less than the value ''{1}'' of the maxExclusive facet
+minExclusive-valid-restriction.2 = The value ''{0}'' is not greater than or equal to the value ''{1}'' of the minExclusive facet of ''{2}''
+minExclusive-valid-restriction.4 = The value ''{0}'' is not less than the value ''{1}'' of the maxExclusive facet of ''{2}''
+minInclusive-less-than-equal-to-maxInclusive = The value ''{0}'' is not less than or equal to the value ''{1}'' of the maxInclusive facet
+minInclusive-less-than-maxExclusive = The value ''{0}'' is not less than the value ''{1}'' of the maxExclusive facet
+minInclusive-less-than-maxInclusive = The value ''{0}'' is not less than the value ''{1}'' of the maxInclusive facet
+minInclusive-minExclusive= The minExclusive facet cannot appear in the same type as a minInclusive facet
+minInclusive-valid-restriction.2 = The value ''{0}'' is not greater than or equal to the value ''{1}'' of the minExclusive facet of ''{2}''
+minInclusive-valid-restriction.4 = The value ''{0}'' is not less than the value ''{1}'' of the maxExclusive facet of ''{2}''
+minLength-less-than-equal-to-maxLength = The value ''{0}'' is not less than or equal to the value ''{1}'' of the maxlength facet
+minLength-valid-restriction = The value ''{0}'' is not greater than or equal to the value ''{1}'' of the minLength facet of ''{2}''
+totalDigits-valid-restriction = The value ''{0}'' is not less than or equal to the value ''{1}'' of the totalDigits facet of ''{2}''
+whiteSpace-valid-restriction = The value ''{0}'' is less constraining than the value ''{1}'' of the whiteSpace facet of ''{2}''
+facet-fixed-valid-restriction = The value ''{0}'' is not equal to the fixed value ''{1}'' of the {2} facet of ''{3}''
+fractionDigits-less-than-equal-to-totalDigits = The value ''{0}'' is not less than or equal to the value ''{1}'' of the totalDigits facet
+
+# Used in content-valid.1 for {2}
+expecting_nothing = nothing
+content-valid.1 = The element ''{0}'' is not permitted as constrained by ''{1}''; expecting {2}
+content-valid.2 = The content is incomplete as constrained by ''{0}''; expecting {1}
+content-valid.3 = The mixed content ''{0}'' is not permitted as constrained by ''{1}''; expecting whitespace
+
+no-xmlns = An attribute may not have the name 'xmlns'
+no-xsi = An attribute with target namespace 'http://www.w3.org/2001/XMLSchema-instance' may not be declared
+
+cos-all-limited.1 = An <all> content model may not be nested within another content model
+_UI_XSD_content_type = XML Schema File
diff --git a/plugins/org.eclipse.xsd/plugin.xml b/plugins/org.eclipse.xsd/plugin.xml
new file mode 100644
index 0000000..382bb70
--- /dev/null
+++ b/plugins/org.eclipse.xsd/plugin.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://www.eclipse.org/xsd/2002/XSD"
+ class="org.eclipse.xsd.XSDPackage"
+ genModel="model/XSD.genmodel"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ type="xsd"
+ class="org.eclipse.xsd.util.XSDResourceFactoryImpl"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.content_parser">
+ <parser
+ contentTypeIdentifier="org.eclipse.xsd"
+ class="org.eclipse.xsd.util.XSDResourceFactoryImpl"/>
+ </extension>
+
+ <extension point="org.eclipse.core.contenttype.contentTypes">
+ <content-type
+ base-type="org.eclipse.core.runtime.xml"
+ file-extensions="xsd"
+ id="org.eclipse.xsd"
+ name="%_UI_XSD_content_type"
+ priority="normal">
+ <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber2">
+ <parameter name="element" value="{http://www.w3.org/2001/XMLSchema}schema"/>
+ <parameter name="element" value="{http://www.w3.org/2000/10/XMLSchema}schema"/>
+ <parameter name="element" value="{http://www.w3.org/1999/XMLSchema}schema"/>
+ </describer>
+ </content-type>
+ </extension>
+
+ <extension point="org.eclipse.team.core.fileTypes">
+ <fileTypes
+ extension="xsd"
+ type="text"/>
+ </extension>
+
+ <extension
+ id="diagnostic"
+ name="%_UI_XMLSchemaDiagnostic_marker"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.problemmarker"/>
+ <persistent value="true"/>
+ <attribute name="diagnostic"/>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.xsd/pom.xml b/plugins/org.eclipse.xsd/pom.xml
new file mode 100644
index 0000000..1ba463f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.emf.parent/plugins</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.xsd</artifactId>
+ <version>2.19.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.xsd/release.digest b/plugins/org.eclipse.xsd/release.digest
new file mode 100644
index 0000000..fb4f39b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/release.digest
Binary files differ
diff --git a/plugins/org.eclipse.xsd/release.properties b/plugins/org.eclipse.xsd/release.properties
new file mode 100644
index 0000000..cd393f8
--- /dev/null
+++ b/plugins/org.eclipse.xsd/release.properties
@@ -0,0 +1,6 @@
+#
+#Mon Sep 10 16:55:49 CEST 2012
+root.projects=org.eclipse.xsd.sdk-feature
+baseline.for.integration=true
+provide.service=false
+show.deviations=false
diff --git a/plugins/org.eclipse.xsd/release.xml b/plugins/org.eclipse.xsd/release.xml
new file mode 100644
index 0000000..b14d39d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/release.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<release>
+ <feature name="org.eclipse.xsd" version="2.20.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd" version="2.18.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.doc" version="2.27.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.doc" version="2.25.0"/>
+ <plugin name="org.eclipse.xsd.cheatsheets" version="2.8.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.ecore.converter" version="2.13.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.ecore.converter" version="2.8.0"/>
+ <plugin name="org.eclipse.xsd.ecore.importer" version="2.9.0"/>
+ <plugin name="org.eclipse.xsd.ecore.exporter" version="2.7.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.ecore.converter.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.edit" version="2.14.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.edit" version="2.11.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.edit.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.editor" version="2.14.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.editor" version="2.11.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.editor.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.license" version="2.12.0"/>
+ <feature name="org.eclipse.xsd.mapping" version="2.14.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.mapping" version="2.8.0"/>
+ <plugin name="org.eclipse.emf.mapping.xsd2ecore" version="2.9.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.mapping.editor" version="2.14.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <plugin name="org.eclipse.xsd.mapping.editor" version="2.9.0"/>
+ <plugin name="org.eclipse.emf.mapping.xsd2ecore.editor" version="2.9.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.mapping.editor.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.mapping.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.sdk" version="2.32.0">
+ <feature name="org.eclipse.xsd.license" version="2.12.0" license="true"/>
+ <feature name="org.eclipse.xsd" version="2.20.0"/>
+ <feature name="org.eclipse.xsd.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.ecore.converter" version="2.13.0"/>
+ <feature name="org.eclipse.xsd.ecore.converter.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.edit" version="2.14.0"/>
+ <feature name="org.eclipse.xsd.edit.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.editor" version="2.14.0"/>
+ <feature name="org.eclipse.xsd.editor.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.mapping" version="2.14.0"/>
+ <feature name="org.eclipse.xsd.mapping.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.mapping.editor" version="2.14.0"/>
+ <feature name="org.eclipse.xsd.mapping.editor.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <feature name="org.eclipse.xsd.doc" version="2.27.0"/>
+ <plugin name="org.eclipse.xsd.example.installer" version="1.4.0"/>
+ </feature>
+ <feature name="org.eclipse.xsd.source" version="0.0.0"/> <!-- UNRESOLVED -->
+ <plugin name="org.eclipse.emf.mapping.xsd2ecore" version="2.9.0"/>
+ <plugin name="org.eclipse.emf.mapping.xsd2ecore.editor" version="2.9.0"/>
+ <plugin name="org.eclipse.xsd" version="2.18.0"/>
+ <plugin name="org.eclipse.xsd.cheatsheets" version="2.8.0"/>
+ <plugin name="org.eclipse.xsd.doc" version="2.25.0"/>
+ <plugin name="org.eclipse.xsd.ecore.converter" version="2.8.0"/>
+ <plugin name="org.eclipse.xsd.ecore.exporter" version="2.7.0"/>
+ <plugin name="org.eclipse.xsd.ecore.importer" version="2.9.0"/>
+ <plugin name="org.eclipse.xsd.edit" version="2.11.0"/>
+ <plugin name="org.eclipse.xsd.editor" version="2.11.0"/>
+ <plugin name="org.eclipse.xsd.example.installer" version="1.4.0"/>
+ <plugin name="org.eclipse.xsd.mapping" version="2.8.0"/>
+ <plugin name="org.eclipse.xsd.mapping.editor" version="2.9.0"/>
+</release>
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAnnotation.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAnnotation.java
new file mode 100644
index 0000000..2ad02d4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAnnotation.java
@@ -0,0 +1,140 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Set;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.util.EList;
+
+
+import org.w3c.dom.Attr;
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cAnnotations"><em><b>Annotation</b></em></a>'.
+ * Access to the contents of an annotation is provided via their DOM representation.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDAnnotation#getApplicationInformation <em>Application Information</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAnnotation#getUserInformation <em>User Information</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAnnotation#getAttributes <em>Attributes</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDAnnotation()
+ * @model
+ * @generated
+ */
+public interface XSDAnnotation extends XSDComponent, XSDRedefineContent
+{
+ /**
+ * Returns the value of the '<em><b>Application Information</b></em>' attribute list.
+ * The list contents are of type {@link org.w3c.dom.Element}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#application_information">application information</a>
+ * infoset property,
+ * i.e., a list of <a href="http://www.w3.org/TR/xmlschema-1/#element-appinfo">appinfo</a> elements.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Application Information</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAnnotation_ApplicationInformation()
+ * @model dataType="org.eclipse.xsd.DOMElement"
+ * @generated
+ */
+ EList<Element> getApplicationInformation();
+
+ /**
+ * Returns the value of the '<em><b>User Information</b></em>' attribute list.
+ * The list contents are of type {@link org.w3c.dom.Element}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#user_information">user information</a>
+ * infoset property,
+ * i.e., a list of <a href="http://www.w3.org/TR/xmlschema-1/#element-documentation">documentation</a> elements.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Information</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAnnotation_UserInformation()
+ * @model dataType="org.eclipse.xsd.DOMElement"
+ * @generated
+ */
+ EList<Element> getUserInformation();
+
+ /**
+ * Returns the value of the '<em><b>Attributes</b></em>' attribute list.
+ * The list contents are of type {@link org.w3c.dom.Attr}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#attributes">attributes</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attributes</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAnnotation_Attributes()
+ * @model dataType="org.eclipse.xsd.DOMAttr"
+ * @generated
+ */
+ EList<Attr> getAttributes();
+
+ /**
+ * Creates a new appinfo element using the containing schema's document as the factory.
+ * The caller is responsible for adding the appinfo element to annotation element.
+ * @param sourceURI the initial value of the source attribute.
+ * @return a new appinfo element.
+ */
+ Element createApplicationInformation(String sourceURI);
+
+ /**
+ * This creates a new documentation element using the containing schema's document as the factory.
+ * The caller is responsible for adding the documentation element to annotation element.
+ * @param sourceURI the initial value of the source attribute.
+ * @return a new documentation element.
+ */
+ Element createUserInformation(String sourceURI);
+
+ /**
+ * Returns only those elements returned by {@link #getApplicationInformation()} with the given sourceURI;
+ * a null sourceURI matches elements without a source attribute.
+ * @param sourceURI the source URI to match.
+ * @return the elements with the given sourceURI.
+ */
+ EList<Element> getApplicationInformation(String sourceURI);
+
+ /**
+ * Returns only those elements returned by {@link #getUserInformation()} with the given sourceURI;
+ * a null sourceURI matches elements without a source attribute.
+ * @param sourceURI the source URI to match.
+ * @return the elements with the given sourceURI.
+ */
+ EList<Element> getUserInformation(String sourceURI);
+
+ /**
+ * Returns the set of source attribute values of all the appinfo elements.
+ * @return the set of source attribute values of all the appinfo elements.
+ */
+ Set<String> getApplicationInformationSources();
+
+ /**
+ * Returns the set of source attribute values of all the documentation elements.
+ * @return the set of source attribute values of all the documentation elements.
+ */
+ Set<String> getUserInformationSources();
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeDeclaration.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeDeclaration.java
new file mode 100644
index 0000000..0791c04
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeDeclaration.java
@@ -0,0 +1,165 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cAttribute_Declarations"><em><b>Attribute Declaration</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDAttributeDeclaration#isAttributeDeclarationReference <em>Attribute Declaration Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeDeclaration#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeDeclaration#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeDeclaration#getTypeDefinition <em>Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeDeclaration#getResolvedAttributeDeclaration <em>Resolved Attribute Declaration</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeDeclaration()
+ * @model
+ * @generated
+ */
+public interface XSDAttributeDeclaration extends XSDFeature, XSDSchemaContent
+{
+ /**
+ * Returns the value of the '<em><b>Attribute Declaration Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute is equivalent to
+ *<pre>
+ * xsdAttributeDeclaration != xsdAttributeDeclaration.{@link #getResolvedAttributeDeclaration getResolvedAttributeDeclaration}()
+ *</pre>
+ * An infoset feature will never return an instance for which this is the <code>true</code>
+ * since this is a concrete attribute that is used to represent an attribute declaration
+ * with a <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">ref</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Declaration Reference</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeDeclaration_AttributeDeclarationReference()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isAttributeDeclarationReference();
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#a-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeDeclaration_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeDeclaration#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Anonymous Type Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents a simple type definition defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">attribute</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Anonymous Type Definition</em>' containment reference.
+ * @see #setAnonymousTypeDefinition(XSDSimpleTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeDeclaration_AnonymousTypeDefinition()
+ * @model containment="true"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getAnonymousTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeDeclaration#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Anonymous Type Definition</em>' containment reference.
+ * @see #getAnonymousTypeDefinition()
+ * @generated
+ */
+ void setAnonymousTypeDefinition(XSDSimpleTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#a-simple_type_definition">type definition</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type Definition</em>' reference.
+ * @see #setTypeDefinition(XSDSimpleTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeDeclaration_TypeDefinition()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeDeclaration#getTypeDefinition <em>Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type Definition</em>' reference.
+ * @see #getTypeDefinition()
+ * @generated
+ */
+ void setTypeDefinition(XSDSimpleTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Resolved Attribute Declaration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the attribute declaration
+ * resolved by the <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">ref</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Attribute Declaration</em>' reference.
+ * @see #setResolvedAttributeDeclaration(XSDAttributeDeclaration)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeDeclaration_ResolvedAttributeDeclaration()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDAttributeDeclaration getResolvedAttributeDeclaration();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeDeclaration#getResolvedAttributeDeclaration <em>Resolved Attribute Declaration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Attribute Declaration</em>' reference.
+ * @see #getResolvedAttributeDeclaration()
+ * @generated
+ */
+ void setResolvedAttributeDeclaration(XSDAttributeDeclaration value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeGroupContent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeGroupContent.java
new file mode 100644
index 0000000..6a2c38f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeGroupContent.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Attribute Group Content</b></em>'.
+ * It is used to represent the types of object returned by
+ * {@link XSDAttributeGroupDefinition#getContents()} and
+ * {@link XSDComplexTypeDefinition#getAttributeContents()}.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupContent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDAttributeGroupContent extends XSDConcreteComponent
+{
+ // No additional methods
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeGroupDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeGroupDefinition.java
new file mode 100644
index 0000000..6702f5d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeGroupDefinition.java
@@ -0,0 +1,231 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cAttribute_Group_Definitions"><em><b>Attribute Group Definition</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#isAttributeGroupDefinitionReference <em>Attribute Group Definition Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeUses <em>Attribute Uses</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcard <em>Attribute Wildcard</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getResolvedAttributeGroupDefinition <em>Resolved Attribute Group Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getSyntheticWildcard <em>Synthetic Wildcard</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition()
+ * @model
+ * @generated
+ */
+public interface XSDAttributeGroupDefinition extends XSDRedefinableComponent, XSDAttributeGroupContent, XSDRedefineContent
+{
+ /**
+ * Returns the value of the '<em><b>Attribute Group Definition Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute is equivalent to
+ *<pre>
+ * xsdAttributeGroupDefinition != xsdAttributeGroupDefinition.{@link #getResolvedAttributeGroupDefinition getResolvedAttributeGroupDefinition}()
+ *</pre>
+ * An infoset feature will never return an instance for which this is the <code>true</code>
+ * since this is a concrete attribute that is used to represent an attribute group definition
+ * with a <a href="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup">ref</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Group Definition Reference</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_AttributeGroupDefinitionReference()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isAttributeGroupDefinitionReference();
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ag-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAttributeGroupContent}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the contents defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup">attributeGroup</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_Contents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDAttributeGroupContent> getContents();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Uses</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAttributeUse}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ag-attribute_uses">attribute uses</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Uses</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_AttributeUses()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAttributeUse> getAttributeUses();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Wildcard Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the attribute wildcard defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup">attributeGroup</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Wildcard Content</em>' containment reference.
+ * @see #setAttributeWildcardContent(XSDWildcard)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_AttributeWildcardContent()
+ * @model containment="true"
+ * @generated
+ */
+ XSDWildcard getAttributeWildcardContent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Attribute Wildcard Content</em>' containment reference.
+ * @see #getAttributeWildcardContent()
+ * @generated
+ */
+ void setAttributeWildcardContent(XSDWildcard value);
+
+ /**
+ * Returns the value of the '<em><b>Attribute Wildcard</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ag-attribute_wildcard">attribute wildcard</a>
+ * infoset property.
+ * It is computed from the {@link #getAttributeWildcardContent() attribute wildcard content} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Wildcard</em>' reference.
+ * @see #setAttributeWildcard(XSDWildcard)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_AttributeWildcard()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDWildcard getAttributeWildcard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcard <em>Attribute Wildcard</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Attribute Wildcard</em>' reference.
+ * @see #getAttributeWildcard()
+ * @generated
+ */
+ void setAttributeWildcard(XSDWildcard value);
+
+ /**
+ * Returns the value of the '<em><b>Resolved Attribute Group Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the attribute group definition
+ * resolved by the <a href="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup">ref</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Attribute Group Definition</em>' reference.
+ * @see #setResolvedAttributeGroupDefinition(XSDAttributeGroupDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_ResolvedAttributeGroupDefinition()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDAttributeGroupDefinition getResolvedAttributeGroupDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getResolvedAttributeGroupDefinition <em>Resolved Attribute Group Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Attribute Group Definition</em>' reference.
+ * @see #getResolvedAttributeGroupDefinition()
+ * @generated
+ */
+ void setResolvedAttributeGroupDefinition(XSDAttributeGroupDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Synthetic Wildcard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This contains the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ag-attribute_wildcard">attribute wildcard</a>
+ * infoset property, if the rules require a synthesized component.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Synthetic Wildcard</em>' containment reference.
+ * @see #setSyntheticWildcard(XSDWildcard)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeGroupDefinition_SyntheticWildcard()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ XSDWildcard getSyntheticWildcard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getSyntheticWildcard <em>Synthetic Wildcard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Synthetic Wildcard</em>' containment reference.
+ * @see #getSyntheticWildcard()
+ * @generated
+ */
+ void setSyntheticWildcard(XSDWildcard value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeUse.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeUse.java
new file mode 100644
index 0000000..067dbcb
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeUse.java
@@ -0,0 +1,290 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cAttributeUse"><em><b>Attribute Use</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#isRequired <em>Required</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#getConstraint <em>Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#getUse <em>Use</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#getLexicalValue <em>Lexical Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#getAttributeDeclaration <em>Attribute Declaration</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDAttributeUse#getContent <em>Content</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse()
+ * @model
+ * @generated
+ */
+public interface XSDAttributeUse extends XSDComponent, XSDAttributeGroupContent
+{
+ /**
+ * Returns the value of the '<em><b>Required</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#required">required</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Required</em>' attribute.
+ * @see #setRequired(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_Required()
+ * @model
+ * @generated
+ */
+ boolean isRequired();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#isRequired <em>Required</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Required</em>' attribute.
+ * @see #isRequired()
+ * @generated
+ */
+ void setRequired(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#au-value_constraint">value constraint</a>
+ * infoset property.
+ * It is computed from the {@link #getLexicalValue() lexical value} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(Object)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_Value()
+ * @model dataType="org.eclipse.xsd.Value"
+ * @generated
+ */
+ Object getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Constraint</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDConstraint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the constraint of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#au-value_constraint">value constraint</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Constraint</em>' attribute.
+ * @see org.eclipse.xsd.XSDConstraint
+ * @see #isSetConstraint()
+ * @see #unsetConstraint()
+ * @see #setConstraint(XSDConstraint)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_Constraint()
+ * @model unsettable="true"
+ * @generated
+ */
+ XSDConstraint getConstraint();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getConstraint <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Constraint</em>' attribute.
+ * @see org.eclipse.xsd.XSDConstraint
+ * @see #isSetConstraint()
+ * @see #unsetConstraint()
+ * @see #getConstraint()
+ * @generated
+ */
+ void setConstraint(XSDConstraint value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getConstraint <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetConstraint()
+ * @see #getConstraint()
+ * @see #setConstraint(XSDConstraint)
+ * @generated
+ */
+ void unsetConstraint();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getConstraint <em>Constraint</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Constraint</em>' attribute is set.
+ * @see #unsetConstraint()
+ * @see #getConstraint()
+ * @see #setConstraint(XSDConstraint)
+ * @generated
+ */
+ boolean isSetConstraint();
+
+ /**
+ * Returns the value of the '<em><b>Use</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDAttributeUseCategory}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">use</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Use</em>' attribute.
+ * @see org.eclipse.xsd.XSDAttributeUseCategory
+ * @see #isSetUse()
+ * @see #unsetUse()
+ * @see #setUse(XSDAttributeUseCategory)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_Use()
+ * @model unsettable="true"
+ * @generated
+ */
+ XSDAttributeUseCategory getUse();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getUse <em>Use</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Use</em>' attribute.
+ * @see org.eclipse.xsd.XSDAttributeUseCategory
+ * @see #isSetUse()
+ * @see #unsetUse()
+ * @see #getUse()
+ * @generated
+ */
+ void setUse(XSDAttributeUseCategory value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getUse <em>Use</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetUse()
+ * @see #getUse()
+ * @see #setUse(XSDAttributeUseCategory)
+ * @generated
+ */
+ void unsetUse();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getUse <em>Use</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Use</em>' attribute is set.
+ * @see #unsetUse()
+ * @see #getUse()
+ * @see #setUse(XSDAttributeUseCategory)
+ * @generated
+ */
+ boolean isSetUse();
+
+ /**
+ * Returns the value of the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">default</a> or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">fixed</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Value</em>' attribute.
+ * @see #setLexicalValue(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_LexicalValue()
+ * @model
+ * @generated
+ */
+ String getLexicalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getLexicalValue <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lexical Value</em>' attribute.
+ * @see #getLexicalValue()
+ * @generated
+ */
+ void setLexicalValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Attribute Declaration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#attribute">attribute</a>
+ * infoset property.
+ * It is computed from the {@link #getContent() content} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Declaration</em>' reference.
+ * @see #setAttributeDeclaration(XSDAttributeDeclaration)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_AttributeDeclaration()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDAttributeDeclaration getAttributeDeclaration();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getAttributeDeclaration <em>Attribute Declaration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Attribute Declaration</em>' reference.
+ * @see #getAttributeDeclaration()
+ * @generated
+ */
+ void setAttributeDeclaration(XSDAttributeDeclaration value);
+
+ /**
+ * Returns the value of the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the underlying concrete
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">attribute</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content</em>' containment reference.
+ * @see #setContent(XSDAttributeDeclaration)
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUse_Content()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ XSDAttributeDeclaration getContent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDAttributeUse#getContent <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content</em>' containment reference.
+ * @see #getContent()
+ * @generated
+ */
+ void setContent(XSDAttributeDeclaration value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeUseCategory.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeUseCategory.java
new file mode 100644
index 0000000..9059a7d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDAttributeUseCategory.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Attribute Use Category</b></em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getUse()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDAttributeUseCategory()
+ * @model
+ * @generated
+ */
+public enum XSDAttributeUseCategory implements Enumerator
+{
+ /**
+ * The '<em><b>Optional</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #OPTIONAL
+ * @generated
+ * @ordered
+ */
+ OPTIONAL_LITERAL(0, "optional", "optional"),
+
+ /**
+ * The '<em><b>Prohibited</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PROHIBITED
+ * @generated
+ * @ordered
+ */
+ PROHIBITED_LITERAL(1, "prohibited", "prohibited"),
+
+ /**
+ * The '<em><b>Required</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #REQUIRED
+ * @generated
+ * @ordered
+ */
+ REQUIRED_LITERAL(2, "required", "required");
+
+ /**
+ * The '<em><b>Optional</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an attribute use <b>may</b> appear.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #OPTIONAL_LITERAL
+ * @model name="optional"
+ * @generated
+ * @ordered
+ */
+
+ public static final int OPTIONAL = 0;
+
+ /**
+ * The '<em><b>Prohibited</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an attribute use <b>must not</b> appear;
+ * it acts to hide attribute uses that may have been inherited.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PROHIBITED_LITERAL
+ * @model name="prohibited"
+ * @generated
+ * @ordered
+ */
+ public static final int PROHIBITED = 1;
+
+ /**
+ * The '<em><b>Required</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an attribute use <b>must</b> appear.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #REQUIRED_LITERAL
+ * @model name="required"
+ * @generated
+ * @ordered
+ */
+ public static final int REQUIRED = 2;
+
+ /**
+ * An array of all the '<em><b>Attribute Use Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDAttributeUseCategory[] VALUES_ARRAY =
+ new XSDAttributeUseCategory[]
+ {
+ OPTIONAL_LITERAL,
+ PROHIBITED_LITERAL,
+ REQUIRED_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Attribute Use Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDAttributeUseCategory> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Attribute Use Category</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDAttributeUseCategory get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDAttributeUseCategory result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Attribute Use Category</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDAttributeUseCategory getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDAttributeUseCategory result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Attribute Use Category</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDAttributeUseCategory get(int value)
+ {
+ switch (value)
+ {
+ case OPTIONAL: return OPTIONAL_LITERAL;
+ case PROHIBITED: return PROHIBITED_LITERAL;
+ case REQUIRED: return REQUIRED_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDAttributeUseCategory(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDBoundedFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDBoundedFacet.java
new file mode 100644
index 0000000..bb76a4a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDBoundedFacet.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<a href="http://www.w3.org/TR/xmlschema-2/#dc-bounded"><em><b>Bounded Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDBoundedFacet#isValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDBoundedFacet()
+ * @model
+ * @generated
+ */
+public interface XSDBoundedFacet extends XSDFundamentalFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#bounded-value">value</a>
+ * infoset property.
+ * It is computed and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDBoundedFacet_Value()
+ * @model
+ * @generated
+ */
+ boolean isValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDBoundedFacet#isValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #isValue()
+ * @generated
+ */
+ void setValue(boolean value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCardinality.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCardinality.java
new file mode 100644
index 0000000..3f3c0de
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCardinality.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cardinality</b></em>'.
+ * @see org.eclipse.xsd.XSDCardinalityFacet#getValue()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDCardinality()
+ * @model
+ * @generated
+ */
+public enum XSDCardinality implements Enumerator
+{
+ /**
+ * The '<em><b>Finite</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FINITE
+ * @generated
+ * @ordered
+ */
+ FINITE_LITERAL(0, "finite", "finite"),
+
+ /**
+ * The '<em><b>Countably Infinite</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #COUNTABLY_INFINITE
+ * @generated
+ * @ordered
+ */
+ COUNTABLY_INFINITE_LITERAL(1, "countablyInfinite", "countablyInfinite");
+
+ /**
+ * The '<em><b>Finite</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the value space of a simple type definition is finite.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FINITE_LITERAL
+ * @model name="finite"
+ * @generated
+ * @ordered
+ */
+ public static final int FINITE = 0;
+
+ /**
+ * The '<em><b>Countably Infinite</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the value space of a simple type definition is countably infinite.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #COUNTABLY_INFINITE_LITERAL
+ * @model name="countablyInfinite"
+ * @generated
+ * @ordered
+ */
+ public static final int COUNTABLY_INFINITE = 1;
+
+ /**
+ * An array of all the '<em><b>Cardinality</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDCardinality[] VALUES_ARRAY =
+ new XSDCardinality[]
+ {
+ FINITE_LITERAL,
+ COUNTABLY_INFINITE_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Cardinality</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDCardinality> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Cardinality</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDCardinality get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDCardinality result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Cardinality</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDCardinality getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDCardinality result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Cardinality</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDCardinality get(int value)
+ {
+ switch (value)
+ {
+ case FINITE: return FINITE_LITERAL;
+ case COUNTABLY_INFINITE: return COUNTABLY_INFINITE_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDCardinality(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCardinalityFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCardinalityFacet.java
new file mode 100644
index 0000000..3921f73
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCardinalityFacet.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<a href="http://www.w3.org/TR/xmlschema-2/#dc-cardinality"><em><b>Cardinality Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDCardinalityFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDCardinalityFacet()
+ * @model
+ * @generated
+ */
+public interface XSDCardinalityFacet extends XSDFundamentalFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDCardinality}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#cardinality-value">value</a>
+ * infoset property.
+ * It is computed and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDCardinality
+ * @see #setValue(XSDCardinality)
+ * @see org.eclipse.xsd.XSDPackage#getXSDCardinalityFacet_Value()
+ * @model
+ * @generated
+ */
+ XSDCardinality getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDCardinalityFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDCardinality
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(XSDCardinality value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexFinal.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexFinal.java
new file mode 100644
index 0000000..d13f043
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexFinal.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Complex Final</b></em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getFinal()
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexFinal()
+ * @model
+ * @generated
+ */
+public enum XSDComplexFinal implements Enumerator
+{
+ /**
+ * The '<em><b>Extension</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION
+ * @generated
+ * @ordered
+ */
+ EXTENSION_LITERAL(0, "extension", "extension"),
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION
+ * @generated
+ * @ordered
+ */
+ RESTRICTION_LITERAL(1, "restriction", "restriction"),
+
+ /**
+ * The '<em><b>All</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL
+ * @generated
+ * @ordered
+ */
+ ALL_LITERAL(2, "all", "all");
+
+ /**
+ * The '<em><b>Extension</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation via extension is allowed for a complex type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION_LITERAL
+ * @model name="extension"
+ * @generated
+ * @ordered
+ */
+ public static final int EXTENSION = 0;
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation via restriction is allowed for a complex type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION_LITERAL
+ * @model name="restriction"
+ * @generated
+ * @ordered
+ */
+ public static final int RESTRICTION = 1;
+
+ /**
+ * The '<em><b>All</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation is allowed for a complex type definition.
+ * It is literally expanded to extension and restriction in the infoset model.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_LITERAL
+ * @model name="all"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL = 2;
+
+ /**
+ * An array of all the '<em><b>Complex Final</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDComplexFinal[] VALUES_ARRAY =
+ new XSDComplexFinal[]
+ {
+ EXTENSION_LITERAL,
+ RESTRICTION_LITERAL,
+ ALL_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Complex Final</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDComplexFinal> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Complex Final</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDComplexFinal get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDComplexFinal result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Complex Final</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDComplexFinal getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDComplexFinal result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Complex Final</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDComplexFinal get(int value)
+ {
+ switch (value)
+ {
+ case EXTENSION: return EXTENSION_LITERAL;
+ case RESTRICTION: return RESTRICTION_LITERAL;
+ case ALL: return ALL_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDComplexFinal(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexTypeContent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexTypeContent.java
new file mode 100644
index 0000000..0958065
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexTypeContent.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Complex Type Content</b></em>'.
+ * It is used to represent the types of object returned by
+ * {@link XSDComplexTypeDefinition#getContentType()}.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeContent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDComplexTypeContent extends XSDComponent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexTypeDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexTypeDefinition.java
new file mode 100644
index 0000000..ba4303f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComplexTypeDefinition.java
@@ -0,0 +1,708 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#Complex_Type_Definitions"><em><b>Complex Type Definition</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod <em>Derivation Method</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getFinal <em>Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory <em>Content Type Category</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getProhibitedSubstitutions <em>Prohibited Substitutions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal <em>Lexical Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBlock <em>Block</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#isMixed <em>Mixed</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentAnnotation <em>Content Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition <em>Base Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContent <em>Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentType <em>Content Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeUses <em>Attribute Uses</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeContents <em>Attribute Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcard <em>Attribute Wildcard</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getRootTypeDefinition <em>Root Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticParticle <em>Synthetic Particle</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticWildcard <em>Synthetic Wildcard</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition()
+ * @model
+ * @generated
+ */
+public interface XSDComplexTypeDefinition extends XSDTypeDefinition, XSDScope
+{
+ /**
+ * Returns the value of the '<em><b>Derivation Method</b></em>' attribute.
+ * The default value is <code>"restriction"</code>.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDDerivationMethod}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#derivation_method">derivation method</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Derivation Method</em>' attribute.
+ * @see org.eclipse.xsd.XSDDerivationMethod
+ * @see #isSetDerivationMethod()
+ * @see #unsetDerivationMethod()
+ * @see #setDerivationMethod(XSDDerivationMethod)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_DerivationMethod()
+ * @model default="restriction" unsettable="true"
+ * @generated
+ */
+ XSDDerivationMethod getDerivationMethod();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod <em>Derivation Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Derivation Method</em>' attribute.
+ * @see org.eclipse.xsd.XSDDerivationMethod
+ * @see #isSetDerivationMethod()
+ * @see #unsetDerivationMethod()
+ * @see #getDerivationMethod()
+ * @generated
+ */
+ void setDerivationMethod(XSDDerivationMethod value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod <em>Derivation Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetDerivationMethod()
+ * @see #getDerivationMethod()
+ * @see #setDerivationMethod(XSDDerivationMethod)
+ * @generated
+ */
+ void unsetDerivationMethod();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod <em>Derivation Method</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Derivation Method</em>' attribute is set.
+ * @see #unsetDerivationMethod()
+ * @see #getDerivationMethod()
+ * @see #setDerivationMethod(XSDDerivationMethod)
+ * @generated
+ */
+ boolean isSetDerivationMethod();
+
+ /**
+ * Returns the value of the '<em><b>Final</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDComplexFinal}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDComplexFinal}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-final">final</a>
+ * infoset property.
+ * It is computed from the {@link #getLexicalFinal() lexical final} and should typically not be modified directly.
+ * </p>
+ * @see #getStringFinal()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Final</em>' attribute list.
+ * @see org.eclipse.xsd.XSDComplexFinal
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_Final()
+ * @model
+ * @generated
+ */
+ EList<XSDComplexFinal> getFinal();
+
+ /**
+ * Returns the String value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getFinal <em>Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Final</em>' attribute list.
+ * @see #getFinal()
+ */
+ String getStringFinal();
+
+ /**
+ * Returns the value of the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-abstract">abstract</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Abstract</em>' attribute.
+ * @see #isSetAbstract()
+ * @see #unsetAbstract()
+ * @see #setAbstract(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_Abstract()
+ * @model unsettable="true"
+ * @generated
+ */
+ boolean isAbstract();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Abstract</em>' attribute.
+ * @see #isSetAbstract()
+ * @see #unsetAbstract()
+ * @see #isAbstract()
+ * @generated
+ */
+ void setAbstract(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetAbstract()
+ * @see #isAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ void unsetAbstract();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isAbstract <em>Abstract</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Abstract</em>' attribute is set.
+ * @see #unsetAbstract()
+ * @see #isAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ boolean isSetAbstract();
+
+ /**
+ * Returns the value of the '<em><b>Content Type Category</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDContentTypeCategory}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the category of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#content_type">content type</a>
+ * infoset property.
+ * It is computed from the type of the {@link #getContent() content}
+ * and from the setting of {@link org.eclipse.xsd.XSDComplexTypeDefinition#isMixed mixed}
+ * and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content Type Category</em>' attribute.
+ * @see org.eclipse.xsd.XSDContentTypeCategory
+ * @see #setContentTypeCategory(XSDContentTypeCategory)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_ContentTypeCategory()
+ * @model
+ * @generated
+ */
+ XSDContentTypeCategory getContentTypeCategory();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory <em>Content Type Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content Type Category</em>' attribute.
+ * @see org.eclipse.xsd.XSDContentTypeCategory
+ * @see #getContentTypeCategory()
+ * @generated
+ */
+ void setContentTypeCategory(XSDContentTypeCategory value);
+
+ /**
+ * Returns the value of the '<em><b>Prohibited Substitutions</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-exact">prohibited substitutions</a>
+ * infoset property.
+ * It is computed from the {@link #getBlock() block} and should typically not be modified directly.
+ * </p>
+ * @see #getStringProhibitedSubstitutions()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Prohibited Substitutions</em>' attribute list.
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_ProhibitedSubstitutions()
+ * @model
+ * @generated
+ */
+ EList<XSDProhibitedSubstitutions> getProhibitedSubstitutions();
+
+ /**
+ * Returns the String value of the
+ * '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getProhibitedSubstitutions <em>Prohibited Substitutions</em></a>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Prohibited Substitutions</em>' attribute list.
+ * @see XSDComplexTypeDefinition#getProhibitedSubstitutions()
+ */
+ String getStringProhibitedSubstitutions();
+
+ /**
+ * Returns the value of the '<em><b>Lexical Final</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDComplexFinal}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDComplexFinal}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">final</a> attribute.
+ * </p>
+ * @see #getStringLexicalFinal()
+ * @see #setStringLexicalFinal(java.lang.String)
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Final</em>' attribute list.
+ * @see org.eclipse.xsd.XSDComplexFinal
+ * @see #isSetLexicalFinal()
+ * @see #unsetLexicalFinal()
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_LexicalFinal()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDComplexFinal> getLexicalFinal();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetLexicalFinal()
+ * @see #getLexicalFinal()
+ * @generated
+ */
+ void unsetLexicalFinal();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Lexical Final</em>' attribute list is set.
+ * @see #unsetLexicalFinal()
+ * @see #getLexicalFinal()
+ * @generated
+ */
+ boolean isSetLexicalFinal();
+
+ /**
+ * Returns the String value of the
+ * '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Lexical Final</em>' attribute list.
+ * @see #getLexicalFinal()
+ * @see #setStringLexicalFinal(java.lang.String)
+ */
+ String getStringLexicalFinal();
+
+ /**
+ * Sets the String value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param lexicalFinal the new value of the '<em>Lexical Final</em>' attribute.
+ * @see #getLexicalFinal()
+ * @see #getStringLexicalFinal()
+ */
+ void setStringLexicalFinal(String lexicalFinal);
+
+ /**
+ * Returns the value of the '<em><b>Block</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">block</a> attribute.
+ * </p>
+ * @see #getStringBlock()
+ * @see #setStringBlock(java.lang.String)
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Block</em>' attribute list.
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @see #isSetBlock()
+ * @see #unsetBlock()
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_Block()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDProhibitedSubstitutions> getBlock();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBlock <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetBlock()
+ * @see #getBlock()
+ * @generated
+ */
+ void unsetBlock();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBlock <em>Block</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Block</em>' attribute list is set.
+ * @see #unsetBlock()
+ * @see #getBlock()
+ * @generated
+ */
+ boolean isSetBlock();
+
+ /**
+ * Returns the String value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBlock <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Block</em>' attribute list.
+ * @see #getBlock()
+ * @see #setStringBlock(java.lang.String)
+ */
+ String getStringBlock();
+
+ /**
+ * Sets the String value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBlock <em>Block</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param block the new value of the '<em>Block</em>' attribute.
+ * @see #getBlock()
+ * @see #getStringBlock()
+ */
+ void setStringBlock(String block);
+
+ /**
+ * Returns the value of the '<em><b>Mixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">mixed</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mixed</em>' attribute.
+ * @see #isSetMixed()
+ * @see #unsetMixed()
+ * @see #setMixed(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_Mixed()
+ * @model unsettable="true"
+ * @generated
+ */
+ boolean isMixed();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isMixed <em>Mixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mixed</em>' attribute.
+ * @see #isSetMixed()
+ * @see #unsetMixed()
+ * @see #isMixed()
+ * @generated
+ */
+ void setMixed(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isMixed <em>Mixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetMixed()
+ * @see #isMixed()
+ * @see #setMixed(boolean)
+ * @generated
+ */
+ void unsetMixed();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isMixed <em>Mixed</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Mixed</em>' attribute is set.
+ * @see #unsetMixed()
+ * @see #isMixed()
+ * @see #setMixed(boolean)
+ * @generated
+ */
+ boolean isSetMixed();
+
+ /**
+ * Returns the value of the '<em><b>Content Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the annotation content of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexContent">complexContent</a> element or a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-simpleContent">simpleContent</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content Annotation</em>' containment reference.
+ * @see #setContentAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_ContentAnnotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getContentAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentAnnotation <em>Content Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content Annotation</em>' containment reference.
+ * @see #getContentAnnotation()
+ * @generated
+ */
+ void setContentAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Base Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-base_type_definition">base type definition</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Type Definition</em>' reference.
+ * @see #setBaseTypeDefinition(XSDTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_BaseTypeDefinition()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDTypeDefinition getBaseTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition <em>Base Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Type Definition</em>' reference.
+ * @see #getBaseTypeDefinition()
+ * @generated
+ */
+ void setBaseTypeDefinition(XSDTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the simple type content or particle content of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">complexType</a> element.
+ * It will be <code>null</code>, an {@link XSDSimpleTypeDefinition}, or an {@link XSDParticle}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content</em>' containment reference.
+ * @see #setContent(XSDComplexTypeContent)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_Content()
+ * @model containment="true"
+ * @generated
+ */
+ XSDComplexTypeContent getContent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContent <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content</em>' containment reference.
+ * @see #getContent()
+ * @generated
+ */
+ void setContent(XSDComplexTypeContent value);
+
+ /**
+ * Returns the value of the '<em><b>Content Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#content_type">content type</a>
+ * infoset property.
+ * It is computed from the {@link #getContent() content} and should typically not be modified directly.
+ * It will be <code>null</code>, an {@link XSDSimpleTypeDefinition}, or an {@link XSDParticle}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content Type</em>' reference.
+ * @see #setContentType(XSDComplexTypeContent)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_ContentType()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDComplexTypeContent getContentType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentType <em>Content Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content Type</em>' reference.
+ * @see #getContentType()
+ * @generated
+ */
+ void setContentType(XSDComplexTypeContent value);
+
+ /**
+ * Returns the value of the '<em><b>Attribute Uses</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAttributeUse}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-attribute_declarations">attribute uses</a>
+ * infoset property.
+ * It is computed from the {@link #getAttributeContents() attribute contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Uses</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_AttributeUses()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAttributeUse> getAttributeUses();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAttributeGroupContent}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the attribute contents defined within the body of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">complexType</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_AttributeContents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDAttributeGroupContent> getAttributeContents();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Wildcard</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-attribute_wildcard">attribute wildcard</a>
+ * infoset property.
+ * It is computed from the {@link #getAttributeWildcardContent() attribute wildcard content} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Wildcard</em>' reference.
+ * @see #setAttributeWildcard(XSDWildcard)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_AttributeWildcard()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDWildcard getAttributeWildcard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcard <em>Attribute Wildcard</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Attribute Wildcard</em>' reference.
+ * @see #getAttributeWildcard()
+ * @generated
+ */
+ void setAttributeWildcard(XSDWildcard value);
+
+ /**
+ * Returns the value of the '<em><b>Attribute Wildcard Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the attribute wildcard defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">complexType</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Wildcard Content</em>' containment reference.
+ * @see #setAttributeWildcardContent(XSDWildcard)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_AttributeWildcardContent()
+ * @model containment="true"
+ * @generated
+ */
+ XSDWildcard getAttributeWildcardContent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Attribute Wildcard Content</em>' containment reference.
+ * @see #getAttributeWildcardContent()
+ * @generated
+ */
+ void setAttributeWildcardContent(XSDWildcard value);
+
+ /**
+ * Returns the value of the '<em><b>Root Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This walks the {@link #getBaseTypeDefinition() base type definitions}
+ * until it hits that one that has the ur-type definition as it's base type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root Type Definition</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_RootTypeDefinition()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDTypeDefinition getRootTypeDefinition();
+
+ /**
+ * Returns the value of the '<em><b>Synthetic Particle</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#content_type">content type</a>
+ * infoset property, if the rules require a synthesized particle,
+ * i.e., if the complex type is a non-empty extension of a non-empty complex base.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Synthetic Particle</em>' containment reference.
+ * @see #setSyntheticParticle(XSDParticle)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_SyntheticParticle()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ XSDParticle getSyntheticParticle();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticParticle <em>Synthetic Particle</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Synthetic Particle</em>' containment reference.
+ * @see #getSyntheticParticle()
+ * @generated
+ */
+ void setSyntheticParticle(XSDParticle value);
+
+ /**
+ * Returns the value of the '<em><b>Synthetic Wildcard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#ct-attribute_wildcard">attribute wildcard</a>
+ * infoset property, if the rules require a synthesized wildcard.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Synthetic Wildcard</em>' containment reference.
+ * @see #setSyntheticWildcard(XSDWildcard)
+ * @see org.eclipse.xsd.XSDPackage#getXSDComplexTypeDefinition_SyntheticWildcard()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ XSDWildcard getSyntheticWildcard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticWildcard <em>Synthetic Wildcard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Synthetic Wildcard</em>' containment reference.
+ * @see #getSyntheticWildcard()
+ * @generated
+ */
+ void setSyntheticWildcard(XSDWildcard value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComponent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComponent.java
new file mode 100644
index 0000000..0cf9109
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDComponent.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#key-component"><em><b>Component</b></em></a>'.
+ * It is the root of the infoset hierarchy.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDComponent extends XSDConcreteComponent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCompositor.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCompositor.java
new file mode 100644
index 0000000..4fa0117
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDCompositor.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Compositor</b></em>'.
+ * @see org.eclipse.xsd.XSDModelGroup#getCompositor()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDCompositor()
+ * @model
+ * @generated
+ */
+public enum XSDCompositor implements Enumerator
+{
+ /**
+ * The '<em><b>All</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL
+ * @generated
+ * @ordered
+ */
+ ALL_LITERAL(0, "all", "all"),
+
+ /**
+ * The '<em><b>Choice</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #CHOICE
+ * @generated
+ * @ordered
+ */
+ CHOICE_LITERAL(1, "choice", "choice"),
+
+ /**
+ * The '<em><b>Sequence</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SEQUENCE
+ * @generated
+ * @ordered
+ */
+ SEQUENCE_LITERAL(2, "sequence", "sequence");
+
+ /**
+ * The '<em><b>All</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a model group is an <a href="http://www.w3.org/TR/xmlschema-1/#element-all">all</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_LITERAL
+ * @model name="all"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL = 0;
+
+ /**
+ * The '<em><b>Choice</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a model group is a <a href="http://www.w3.org/TR/xmlschema-1/#element-choice">choice</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #CHOICE_LITERAL
+ * @model name="choice"
+ * @generated
+ * @ordered
+ */
+ public static final int CHOICE = 1;
+
+ /**
+ * The '<em><b>Sequence</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a model group is a <a href="http://www.w3.org/TR/xmlschema-1/#element-sequence">sequence</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SEQUENCE_LITERAL
+ * @model name="sequence"
+ * @generated
+ * @ordered
+ */
+ public static final int SEQUENCE = 2;
+
+ /**
+ * An array of all the '<em><b>Compositor</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDCompositor[] VALUES_ARRAY =
+ new XSDCompositor[]
+ {
+ ALL_LITERAL,
+ CHOICE_LITERAL,
+ SEQUENCE_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Compositor</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDCompositor> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Compositor</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDCompositor get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDCompositor result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Compositor</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDCompositor getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDCompositor result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Compositor</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDCompositor get(int value)
+ {
+ switch (value)
+ {
+ case ALL: return ALL_LITERAL;
+ case CHOICE: return CHOICE_LITERAL;
+ case SEQUENCE: return SEQUENCE_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDCompositor(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConcreteComponent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConcreteComponent.java
new file mode 100644
index 0000000..81c8152
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConcreteComponent.java
@@ -0,0 +1,576 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Collection;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Concrete Component</b></em>'.
+ * It is the root of all concrete components.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDConcreteComponent#getElement <em>Element</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDConcreteComponent#getContainer <em>Container</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDConcreteComponent#getRootContainer <em>Root Container</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDConcreteComponent#getSchema <em>Schema</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDConcreteComponent#getDiagnostics <em>Diagnostics</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDConcreteComponent extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is the underlying DOM element associated with this component,
+ * i.e., the {@link #updateElement() serialization} of this component.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Element</em>' attribute.
+ * @see #setElement(Element)
+ * @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Element()
+ * @model dataType="org.eclipse.xsd.DOMElement"
+ * @generated
+ */
+ Element getElement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDConcreteComponent#getElement <em>Element</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Element</em>' attribute.
+ * @see #getElement()
+ * @generated
+ */
+ void setElement(Element value);
+
+ /**
+ * Ensures that the underlying DOM {@link #getElement element} both exists and is up-to-date with respect to the model,
+ * i.e., it serializes the component and maintains an association with that serialization.
+ * @see #updateElement(boolean)
+ * @see #getElement
+ */
+ void updateElement();
+
+ /**
+ * Ensures that the underlying DOM {@link #getElement element} both exists and is up-to-date with respect to the model,
+ * i.e., it serializes the component and maintains an association with that serialization.
+ * For <code>deep == true</code>,
+ * or when <code>{@link #getElement getElement()} == null</code>,
+ * this does the same thing as {@link #updateElement()};
+ * otherwise, it updates just the DOM element associated with this component to reflect the current state.
+ * @see #updateElement()
+ * @see #getElement
+ */
+ void updateElement(boolean deep);
+
+ /**
+ * Returns the value of the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the concrete container of this component,
+ * i.e., the inverse of the black diamond relations in the UML model.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Container</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Container()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDConcreteComponent getContainer();
+
+ /**
+ * Returns the value of the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This walks the {@link #getContainer() containers}
+ * until it hits one that has no container.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root Container</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_RootContainer()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDConcreteComponent getRootContainer();
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This walks the {@link #getContainer() containers}
+ * until it reaches a schema.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Schema()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSchema getSchema();
+
+ /**
+ * Returns the value of the '<em><b>Diagnostics</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDDiagnostic}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * These diagnostics are produced by {@link #validate() validation}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Diagnostics</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Diagnostics()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ EList<XSDDiagnostic> getDiagnostics();
+
+ /**
+ * Called to indicate that the given element has changed;
+ * the element should typically be the same as the one returned {@link #getElement}.
+ * It is expected that clients will not call this themselves
+ * since the DOM event listeners attached to the underlying DOM will invoke these automatically.
+ */
+ void elementChanged(Element changedElement);
+
+ /**
+ * Called to indicate that the given element has changed attributes;
+ * the element should typically be the same as the one returned {@link #getElement}.
+ * It is expected that clients will not call this themselves
+ * since the DOM event listeners attached to the underlying DOM will invoke these automatically.
+ */
+ void elementAttributesChanged(Element changedElement);
+
+ /**
+ * Called to indicate that the given element has changed contents;
+ * the element should typically be the same as the one returned {@link #getElement}.
+ * It is expected that clients will not call this themselves
+ * since the DOM event listeners attached to the underlying DOM will invoke these automatically.
+ */
+ void elementContentsChanged(Element changedElement);
+
+ /**
+ * Returns the resolved type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveTypeDefinition(java.lang.String, java.lang.String)
+ * @see #resolveTypeDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved type definition.
+ */
+ XSDTypeDefinition resolveTypeDefinitionURI(String uri);
+
+ /**
+ * Returns the resolved type definition of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveTypeDefinitionURI(java.lang.String)
+ * @see #resolveTypeDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved type definition.
+ */
+ XSDTypeDefinition resolveTypeDefinition(String namespace, String localName);
+
+ /**
+ * Returns the resolved type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveTypeDefinitionURI(java.lang.String)
+ * @see #resolveTypeDefinition(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved type definition.
+ */
+ XSDTypeDefinition resolveTypeDefinition(String localName);
+
+ /**
+ * Returns the resolved simple type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveSimpleTypeDefinition(java.lang.String, java.lang.String)
+ * @see #resolveSimpleTypeDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved simple type definition.
+ */
+ XSDSimpleTypeDefinition resolveSimpleTypeDefinitionURI(String uri);
+
+ /**
+ * Returns the resolved simple type definition of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveSimpleTypeDefinitionURI(java.lang.String)
+ * @see #resolveSimpleTypeDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved simple type definition.
+ */
+ XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String namespace, String localName);
+
+ /**
+ * Returns the resolved simple type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveSimpleTypeDefinitionURI(java.lang.String)
+ * @see #resolveSimpleTypeDefinition(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved simple type definition.
+ */
+ XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String localName);
+
+ /**
+ * Returns the resolved complex type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveComplexTypeDefinition(java.lang.String, java.lang.String)
+ * @see #resolveComplexTypeDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved complex type definition.
+ */
+ XSDComplexTypeDefinition resolveComplexTypeDefinitionURI(String uri);
+
+ /**
+ * Returns the resolved complex type definition of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveComplexTypeDefinitionURI(java.lang.String)
+ * @see #resolveComplexTypeDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved complex type definition.
+ */
+ XSDComplexTypeDefinition resolveComplexTypeDefinition(String namespace, String localName);
+
+ /**
+ * Returns the resolved complex type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveComplexTypeDefinitionURI(java.lang.String)
+ * @see #resolveComplexTypeDefinition(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved complex type definition.
+ */
+ XSDComplexTypeDefinition resolveComplexTypeDefinition(String localName);
+
+ /**
+ * Returns the resolved attribute declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveAttributeDeclaration(java.lang.String, java.lang.String)
+ * @see #resolveAttributeDeclaration(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved attribute declaration.
+ */
+ XSDAttributeDeclaration resolveAttributeDeclarationURI(String uri);
+
+ /**
+ * Returns the resolved attribute declaration of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveAttributeDeclarationURI(java.lang.String)
+ * @see #resolveAttributeDeclaration(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved attribute declaration.
+ */
+ XSDAttributeDeclaration resolveAttributeDeclaration(String namespace, String localName);
+
+ /**
+ * Returns the resolved attribute declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveAttributeDeclarationURI(java.lang.String)
+ * @see #resolveAttributeDeclaration(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved attribute declaration.
+ */
+ XSDAttributeDeclaration resolveAttributeDeclaration(String localName);
+
+ /**
+ * Returns the resolved element declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveElementDeclaration(java.lang.String, java.lang.String)
+ * @see #resolveElementDeclaration(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved element declaration.
+ */
+ XSDElementDeclaration resolveElementDeclarationURI(String uri);
+
+ /**
+ * Returns the resolved element declaration of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveElementDeclarationURI(java.lang.String)
+ * @see #resolveElementDeclaration(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved element declaration.
+ */
+ XSDElementDeclaration resolveElementDeclaration(String namespace, String localName);
+
+ /**
+ * Returns the resolved element declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveElementDeclarationURI(java.lang.String)
+ * @see #resolveElementDeclaration(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved element declaration.
+ */
+ XSDElementDeclaration resolveElementDeclaration(String localName);
+
+ /**
+ * Returns the resolved attribute group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveAttributeGroupDefinition(java.lang.String, java.lang.String)
+ * @see #resolveAttributeGroupDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved attribute group definition.
+ */
+ XSDAttributeGroupDefinition resolveAttributeGroupDefinitionURI(String uri);
+
+ /**
+ * Returns the resolved attribute group definition the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveAttributeGroupDefinitionURI(java.lang.String)
+ * @see #resolveAttributeGroupDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved attribute group definition
+ */
+ XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String namespace, String localName);
+
+ /**
+ * Returns the resolved attribute group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveAttributeGroupDefinitionURI(java.lang.String)
+ * @see #resolveAttributeGroupDefinition(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved attribute group definition.
+ */
+ XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String localName);
+
+ /**
+ * Returns the resolved model group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveModelGroupDefinition(java.lang.String, java.lang.String)
+ * @see #resolveModelGroupDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved model group definition.
+ */
+ XSDModelGroupDefinition resolveModelGroupDefinitionURI(String uri);
+
+ /**
+ * Returns the resolved model group definition of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveModelGroupDefinitionURI(java.lang.String)
+ * @see #resolveModelGroupDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved model group definition.
+ */
+ XSDModelGroupDefinition resolveModelGroupDefinition(String namespace, String localName);
+
+ /**
+ * Returns the resolved model group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveModelGroupDefinitionURI(java.lang.String)
+ * @see #resolveModelGroupDefinition(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved model group definition.
+ */
+ XSDModelGroupDefinition resolveModelGroupDefinition(String localName);
+
+ /**
+ * Returns the resolved identity constraint definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveIdentityConstraintDefinition(java.lang.String, java.lang.String)
+ * @see #resolveIdentityConstraintDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved identity constraint definition.
+ */
+ XSDIdentityConstraintDefinition resolveIdentityConstraintDefinitionURI(String uri);
+
+ /**
+ * Returns the resolved identity constraint definition of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveIdentityConstraintDefinitionURI(java.lang.String)
+ * @see #resolveIdentityConstraintDefinition(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved identity constraint definition.
+ */
+ XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String namespace, String localName);
+
+ /**
+ * Returns the resolved identity constraint definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveIdentityConstraintDefinitionURI(java.lang.String)
+ * @see #resolveIdentityConstraintDefinition(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved identity constraint definition.
+ */
+ XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String localName);
+
+ /**
+ * Returns the resolved notation declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveNotationDeclaration(java.lang.String, java.lang.String)
+ * @see #resolveNotationDeclaration(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @param uri the URI to resolve.
+ * @return the resolved notation declaration.
+ */
+ XSDNotationDeclaration resolveNotationDeclarationURI(String uri);
+
+ /**
+ * Returns the resolved notation declaration of the given
+ * {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #resolveNotationDeclarationURI(java.lang.String)
+ * @see #resolveNotationDeclaration(java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param namespace the namespace to resolve.
+ * @param localName the name to resolve.
+ * @return the resolved notation declaration.
+ */
+ XSDNotationDeclaration resolveNotationDeclaration(String namespace, String localName);
+
+ /**
+ * Returns the resolved notation declaration the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
+ * within the {@link #getSchema() schema}.
+ * An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
+ * @see #getSchema()
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #resolveNotationDeclarationURI(java.lang.String)
+ * @see #resolveNotationDeclaration(java.lang.String, java.lang.String)
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @param localName the name to resolve.
+ * @return the resolved notation declaration
+ */
+ XSDNotationDeclaration resolveNotationDeclaration(String localName);
+
+ /**
+ * Returns the collection of components that have an {@link org.eclipse.xsd.XSDAnnotation annotation}
+ * containing an {@link org.eclipse.xsd.XSDAnnotation#getApplicationInformation() appinfo} with given source URI.
+ * @see org.eclipse.xsd.XSDAnnotation#getApplicationInformationSources()
+ * @param sourceURI the source URI to match.
+ * @return the collection of matching components.
+ */
+ Collection<XSDConcreteComponent> getComponentsWithApplicationInformation(String sourceURI);
+
+ /**
+ * Returns the collection of components that have an {@link org.eclipse.xsd.XSDAnnotation annotation}
+ * containing a {@link org.eclipse.xsd.XSDAnnotation#getUserInformation() documentation} with given source URI.
+ * @see org.eclipse.xsd.XSDAnnotation#getApplicationInformationSources()
+ * @param sourceURI the source URI to match.
+ * @return the collection of matching components.
+ */
+ Collection<XSDConcreteComponent> getComponentsWithUserInformation(String sourceURI);
+
+ /**
+ * Validates whether this component conforms to the constraints defined in the XML Schema standard.
+ * {@link #getDiagnostics() Diagnostics} are produced to report any problems.
+ * The effect of calling this for a component not directly or indirectly contained by a {@link org.eclipse.xsd.XSDSchema schema}
+ * is undefined, and is likely to result in null pointer exceptions.
+ * @see #getDiagnostics()
+ * @see #clearDiagnostics()
+ */
+ void validate();
+
+ /**
+ * Clears any {@link #getDiagnostics() diagnostics} associated with the component and all those it contains.
+ * @see #validate()
+ * @see #getDiagnostics()
+ */
+ void clearDiagnostics();
+
+ /**
+ * Creates a clone of the component.
+ * The clone may be deep and may share the DOM of this component.
+ * @param deep whether the clone should be deep.
+ * @param shareDOM whether the clone should share the original DOM
+ * @return a clone of the component.
+ */
+ XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM);
+
+ /**
+ * Returns whether the given component is contained by this component.
+ * @param xsdConcreteComponent a component.
+ * @return whether the component is contained by this component.
+ */
+ boolean contains(XSDConcreteComponent xsdConcreteComponent);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConstrainingFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConstrainingFacet.java
new file mode 100644
index 0000000..8679499
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConstrainingFacet.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#rf-facets"><em><b>Constraining Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDConstrainingFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDConstrainingFacet extends XSDFacet
+{
+ /**
+ * Returns whether the given value satisfies the constraint of this facet.
+ * @param value an arbitrary value.
+ * @return whether the value satisfies the constraint of this facet.
+ */
+ boolean isConstraintSatisfied(Object value);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConstraint.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConstraint.java
new file mode 100644
index 0000000..a507aa9
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDConstraint.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Constraint</b></em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getConstraint()
+ * @see org.eclipse.xsd.XSDAttributeDeclaration#getConstraint()
+ * @see org.eclipse.xsd.XSDElementDeclaration#getConstraint()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDConstraint()
+ * @model
+ * @generated
+ */
+public enum XSDConstraint implements Enumerator
+{
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @generated
+ * @ordered
+ */
+ DEFAULT_LITERAL(0, "default", "default"),
+
+ /**
+ * The '<em><b>Fixed</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FIXED
+ * @generated
+ * @ordered
+ */
+ FIXED_LITERAL(1, "fixed", "fixed");
+
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an attribute use defaults to its constrained value.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_LITERAL
+ * @model name="default"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT = 0;
+
+ /**
+ * The '<em><b>Fixed</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an attribute use is fixed to its constrained value.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FIXED_LITERAL
+ * @model name="fixed"
+ * @generated
+ * @ordered
+ */
+ public static final int FIXED = 1;
+
+ /**
+ * An array of all the '<em><b>Constraint</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDConstraint[] VALUES_ARRAY =
+ new XSDConstraint[]
+ {
+ DEFAULT_LITERAL,
+ FIXED_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Constraint</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDConstraint> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Constraint</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDConstraint get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDConstraint result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Constraint</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDConstraint getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDConstraint result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Constraint</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDConstraint get(int value)
+ {
+ switch (value)
+ {
+ case DEFAULT: return DEFAULT_LITERAL;
+ case FIXED: return FIXED_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDConstraint(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDContentTypeCategory.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDContentTypeCategory.java
new file mode 100644
index 0000000..6d4ffbf
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDContentTypeCategory.java
@@ -0,0 +1,295 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Content Type Category</b></em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDContentTypeCategory()
+ * @model
+ * @generated
+ */
+public enum XSDContentTypeCategory implements Enumerator
+{
+ /**
+ * The '<em><b>Empty</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EMPTY
+ * @generated
+ * @ordered
+ */
+ EMPTY_LITERAL(0, "empty", "empty"),
+
+ /**
+ * The '<em><b>Simple</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SIMPLE
+ * @generated
+ * @ordered
+ */
+ SIMPLE_LITERAL(1, "simple", "simple"),
+
+ /**
+ * The '<em><b>Mixed</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #MIXED
+ * @generated
+ * @ordered
+ */
+ MIXED_LITERAL(2, "mixed", "mixed"),
+
+ /**
+ * The '<em><b>Element Only</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ELEMENT_ONLY
+ * @generated
+ * @ordered
+ */
+ ELEMENT_ONLY_LITERAL(3, "elementOnly", "elementOnly");
+ /**
+ * The '<em><b>Empty</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a complex type definition has empty content.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EMPTY_LITERAL
+ * @model name="empty"
+ * @generated
+ * @ordered
+ */
+ public static final int EMPTY = 0;
+
+ /**
+ * The '<em><b>Simple</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a complex type definition has simple content.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SIMPLE_LITERAL
+ * @model name="simple"
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE = 1;
+
+ /**
+ * The '<em><b>Mixed</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a complex type definition has mixed content.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #MIXED_LITERAL
+ * @model name="mixed"
+ * @generated
+ * @ordered
+ */
+ public static final int MIXED = 2;
+
+ /**
+ * The '<em><b>Element Only</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a complex type definition has element-only content.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ELEMENT_ONLY_LITERAL
+ * @model name="elementOnly"
+ * @generated
+ * @ordered
+ */
+ public static final int ELEMENT_ONLY = 3;
+
+ /**
+ * An array of all the '<em><b>Content Type Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDContentTypeCategory[] VALUES_ARRAY =
+ new XSDContentTypeCategory[]
+ {
+ EMPTY_LITERAL,
+ SIMPLE_LITERAL,
+ MIXED_LITERAL,
+ ELEMENT_ONLY_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Content Type Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDContentTypeCategory> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Content Type Category</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDContentTypeCategory get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDContentTypeCategory result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Content Type Category</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDContentTypeCategory getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDContentTypeCategory result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Content Type Category</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDContentTypeCategory get(int value)
+ {
+ switch (value)
+ {
+ case EMPTY: return EMPTY_LITERAL;
+ case SIMPLE: return SIMPLE_LITERAL;
+ case MIXED: return MIXED_LITERAL;
+ case ELEMENT_ONLY: return ELEMENT_ONLY_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDContentTypeCategory(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDerivationMethod.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDerivationMethod.java
new file mode 100644
index 0000000..3f56687
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDerivationMethod.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Derivation Method</b></em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDDerivationMethod()
+ * @model
+ * @generated
+ */
+public enum XSDDerivationMethod implements Enumerator
+{
+ /**
+ * The '<em><b>Extension</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION
+ * @generated
+ * @ordered
+ */
+ EXTENSION_LITERAL(0, "extension", "extension"),
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION
+ * @generated
+ * @ordered
+ */
+ RESTRICTION_LITERAL(1, "restriction", "restriction");
+
+ /**
+ * The '<em><b>Extension</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a complex type definition is derived via extension.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION_LITERAL
+ * @model name="extension"
+ * @generated
+ * @ordered
+ */
+ public static final int EXTENSION = 0;
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a complex type definition is derived via restriction.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION_LITERAL
+ * @model name="restriction"
+ * @generated
+ * @ordered
+ */
+ public static final int RESTRICTION = 1;
+
+ /**
+ * An array of all the '<em><b>Derivation Method</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDDerivationMethod[] VALUES_ARRAY =
+ new XSDDerivationMethod[]
+ {
+ EXTENSION_LITERAL,
+ RESTRICTION_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Derivation Method</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDDerivationMethod> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Derivation Method</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDerivationMethod get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDDerivationMethod result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Derivation Method</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDerivationMethod getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDDerivationMethod result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Derivation Method</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDerivationMethod get(int value)
+ {
+ switch (value)
+ {
+ case EXTENSION: return EXTENSION_LITERAL;
+ case RESTRICTION: return RESTRICTION_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDDerivationMethod(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDiagnostic.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDiagnostic.java
new file mode 100644
index 0000000..152c0b7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDiagnostic.java
@@ -0,0 +1,319 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Diagnostic</b></em>'.
+ * @extends Resource.Diagnostic
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getSeverity <em>Severity</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getMessage <em>Message</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getLocationURI <em>Location URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getLine <em>Line</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getColumn <em>Column</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getNode <em>Node</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getAnnotationURI <em>Annotation URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getSubstitutions <em>Substitutions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getComponents <em>Components</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDDiagnostic#getPrimaryComponent <em>Primary Component</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic()
+ * @model
+ * @generated
+ */
+public interface XSDDiagnostic extends XSDConcreteComponent, Resource.Diagnostic
+{
+ /**
+ * This is the ID used for Eclipse markers that are based on diagnostics.
+ */
+ public static final String MARKER = "org.eclipse.xsd.diagnostic";
+
+ /**
+ * This is the string for encoding a {@link Resource#getURIFragment URI fragment} for a diagnostic.
+ * @see Resource#getURIFragment
+ */
+ public static final String URI_FRAGMENT_ATTRIBUTE = "diagnostic";
+
+ /**
+ * Returns the value of the '<em><b>Severity</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDDiagnosticSeverity}.
+ * <!-- begin-user-doc -->
+ * This indicates the how bad the problem is.
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Severity</em>' attribute.
+ * @see org.eclipse.xsd.XSDDiagnosticSeverity
+ * @see #setSeverity(XSDDiagnosticSeverity)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Severity()
+ * @model
+ * @generated
+ */
+ XSDDiagnosticSeverity getSeverity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getSeverity <em>Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Severity</em>' attribute.
+ * @see org.eclipse.xsd.XSDDiagnosticSeverity
+ * @see #getSeverity()
+ * @generated
+ */
+ void setSeverity(XSDDiagnosticSeverity value);
+
+ /**
+ * Returns the value of the '<em><b>Message</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This describes the problem.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Message</em>' attribute.
+ * @see #setMessage(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Message()
+ * @model
+ * @generated
+ */
+ String getMessage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getMessage <em>Message</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Message</em>' attribute.
+ * @see #getMessage()
+ * @generated
+ */
+ void setMessage(String value);
+
+ /**
+ * Returns the value of the '<em><b>Location URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates the URI of the resource containing the problem.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Location URI</em>' attribute.
+ * @see #setLocationURI(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_LocationURI()
+ * @model
+ * @generated
+ */
+ String getLocationURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getLocationURI <em>Location URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Location URI</em>' attribute.
+ * @see #getLocationURI()
+ * @generated
+ */
+ void setLocationURI(String value);
+
+ /**
+ * Returns the value of the '<em><b>Line</b></em>' attribute.
+ * The default value is <code>"1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates the line number within the resource containing the problem.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Line</em>' attribute.
+ * @see #setLine(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Line()
+ * @model default="1"
+ * @generated
+ */
+ int getLine();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getLine <em>Line</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Line</em>' attribute.
+ * @see #getLine()
+ * @generated
+ */
+ void setLine(int value);
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' attribute.
+ * The default value is <code>"1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates the column number within the line of the resource containing the problem.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' attribute.
+ * @see #setColumn(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Column()
+ * @model default="1"
+ * @generated
+ */
+ int getColumn();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getColumn <em>Column</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column</em>' attribute.
+ * @see #getColumn()
+ * @generated
+ */
+ void setColumn(int value);
+
+ /**
+ * Returns the value of the '<em><b>Node</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates the DOM node at which the problem occurs.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Node</em>' attribute.
+ * @see #setNode(Node)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Node()
+ * @model dataType="org.eclipse.xsd.DOMNode"
+ * @generated
+ */
+ Node getNode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getNode <em>Node</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Node</em>' attribute.
+ * @see #getNode()
+ * @generated
+ */
+ void setNode(Node value);
+
+ /**
+ * Returns the value of the '<em><b>Annotation URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This provides a URI that can be used to locate more detailed documentation of the general type of problem encountered.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation URI</em>' attribute.
+ * @see #setAnnotationURI(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_AnnotationURI()
+ * @model
+ * @generated
+ */
+ String getAnnotationURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getAnnotationURI <em>Annotation URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation URI</em>' attribute.
+ * @see #getAnnotationURI()
+ * @generated
+ */
+ void setAnnotationURI(String value);
+
+ /**
+ * Returns the value of the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents a unique key used to load the message.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Key</em>' attribute.
+ * @see #setKey(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Key()
+ * @model
+ * @generated
+ */
+ String getKey();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getKey <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Key</em>' attribute.
+ * @see #getKey()
+ * @generated
+ */
+ void setKey(String value);
+
+ /**
+ * Returns the value of the '<em><b>Substitutions</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the substitutions within the message.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Substitutions</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Substitutions()
+ * @model
+ * @generated
+ */
+ EList<String> getSubstitutions();
+
+ /**
+ * Returns the value of the '<em><b>Components</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDConcreteComponent}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the components associated with the problem;
+ * the first component is al the {@link #getPrimaryComponent() primary} component.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Components</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_Components()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ EList<XSDConcreteComponent> getComponents();
+
+ /**
+ * Returns the value of the '<em><b>Primary Component</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the component most directly associated with the problem.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Primary Component</em>' reference.
+ * @see #setPrimaryComponent(XSDConcreteComponent)
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnostic_PrimaryComponent()
+ * @model resolveProxies="false" required="true" transient="true" volatile="true"
+ * @generated
+ */
+ XSDConcreteComponent getPrimaryComponent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDDiagnostic#getPrimaryComponent <em>Primary Component</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Primary Component</em>' reference.
+ * @see #getPrimaryComponent()
+ * @generated
+ */
+ void setPrimaryComponent(XSDConcreteComponent value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDiagnosticSeverity.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDiagnosticSeverity.java
new file mode 100644
index 0000000..4a4135b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDiagnosticSeverity.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Diagnostic Severity</b></em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getSeverity()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDDiagnosticSeverity()
+ * @model
+ * @generated
+ */
+public enum XSDDiagnosticSeverity implements Enumerator
+{
+ /**
+ * The '<em><b>Fatal</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FATAL
+ * @generated
+ * @ordered
+ */
+ FATAL_LITERAL(0, "fatal", "fatal"),
+
+ /**
+ * The '<em><b>Error</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ERROR
+ * @generated
+ * @ordered
+ */
+ ERROR_LITERAL(1, "error", "error"),
+
+ /**
+ * The '<em><b>Warning</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #WARNING
+ * @generated
+ * @ordered
+ */
+ WARNING_LITERAL(2, "warning", "warning"),
+
+ /**
+ * The '<em><b>Information</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INFORMATION
+ * @generated
+ * @ordered
+ */
+ INFORMATION_LITERAL(3, "information", "information");
+
+ /**
+ * The '<em><b>Fatal</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the problem is really bad and that further processing is likely not possible.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FATAL_LITERAL
+ * @model name="fatal"
+ * @generated
+ * @ordered
+ */
+ public static final int FATAL = 0;
+
+ /**
+ * The '<em><b>Error</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the problem is bad and that the schema is likely not suitable for use.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ERROR_LITERAL
+ * @model name="error"
+ * @generated
+ * @ordered
+ */
+ public static final int ERROR = 1;
+
+ /**
+ * The '<em><b>Warning</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the problem is not too bad and that the schema is likely suitable for use.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #WARNING_LITERAL
+ * @model name="warning"
+ * @generated
+ * @ordered
+ */
+ public static final int WARNING = 2;
+
+ /**
+ * The '<em><b>Information</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the problem is only potential and that the schema is very likely suitable for use.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INFORMATION_LITERAL
+ * @model name="information"
+ * @generated
+ * @ordered
+ */
+ public static final int INFORMATION = 3;
+
+ /**
+ * An array of all the '<em><b>Diagnostic Severity</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDDiagnosticSeverity[] VALUES_ARRAY =
+ new XSDDiagnosticSeverity[]
+ {
+ FATAL_LITERAL,
+ ERROR_LITERAL,
+ WARNING_LITERAL,
+ INFORMATION_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Diagnostic Severity</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDDiagnosticSeverity> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Diagnostic Severity</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDiagnosticSeverity get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDDiagnosticSeverity result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Diagnostic Severity</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDiagnosticSeverity getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDDiagnosticSeverity result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Diagnostic Severity</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDiagnosticSeverity get(int value)
+ {
+ switch (value)
+ {
+ case FATAL: return FATAL_LITERAL;
+ case ERROR: return ERROR_LITERAL;
+ case WARNING: return WARNING_LITERAL;
+ case INFORMATION: return INFORMATION_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDDiagnosticSeverity(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDisallowedSubstitutions.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDisallowedSubstitutions.java
new file mode 100644
index 0000000..745a472
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDDisallowedSubstitutions.java
@@ -0,0 +1,300 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Disallowed Substitutions</b></em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getDisallowedSubstitutions()
+ * @see org.eclipse.xsd.XSDElementDeclaration#getBlock()
+ * @see org.eclipse.xsd.XSDSchema#getBlockDefault()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDDisallowedSubstitutions()
+ * @model
+ * @generated
+ */
+public enum XSDDisallowedSubstitutions implements Enumerator
+{
+ /**
+ * The '<em><b>Substitution</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SUBSTITUTION
+ * @generated
+ * @ordered
+ */
+ SUBSTITUTION_LITERAL(0, "substitution", "substitution"),
+
+ /**
+ * The '<em><b>Extension</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION
+ * @generated
+ * @ordered
+ */
+ EXTENSION_LITERAL(1, "extension", "extension"),
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION
+ * @generated
+ * @ordered
+ */
+ RESTRICTION_LITERAL(2, "restriction", "restriction"),
+
+ /**
+ * The '<em><b>All</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL
+ * @generated
+ * @ordered
+ */
+ ALL_LITERAL(3, "all", "all");
+
+ /**
+ * The '<em><b>Substitution</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no element declaration may be substituted,
+ * i.e., no substitution is permitted even for an element declaration with the same type.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SUBSTITUTION_LITERAL
+ * @model name="substitution"
+ * @generated
+ * @ordered
+ */
+ public static final int SUBSTITUTION = 0;
+
+ /**
+ * The '<em><b>Extension</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an element declaration with a type definition derived via extension may not be substituted.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION_LITERAL
+ * @model name="extension"
+ * @generated
+ * @ordered
+ */
+ public static final int EXTENSION = 1;
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an element declaration with a type definition derived via restriction may not be substituted.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION_LITERAL
+ * @model name="restriction"
+ * @generated
+ * @ordered
+ */
+ public static final int RESTRICTION = 2;
+
+ /**
+ * The '<em><b>All</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an element declaration with a derived type definition may not be substituted.
+ * It is literally expanded to extension and restriction in the infoset model.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_LITERAL
+ * @model name="all"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL = 3;
+
+ /**
+ * An array of all the '<em><b>Disallowed Substitutions</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDDisallowedSubstitutions[] VALUES_ARRAY =
+ new XSDDisallowedSubstitutions[]
+ {
+ SUBSTITUTION_LITERAL,
+ EXTENSION_LITERAL,
+ RESTRICTION_LITERAL,
+ ALL_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Disallowed Substitutions</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDDisallowedSubstitutions> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Disallowed Substitutions</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDisallowedSubstitutions get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDDisallowedSubstitutions result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Disallowed Substitutions</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDisallowedSubstitutions getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDDisallowedSubstitutions result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Disallowed Substitutions</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDDisallowedSubstitutions get(int value)
+ {
+ switch (value)
+ {
+ case SUBSTITUTION: return SUBSTITUTION_LITERAL;
+ case EXTENSION: return EXTENSION_LITERAL;
+ case RESTRICTION: return RESTRICTION_LITERAL;
+ case ALL: return ALL_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDDisallowedSubstitutions(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDElementDeclaration.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDElementDeclaration.java
new file mode 100644
index 0000000..0624667
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDElementDeclaration.java
@@ -0,0 +1,550 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cElement_Declarations"><em><b>Element Declaration</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#isNillable <em>Nillable</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getDisallowedSubstitutions <em>Disallowed Substitutions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupExclusions <em>Substitution Group Exclusions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getLexicalFinal <em>Lexical Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getBlock <em>Block</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#isElementDeclarationReference <em>Element Declaration Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#isCircular <em>Circular</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getTypeDefinition <em>Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getIdentityConstraintDefinitions <em>Identity Constraint Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getResolvedElementDeclaration <em>Resolved Element Declaration</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupAffiliation <em>Substitution Group Affiliation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroup <em>Substitution Group</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration()
+ * @model
+ * @generated
+ */
+public interface XSDElementDeclaration extends XSDFeature, XSDSchemaContent, XSDTerm
+{
+ /**
+ * Returns the value of the '<em><b>Nillable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#nillable">nillable</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nillable</em>' attribute.
+ * @see #isSetNillable()
+ * @see #unsetNillable()
+ * @see #setNillable(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_Nillable()
+ * @model unsettable="true"
+ * @generated
+ */
+ boolean isNillable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#isNillable <em>Nillable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Nillable</em>' attribute.
+ * @see #isSetNillable()
+ * @see #unsetNillable()
+ * @see #isNillable()
+ * @generated
+ */
+ void setNillable(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#isNillable <em>Nillable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetNillable()
+ * @see #isNillable()
+ * @see #setNillable(boolean)
+ * @generated
+ */
+ void unsetNillable();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#isNillable <em>Nillable</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Nillable</em>' attribute is set.
+ * @see #unsetNillable()
+ * @see #isNillable()
+ * @see #setNillable(boolean)
+ * @generated
+ */
+ boolean isSetNillable();
+
+ /**
+ * Returns the value of the '<em><b>Disallowed Substitutions</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDDisallowedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDDisallowedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#e-exact">dissallowed substitutions</a>
+ * infoset property.
+ * It is computed from the {@link #getBlock() block} and should typically not be modified directly.
+ * </p>
+ * @see #getStringDisallowedSubstitutions()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Disallowed Substitutions</em>' attribute list.
+ * @see org.eclipse.xsd.XSDDisallowedSubstitutions
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_DisallowedSubstitutions()
+ * @model
+ * @generated
+ */
+ EList<XSDDisallowedSubstitutions> getDisallowedSubstitutions();
+
+ /**
+ * Returns the String value of the '{@link #getDisallowedSubstitutions() <em>Disallowed Substitutions</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Disallowed Substitutions</em>' attribute list.
+ * @see #getDisallowedSubstitutions()
+ */
+ String getStringDisallowedSubstitutions();
+
+ /**
+ * Returns the value of the '<em><b>Substitution Group Exclusions</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSubstitutionGroupExclusions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDSubstitutionGroupExclusions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#e-final">substitution group exclusions</a>
+ * infoset property.
+ * It is computed from the {@link #getLexicalFinal() final} and should typically not be modified directly.
+ * </p>
+ * @see #getStringSubstitutionGroupExclusions()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Substitution Group Exclusions</em>' attribute list.
+ * @see org.eclipse.xsd.XSDSubstitutionGroupExclusions
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_SubstitutionGroupExclusions()
+ * @model
+ * @generated
+ */
+ EList<XSDSubstitutionGroupExclusions> getSubstitutionGroupExclusions();
+
+ /**
+ * Returns the value of the '<em><b>Substitution Group Exclusions</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * @see #getSubstitutionGroupExclusions()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Substitution Group Exclusions</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_SubstitutionGroupExclusions()
+ */
+ String getStringSubstitutionGroupExclusions();
+
+ /**
+ * Returns the value of the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#e-abstract">abstract</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Abstract</em>' attribute.
+ * @see #isSetAbstract()
+ * @see #unsetAbstract()
+ * @see #setAbstract(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_Abstract()
+ * @model unsettable="true"
+ * @generated
+ */
+ boolean isAbstract();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Abstract</em>' attribute.
+ * @see #isSetAbstract()
+ * @see #unsetAbstract()
+ * @see #isAbstract()
+ * @generated
+ */
+ void setAbstract(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetAbstract()
+ * @see #isAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ void unsetAbstract();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#isAbstract <em>Abstract</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Abstract</em>' attribute is set.
+ * @see #unsetAbstract()
+ * @see #isAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ boolean isSetAbstract();
+
+ /**
+ * Returns the value of the '<em><b>Lexical Final</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-element">final</a> attribute.
+ * </p>
+ * @see #getStringLexicalFinal()
+ * @see #setStringLexicalFinal(java.lang.String)
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Final</em>' attribute list.
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @see #isSetLexicalFinal()
+ * @see #unsetLexicalFinal()
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_LexicalFinal()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDProhibitedSubstitutions> getLexicalFinal();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getLexicalFinal <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetLexicalFinal()
+ * @see #getLexicalFinal()
+ * @generated
+ */
+ void unsetLexicalFinal();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getLexicalFinal <em>Lexical Final</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Lexical Final</em>' attribute list is set.
+ * @see #unsetLexicalFinal()
+ * @see #getLexicalFinal()
+ * @generated
+ */
+ boolean isSetLexicalFinal();
+
+ /**
+ * Returns the String value of the '{@link #getLexicalFinal() <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStringLexicalFinal()
+ * @see #setStringLexicalFinal(java.lang.String)
+ * @return the String value of the '<em>Lexical Final</em>' attribute list.
+ */
+ String getStringLexicalFinal();
+
+ /**
+ * Sets the String value of the '{@link #getLexicalFinal() <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param lexicalFinal the new value of the '<em>Lexical Final</em>' attribute list.
+ * @see #getLexicalFinal()
+ * @see #getStringLexicalFinal()
+ */
+ void setStringLexicalFinal(String lexicalFinal);
+
+ /**
+ * Returns the value of the '<em><b>Block</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDDisallowedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDDisallowedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-element">block</a> attribute.
+ * </p>
+ * @see #getStringBlock()
+ * @see #setStringBlock(java.lang.String)
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Block</em>' attribute list.
+ * @see org.eclipse.xsd.XSDDisallowedSubstitutions
+ * @see #isSetBlock()
+ * @see #unsetBlock()
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_Block()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDDisallowedSubstitutions> getBlock();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getBlock <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetBlock()
+ * @see #getBlock()
+ * @generated
+ */
+ void unsetBlock();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getBlock <em>Block</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Block</em>' attribute list is set.
+ * @see #unsetBlock()
+ * @see #getBlock()
+ * @generated
+ */
+ boolean isSetBlock();
+
+ /**
+ * Returns the String value of the '{@link #getBlock() <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Block</em>' attribute list.
+ * @see #getBlock()
+ * @see #setStringBlock(java.lang.String)
+ */
+ String getStringBlock();
+
+ /**
+ * Set the String value of the '{@link #getBlock() <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param block the new value of the '<em>Block</em>' attribute list.
+ * @see #getBlock()
+ * @see #getStringBlock()
+ */
+ void setStringBlock(String block);
+
+ /**
+ * Returns the value of the '<em><b>Element Declaration Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute is equivalent to
+ *<pre>
+ * xsdElementDeclaration != xsdElementDeclaration.{@link #getResolvedElementDeclaration getResolvedElementDeclaration}()
+ *</pre>
+ * An infoset feature will never return an instance for which this is the <code>true</code>
+ * since this is a concrete attribute that is used to represent an element declaration
+ * with a <a href="http://www.w3.org/TR/xmlschema-1/#element-element">ref</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Element Declaration Reference</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_ElementDeclarationReference()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isElementDeclarationReference();
+
+ /**
+ * Returns the value of the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates that the element declaration is part of an invalid circular substitution group.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Circular</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_Circular()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isCircular();
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#e-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Anonymous Type Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents a type definition defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-element">element</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Anonymous Type Definition</em>' containment reference.
+ * @see #setAnonymousTypeDefinition(XSDTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_AnonymousTypeDefinition()
+ * @model containment="true"
+ * @generated
+ */
+ XSDTypeDefinition getAnonymousTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Anonymous Type Definition</em>' containment reference.
+ * @see #getAnonymousTypeDefinition()
+ * @generated
+ */
+ void setAnonymousTypeDefinition(XSDTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#type_definition">type definition</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type Definition</em>' reference.
+ * @see #setTypeDefinition(XSDTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_TypeDefinition()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDTypeDefinition getTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getTypeDefinition <em>Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type Definition</em>' reference.
+ * @see #getTypeDefinition()
+ * @generated
+ */
+ void setTypeDefinition(XSDTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Identity Constraint Definitions</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDIdentityConstraintDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#identity-constraint_definitions">identity constraint definitions</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Identity Constraint Definitions</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_IdentityConstraintDefinitions()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDIdentityConstraintDefinition> getIdentityConstraintDefinitions();
+
+ /**
+ * Returns the value of the '<em><b>Resolved Element Declaration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the element declaration
+ * resolved by the <a href="http://www.w3.org/TR/xmlschema-1/#element-element">ref</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Element Declaration</em>' reference.
+ * @see #setResolvedElementDeclaration(XSDElementDeclaration)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_ResolvedElementDeclaration()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDElementDeclaration getResolvedElementDeclaration();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getResolvedElementDeclaration <em>Resolved Element Declaration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Element Declaration</em>' reference.
+ * @see #getResolvedElementDeclaration()
+ * @generated
+ */
+ void setResolvedElementDeclaration(XSDElementDeclaration value);
+
+ /**
+ * Returns the value of the '<em><b>Substitution Group Affiliation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#class_exemplar">substitution group affiliation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Substitution Group Affiliation</em>' reference.
+ * @see #setSubstitutionGroupAffiliation(XSDElementDeclaration)
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_SubstitutionGroupAffiliation()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDElementDeclaration getSubstitutionGroupAffiliation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupAffiliation <em>Substitution Group Affiliation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Substitution Group Affiliation</em>' reference.
+ * @see #getSubstitutionGroupAffiliation()
+ * @generated
+ */
+ void setSubstitutionGroupAffiliation(XSDElementDeclaration value);
+
+ /**
+ * Returns the value of the '<em><b>Substitution Group</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDElementDeclaration}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-equiv-class">substitution group</a>
+ * infoset property;
+ * actually it isn't really an infoset property,
+ * but it's certainly needed during validation.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Substitution Group</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDElementDeclaration_SubstitutionGroup()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDElementDeclaration> getSubstitutionGroup();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDEnumerationFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDEnumerationFacet.java
new file mode 100644
index 0000000..eb0b15e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDEnumerationFacet.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-enumeration"><em><b>Enumeration Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDEnumerationFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDEnumerationFacet()
+ * @model
+ * @generated
+ */
+public interface XSDEnumerationFacet extends XSDRepeatableFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Object}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#enumeration-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDEnumerationFacet_Value()
+ * @model dataType="org.eclipse.xsd.Value"
+ * @generated
+ */
+ EList<Object> getValue();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFacet.java
new file mode 100644
index 0000000..cbeef83
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFacet.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<a href="http://www.w3.org/TR/xmlschema-2/#facets"><em><b>Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDFacet#getLexicalValue <em>Lexical Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFacet#getFacetName <em>Facet Name</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFacet#getEffectiveValue <em>Effective Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFacet#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFacet#getSimpleTypeDefinition <em>Simple Type Definition</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDFacet extends XSDComponent
+{
+ /**
+ * Returns the value of the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the <code>value</code> attribute of the facet element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Value</em>' attribute.
+ * @see #setLexicalValue(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFacet_LexicalValue()
+ * @model
+ * @generated
+ */
+ String getLexicalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFacet#getLexicalValue <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lexical Value</em>' attribute.
+ * @see #getLexicalValue()
+ * @generated
+ */
+ void setLexicalValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the name of this type of facet.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Facet Name</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFacet_FacetName()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ String getFacetName();
+
+ /**
+ * Returns the value of the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents a generic version of the <code>value</code> infoset property of this facet.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFacet_EffectiveValue()
+ * @model dataType="org.eclipse.xsd.Value" changeable="false" volatile="true"
+ * @generated
+ */
+ Object getEffectiveValue();
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the annotation infoset property;
+ * each type of facet has an annotation.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFacet_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFacet#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link #getContainer() containing} simple type definition of the facet.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Simple Type Definition</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFacet_SimpleTypeDefinition()
+ * @model resolveProxies="false" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getSimpleTypeDefinition();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFactory.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFactory.java
new file mode 100644
index 0000000..1e540ee
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFactory.java
@@ -0,0 +1,356 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.ecore.EFactory;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage
+ * @generated
+ */
+public interface XSDFactory extends EFactory{
+ /**
+ * The singleton instance of the factory.
+ * @generated
+ */
+ XSDFactory eINSTANCE = org.eclipse.xsd.impl.XSDFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Schema</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Schema</em>'.
+ * @generated
+ */
+ XSDSchema createXSDSchema();
+
+ /**
+ * Returns a new object of class '<em>Simple Type Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Simple Type Definition</em>'.
+ * @generated
+ */
+ XSDSimpleTypeDefinition createXSDSimpleTypeDefinition();
+
+ /**
+ * Returns a new object of class '<em>Max Inclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Max Inclusive Facet</em>'.
+ * @generated
+ */
+ XSDMaxInclusiveFacet createXSDMaxInclusiveFacet();
+
+ /**
+ * Returns a new object of class '<em>Min Inclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Min Inclusive Facet</em>'.
+ * @generated
+ */
+ XSDMinInclusiveFacet createXSDMinInclusiveFacet();
+
+ /**
+ * Returns a new object of class '<em>Min Exclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Min Exclusive Facet</em>'.
+ * @generated
+ */
+ XSDMinExclusiveFacet createXSDMinExclusiveFacet();
+
+ /**
+ * Returns a new object of class '<em>Max Exclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Max Exclusive Facet</em>'.
+ * @generated
+ */
+ XSDMaxExclusiveFacet createXSDMaxExclusiveFacet();
+
+ /**
+ * Returns a new object of class '<em>Length Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Length Facet</em>'.
+ * @generated
+ */
+ XSDLengthFacet createXSDLengthFacet();
+
+ /**
+ * Returns a new object of class '<em>White Space Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>White Space Facet</em>'.
+ * @generated
+ */
+ XSDWhiteSpaceFacet createXSDWhiteSpaceFacet();
+
+ /**
+ * Returns a new object of class '<em>Enumeration Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Enumeration Facet</em>'.
+ * @generated
+ */
+ XSDEnumerationFacet createXSDEnumerationFacet();
+
+ /**
+ * Returns a new object of class '<em>Pattern Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Pattern Facet</em>'.
+ * @generated
+ */
+ XSDPatternFacet createXSDPatternFacet();
+
+ /**
+ * Returns a new object of class '<em>Cardinality Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Cardinality Facet</em>'.
+ * @generated
+ */
+ XSDCardinalityFacet createXSDCardinalityFacet();
+
+ /**
+ * Returns a new object of class '<em>Numeric Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Numeric Facet</em>'.
+ * @generated
+ */
+ XSDNumericFacet createXSDNumericFacet();
+
+ /**
+ * Returns a new object of class '<em>Max Length Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Max Length Facet</em>'.
+ * @generated
+ */
+ XSDMaxLengthFacet createXSDMaxLengthFacet();
+
+ /**
+ * Returns a new object of class '<em>Min Length Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Min Length Facet</em>'.
+ * @generated
+ */
+ XSDMinLengthFacet createXSDMinLengthFacet();
+
+ /**
+ * Returns a new object of class '<em>Total Digits Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Total Digits Facet</em>'.
+ * @generated
+ */
+ XSDTotalDigitsFacet createXSDTotalDigitsFacet();
+
+ /**
+ * Returns a new object of class '<em>Fraction Digits Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Fraction Digits Facet</em>'.
+ * @generated
+ */
+ XSDFractionDigitsFacet createXSDFractionDigitsFacet();
+
+ /**
+ * Returns a new object of class '<em>Ordered Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Ordered Facet</em>'.
+ * @generated
+ */
+ XSDOrderedFacet createXSDOrderedFacet();
+
+ /**
+ * Returns a new object of class '<em>Bounded Facet</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Bounded Facet</em>'.
+ * @generated
+ */
+ XSDBoundedFacet createXSDBoundedFacet();
+
+ /**
+ * Returns a new object of class '<em>Particle</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Particle</em>'.
+ * @generated
+ */
+ XSDParticle createXSDParticle();
+
+ /**
+ * Returns a new object of class '<em>Element Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Element Declaration</em>'.
+ * @generated
+ */
+ XSDElementDeclaration createXSDElementDeclaration();
+
+ /**
+ * Returns a new object of class '<em>Identity Constraint Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Identity Constraint Definition</em>'.
+ * @generated
+ */
+ XSDIdentityConstraintDefinition createXSDIdentityConstraintDefinition();
+
+ /**
+ * Returns a new object of class '<em>XPath Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>XPath Definition</em>'.
+ * @generated
+ */
+ XSDXPathDefinition createXSDXPathDefinition();
+
+ /**
+ * Returns a new object of class '<em>Attribute Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Attribute Declaration</em>'.
+ * @generated
+ */
+ XSDAttributeDeclaration createXSDAttributeDeclaration();
+
+ /**
+ * Returns a new object of class '<em>Attribute Group Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Attribute Group Definition</em>'.
+ * @generated
+ */
+ XSDAttributeGroupDefinition createXSDAttributeGroupDefinition();
+
+ /**
+ * Returns a new object of class '<em>Attribute Use</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Attribute Use</em>'.
+ * @generated
+ */
+ XSDAttributeUse createXSDAttributeUse();
+
+ /**
+ * Returns a new object of class '<em>Wildcard</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Wildcard</em>'.
+ * @generated
+ */
+ XSDWildcard createXSDWildcard();
+
+ /**
+ * Returns a new object of class '<em>Model Group Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Model Group Definition</em>'.
+ * @generated
+ */
+ XSDModelGroupDefinition createXSDModelGroupDefinition();
+
+ /**
+ * Returns a new object of class '<em>Model Group</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Model Group</em>'.
+ * @generated
+ */
+ XSDModelGroup createXSDModelGroup();
+
+ /**
+ * Returns a new object of class '<em>Notation Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Notation Declaration</em>'.
+ * @generated
+ */
+ XSDNotationDeclaration createXSDNotationDeclaration();
+
+ /**
+ * Returns a new object of class '<em>Diagnostic</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Diagnostic</em>'.
+ * @generated
+ */
+ XSDDiagnostic createXSDDiagnostic();
+
+ /**
+ * Returns a new object of class '<em>Annotation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Annotation</em>'.
+ * @generated
+ */
+ XSDAnnotation createXSDAnnotation();
+
+ /**
+ * Returns a new object of class '<em>Complex Type Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Complex Type Definition</em>'.
+ * @generated
+ */
+ XSDComplexTypeDefinition createXSDComplexTypeDefinition();
+
+ /**
+ * Returns a new object of class '<em>Redefine</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Redefine</em>'.
+ * @generated
+ */
+ XSDRedefine createXSDRedefine();
+
+ /**
+ * Returns a new object of class '<em>Include</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Include</em>'.
+ * @generated
+ */
+ XSDInclude createXSDInclude();
+
+ /**
+ * Returns a new object of class '<em>Import</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Import</em>'.
+ * @generated
+ */
+ XSDImport createXSDImport();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ XSDPackage getXSDPackage();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFeature.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFeature.java
new file mode 100644
index 0000000..708a950
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFeature.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Feature</b></em>'.
+ * It is used to represent aspects common to
+ * '{@link org.eclipse.xsd.XSDElementDeclaration <em>Element Declarations</em>}' and
+ * '{@link org.eclipse.xsd.XSDAttributeDeclaration <em>Attribute Declaration</em>}'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getConstraint <em>Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getForm <em>Form</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getLexicalValue <em>Lexical Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#isGlobal <em>Global</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#isFeatureReference <em>Feature Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getScope <em>Scope</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getResolvedFeature <em>Resolved Feature</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDFeature#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDFeature extends XSDNamedComponent
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * attribute <a href="http://www.w3.org/TR/xmlschema-1/#a-value_constraint">value constraint</a> or
+ * element <a href="http://www.w3.org/TR/xmlschema-1/#e-value_constraint">value constraint</a>
+ * infoset property.
+ * It is computed from the {@link #getLexicalValue() lexical value} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(Object)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_Value()
+ * @model dataType="org.eclipse.xsd.Value"
+ * @generated
+ */
+ Object getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFeature#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Constraint</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDConstraint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the constraint of the
+ * attribute <a href="http://www.w3.org/TR/xmlschema-1/#a-value_constraint">value constraint</a> or
+ * element <a href="http://www.w3.org/TR/xmlschema-1/#e-value_constraint">value constraint</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Constraint</em>' attribute.
+ * @see org.eclipse.xsd.XSDConstraint
+ * @see #isSetConstraint()
+ * @see #unsetConstraint()
+ * @see #setConstraint(XSDConstraint)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_Constraint()
+ * @model unsettable="true"
+ * @generated
+ */
+ XSDConstraint getConstraint();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFeature#getConstraint <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Constraint</em>' attribute.
+ * @see org.eclipse.xsd.XSDConstraint
+ * @see #isSetConstraint()
+ * @see #unsetConstraint()
+ * @see #getConstraint()
+ * @generated
+ */
+ void setConstraint(XSDConstraint value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDFeature#getConstraint <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetConstraint()
+ * @see #getConstraint()
+ * @see #setConstraint(XSDConstraint)
+ * @generated
+ */
+ void unsetConstraint();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDFeature#getConstraint <em>Constraint</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Constraint</em>' attribute is set.
+ * @see #unsetConstraint()
+ * @see #getConstraint()
+ * @see #setConstraint(XSDConstraint)
+ * @generated
+ */
+ boolean isSetConstraint();
+
+ /**
+ * Returns the value of the '<em><b>Form</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDForm}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * attribute <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">form</a> attribute or the
+ * element <a href="http://www.w3.org/TR/xmlschema-1/#element-element">form</a> attribute.
+ * It, along with the
+ * {@link org.eclipse.xsd.XSDSchema#getAttributeFormDefault() attribute form default} and
+ * {@link org.eclipse.xsd.XSDSchema#getElementFormDefault() element form default} of the schema,
+ * affects the {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() target namespace} of locally scoped features.
+ * </p>
+ * @see org.eclipse.xsd.XSDSchema#getAttributeFormDefault()
+ * @see org.eclipse.xsd.XSDSchema#getElementFormDefault()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Form</em>' attribute.
+ * @see org.eclipse.xsd.XSDForm
+ * @see #isSetForm()
+ * @see #unsetForm()
+ * @see #setForm(XSDForm)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_Form()
+ * @model unsettable="true"
+ * @generated
+ */
+ XSDForm getForm();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFeature#getForm <em>Form</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Form</em>' attribute.
+ * @see org.eclipse.xsd.XSDForm
+ * @see #isSetForm()
+ * @see #unsetForm()
+ * @see #getForm()
+ * @generated
+ */
+ void setForm(XSDForm value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDFeature#getForm <em>Form</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetForm()
+ * @see #getForm()
+ * @see #setForm(XSDForm)
+ * @generated
+ */
+ void unsetForm();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDFeature#getForm <em>Form</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Form</em>' attribute is set.
+ * @see #unsetForm()
+ * @see #getForm()
+ * @see #setForm(XSDForm)
+ * @generated
+ */
+ boolean isSetForm();
+
+ /**
+ * Returns the value of the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * attribute <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">fixed</a> or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-attribute">default</a> attribute
+ * or the
+ * element <a href="http://www.w3.org/TR/xmlschema-1/#element-element">fixed</a> or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-element">default</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Value</em>' attribute.
+ * @see #setLexicalValue(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_LexicalValue()
+ * @model
+ * @generated
+ */
+ String getLexicalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFeature#getLexicalValue <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lexical Value</em>' attribute.
+ * @see #getLexicalValue()
+ * @generated
+ */
+ void setLexicalValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Global</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates whether the feature is globally {@link #getScope() scoped}.
+ * Its value is false if the feature is declared within
+ * a {@link org.eclipse.xsd.XSDComplexTypeDefinition complex type definition},
+ * an {@link org.eclipse.xsd.XSDAttributeGroupDefinition attribute group definition},
+ * or a {@link org.eclipse.xsd.XSDModelGroupDefinition model group definition}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Global</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_Global()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isGlobal();
+
+ /**
+ * Returns the value of the '<em><b>Feature Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is the same result as either
+ * the '{@link org.eclipse.xsd.XSDElementDeclaration#isElementDeclarationReference() <em>Element Reference</em>}' attribute or
+ * the '{@link org.eclipse.xsd.XSDAttributeDeclaration#isAttributeDeclarationReference() <em>Attribute Reference</em>}' attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Feature Reference</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_FeatureReference()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isFeatureReference();
+
+ /**
+ * Returns the value of the '<em><b>Scope</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * attribute <a href="http://www.w3.org/TR/xmlschema-1/#a-scope">scope</a> or
+ * element <a href="http://www.w3.org/TR/xmlschema-1/#e-scope">scope</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Scope</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_Scope()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDScope getScope();
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is the same result as either
+ * the element '{@link org.eclipse.xsd.XSDElementDeclaration#getTypeDefinition() <em>Type Definition</em>}' reference or
+ * the attribute '{@link org.eclipse.xsd.XSDAttributeDeclaration#getTypeDefinition() <em>Type Definition</em>}' reference.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_Type()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDTypeDefinition getType();
+
+ /**
+ * Returns the value of the '<em><b>Resolved Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is the same result as either
+ * the '{@link org.eclipse.xsd.XSDElementDeclaration#getResolvedElementDeclaration() <em>Resolved Element Declaration</em>}' reference or
+ * the '{@link org.eclipse.xsd.XSDAttributeDeclaration#getResolvedAttributeDeclaration() <em>Resolved Attribute Declaration</em>}' reference.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Feature</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDFeature_ResolvedFeature()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDFeature getResolvedFeature();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFixedFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFixedFacet.java
new file mode 100644
index 0000000..061016c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFixedFacet.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<a href="http://www.w3.org/TR/xmlschema-2/#facets"><em><b>Fixed Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDFixedFacet#isFixed <em>Fixed</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDFixedFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDFixedFacet extends XSDConstrainingFacet {
+ /**
+ * Returns the value of the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * fractionDigitsFacet <a href="http://www.w3.org/TR/xmlschema-2/#fractionDigits-fixed">fixed</a>,
+ * lengthFacet <a href="http://www.w3.org/TR/xmlschema-2/#lengthFacet-fixed">fixed</a>,
+ * maxExclusiveFacet <a href="http://www.w3.org/TR/xmlschema-2/#maxExclusiveFacet-fixed">fixed</a>,
+ * maxInclusiveFacet <a href="http://www.w3.org/TR/xmlschema-2/#maxInclusive-fixed">fixed</a>,
+ * maxLengthFacet <a href="http://www.w3.org/TR/xmlschema-2/#maxLength-fixed">fixed</a>,
+ * minExclusiveFacet <a href="http://www.w3.org/TR/xmlschema-2/#minExclusiveFacet-fixed">fixed</a>,
+ * minInclusiveFacet <a href="http://www.w3.org/TR/xmlschema-2/#minInclusiveFacet-fixed">fixed</a>,
+ * minLengthFacet <a href="http://www.w3.org/TR/xmlschema-2/#minLengthFacet-fixed">fixed</a>,
+ * totalDigitsFacet <a href="http://www.w3.org/TR/xmlschema-2/#totalDigitsFacet-fixed">fixed</a>,
+ * whiteSpaceFacet <a href="http://www.w3.org/TR/xmlschema-2/#whiteSpaceFacet-fixed">fixed</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fixed</em>' attribute.
+ * @see #isSetFixed()
+ * @see #unsetFixed()
+ * @see #setFixed(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFixedFacet_Fixed()
+ * @model unsettable="true"
+ * @generated
+ */
+ boolean isFixed();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFixedFacet#isFixed <em>Fixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fixed</em>' attribute.
+ * @see #isSetFixed()
+ * @see #unsetFixed()
+ * @see #isFixed()
+ * @generated
+ */
+ void setFixed(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDFixedFacet#isFixed <em>Fixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetFixed()
+ * @see #isFixed()
+ * @see #setFixed(boolean)
+ * @generated
+ */
+ void unsetFixed();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDFixedFacet#isFixed <em>Fixed</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Fixed</em>' attribute is set.
+ * @see #unsetFixed()
+ * @see #isFixed()
+ * @see #setFixed(boolean)
+ * @generated
+ */
+ boolean isSetFixed();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDForm.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDForm.java
new file mode 100644
index 0000000..94e2339
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDForm.java
@@ -0,0 +1,246 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Form</b></em>'.
+ * @see org.eclipse.xsd.XSDSchema#getAttributeFormDefault()
+ * @see org.eclipse.xsd.XSDSchema#getElementFormDefault()
+ * @see org.eclipse.xsd.XSDFeature#getForm()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDForm()
+ * @model
+ * @generated
+ */
+public enum XSDForm implements Enumerator
+{
+ /**
+ * The '<em><b>Qualified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #QUALIFIED
+ * @generated
+ * @ordered
+ */
+ QUALIFIED_LITERAL(0, "qualified", "qualified"),
+
+ /**
+ * The '<em><b>Unqualified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNQUALIFIED
+ * @generated
+ * @ordered
+ */
+ UNQUALIFIED_LITERAL(1, "unqualified", "unqualified");
+
+ /**
+ * The '<em><b>Qualified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the {@link org.eclipse.xsd.XSDFeature feature} is qualified,
+ * i.e., the value of the '{@link org.eclipse.xsd.XSDNamedComponent <em>Target Namespace</em>}' attribute
+ * will be that of the {@link org.eclipse.xsd.XSDSchema#getTargetNamespace() schema}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #QUALIFIED_LITERAL
+ * @model name="qualified"
+ * @generated
+ * @ordered
+ */
+ public static final int QUALIFIED = 0;
+
+ /**
+ * The '<em><b>Unqualified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the {@link org.eclipse.xsd.XSDFeature feature} is unqualified,
+ * i.e., the value of the '{@link org.eclipse.xsd.XSDNamedComponent <em>Target Namespace</em>}' attribute
+ * will be <code>null</code>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNQUALIFIED_LITERAL
+ * @model name="unqualified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNQUALIFIED = 1;
+
+ /**
+ * An array of all the '<em><b>Form</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDForm[] VALUES_ARRAY =
+ new XSDForm[]
+ {
+ QUALIFIED_LITERAL,
+ UNQUALIFIED_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Form</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDForm> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Form</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDForm get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDForm result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Form</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDForm getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDForm result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Form</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDForm get(int value)
+ {
+ switch (value)
+ {
+ case QUALIFIED: return QUALIFIED_LITERAL;
+ case UNQUALIFIED: return UNQUALIFIED_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDForm(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFractionDigitsFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFractionDigitsFacet.java
new file mode 100644
index 0000000..58000e7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFractionDigitsFacet.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-fractionDigits"><em><b>Fraction Digits Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDFractionDigitsFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDFractionDigitsFacet()
+ * @model
+ * @generated
+ */
+public interface XSDFractionDigitsFacet extends XSDFixedFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#fractionDigits-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDFractionDigitsFacet_Value()
+ * @model
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDFractionDigitsFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFundamentalFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFundamentalFacet.java
new file mode 100644
index 0000000..3719409
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDFundamentalFacet.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<a href="http://www.w3.org/TR/xmlschema-2/#rf-fund-facets"><em><b>Fundamental Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDFundamentalFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDFundamentalFacet extends XSDFacet
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDIdentityConstraintCategory.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDIdentityConstraintCategory.java
new file mode 100644
index 0000000..e8dcab1
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDIdentityConstraintCategory.java
@@ -0,0 +1,271 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Identity Constraint Category</b></em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition#getIdentityConstraintCategory()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintCategory()
+ * @model
+ * @generated
+ */
+public enum XSDIdentityConstraintCategory implements Enumerator
+{
+ /**
+ * The '<em><b>Key</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #KEY
+ * @generated
+ * @ordered
+ */
+ KEY_LITERAL(0, "key", "key"),
+
+ /**
+ * The '<em><b>Keyref</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #KEYREF
+ * @generated
+ * @ordered
+ */
+ KEYREF_LITERAL(1, "keyref", "keyref"),
+
+ /**
+ * The '<em><b>Unique</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNIQUE
+ * @generated
+ * @ordered
+ */
+ UNIQUE_LITERAL(2, "unique", "unique");
+
+ /**
+ * The '<em><b>Key</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an identity constraint definition is a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-key">key</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #KEY_LITERAL
+ * @model name="key"
+ * @generated
+ * @ordered
+ */
+ public static final int KEY = 0;
+
+ /**
+ * The '<em><b>Keyref</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an identity constraint definition is a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-keyRef">keyRef</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #KEYREF_LITERAL
+ * @model name="keyref"
+ * @generated
+ * @ordered
+ */
+ public static final int KEYREF = 1;
+
+ /**
+ * The '<em><b>Unique</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an identity constraint definition is a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-unique">unique</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNIQUE_LITERAL
+ * @model name="unique"
+ * @generated
+ * @ordered
+ */
+ public static final int UNIQUE = 2;
+
+ /**
+ * An array of all the '<em><b>Identity Constraint Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDIdentityConstraintCategory[] VALUES_ARRAY =
+ new XSDIdentityConstraintCategory[]
+ {
+ KEY_LITERAL,
+ KEYREF_LITERAL,
+ UNIQUE_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Identity Constraint Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDIdentityConstraintCategory> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Identity Constraint Category</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDIdentityConstraintCategory get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDIdentityConstraintCategory result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Identity Constraint Category</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDIdentityConstraintCategory getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDIdentityConstraintCategory result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Identity Constraint Category</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDIdentityConstraintCategory get(int value)
+ {
+ switch (value)
+ {
+ case KEY: return KEY_LITERAL;
+ case KEYREF: return KEYREF_LITERAL;
+ case UNIQUE: return UNIQUE_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDIdentityConstraintCategory(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDIdentityConstraintDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDIdentityConstraintDefinition.java
new file mode 100644
index 0000000..0c826cd
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDIdentityConstraintDefinition.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cIdentity-constraint_Definitions"><em><b>Identity Constraint Definition</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getIdentityConstraintCategory <em>Identity Constraint Category</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getReferencedKey <em>Referenced Key</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getSelector <em>Selector</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getFields <em>Fields</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintDefinition()
+ * @model
+ * @generated
+ */
+public interface XSDIdentityConstraintDefinition extends XSDNamedComponent
+{
+ /**
+ * Returns the value of the '<em><b>Identity Constraint Category</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDIdentityConstraintCategory}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#identity-constraint_name">identity constraint category</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Identity Constraint Category</em>' attribute.
+ * @see org.eclipse.xsd.XSDIdentityConstraintCategory
+ * @see #setIdentityConstraintCategory(XSDIdentityConstraintCategory)
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintDefinition_IdentityConstraintCategory()
+ * @model
+ * @generated
+ */
+ XSDIdentityConstraintCategory getIdentityConstraintCategory();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getIdentityConstraintCategory <em>Identity Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Identity Constraint Category</em>' attribute.
+ * @see org.eclipse.xsd.XSDIdentityConstraintCategory
+ * @see #getIdentityConstraintCategory()
+ * @generated
+ */
+ void setIdentityConstraintCategory(XSDIdentityConstraintCategory value);
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#rc-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintDefinition_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Referenced Key</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#referenced_key">referenced key</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referenced Key</em>' reference.
+ * @see #setReferencedKey(XSDIdentityConstraintDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintDefinition_ReferencedKey()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDIdentityConstraintDefinition getReferencedKey();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getReferencedKey <em>Referenced Key</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Referenced Key</em>' reference.
+ * @see #getReferencedKey()
+ * @generated
+ */
+ void setReferencedKey(XSDIdentityConstraintDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Selector</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#selector">selector</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Selector</em>' containment reference.
+ * @see #setSelector(XSDXPathDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintDefinition_Selector()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ XSDXPathDefinition getSelector();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getSelector <em>Selector</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Selector</em>' containment reference.
+ * @see #getSelector()
+ * @generated
+ */
+ void setSelector(XSDXPathDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Fields</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDXPathDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#fields">fields</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fields</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDIdentityConstraintDefinition_Fields()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<XSDXPathDefinition> getFields();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDImport.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDImport.java
new file mode 100644
index 0000000..7827e8d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDImport.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#composition-schemaImport"><em><b>Import</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDImport#getNamespace <em>Namespace</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDImport#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDImport()
+ * @model
+ * @generated
+ */
+public interface XSDImport extends XSDSchemaDirective
+{
+ /**
+ * Returns the value of the '<em><b>Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-import">namespace</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Namespace</em>' attribute.
+ * @see #setNamespace(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDImport_Namespace()
+ * @model
+ * @generated
+ */
+ String getNamespace();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDImport#getNamespace <em>Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Namespace</em>' attribute.
+ * @see #getNamespace()
+ * @generated
+ */
+ void setNamespace(String value);
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the annotation content of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-import">import</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDImport_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDImport#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDInclude.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDInclude.java
new file mode 100644
index 0000000..413bfae
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDInclude.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#compound-schema"><em><b>Include</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDInclude#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDInclude()
+ * @model
+ * @generated
+ */
+public interface XSDInclude extends XSDSchemaCompositor
+{
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the annotation content of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-include">include</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDInclude_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDInclude#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDLengthFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDLengthFacet.java
new file mode 100644
index 0000000..8dbd744
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDLengthFacet.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-length"><em><b>Length Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDLengthFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDLengthFacet()
+ * @model
+ * @generated
+ */
+public interface XSDLengthFacet extends XSDFixedFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#length-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDLengthFacet_Value()
+ * @model
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDLengthFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxExclusiveFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxExclusiveFacet.java
new file mode 100644
index 0000000..81284de
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxExclusiveFacet.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-maxExclusive"><em><b>Max Exclusive Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxExclusiveFacet()
+ * @model
+ * @generated
+ */
+public interface XSDMaxExclusiveFacet extends XSDMaxFacet
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxFacet.java
new file mode 100644
index 0000000..6daf394
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxFacet.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Facet</b></em>'.
+ * It represents aspects common to
+ * '{@link org.eclipse.xsd.XSDMaxExclusiveFacet <em>Max Exclusive Facet</em>}' and
+ * '{@link org.eclipse.xsd.XSDMaxInclusiveFacet <em>Max Inclusive Facet</em>}'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDMaxFacet#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDMaxFacet#isInclusive <em>Inclusive</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDMaxFacet#isExclusive <em>Exclusive</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDMaxFacet extends XSDFixedFacet {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * maxExclusive <a href="http://www.w3.org/TR/xmlschema-2/#maxExclusive-value">value</a> or
+ * maxInclusive <a href="http://www.w3.org/TR/xmlschema-2/#maxInclusive-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(Object)
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxFacet_Value()
+ * @model dataType="org.eclipse.xsd.Value"
+ * @generated
+ */
+ Object getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDMaxFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * The value is <code>true</code> if this is a {@link org.eclipse.xsd.XSDMaxInclusiveFacet}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Inclusive</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxFacet_Inclusive()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isInclusive();
+
+ /**
+ * Returns the value of the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * The value is <code>true</code> if this is a {@link org.eclipse.xsd.XSDMaxExclusiveFacet}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Exclusive</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxFacet_Exclusive()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isExclusive();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxInclusiveFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxInclusiveFacet.java
new file mode 100644
index 0000000..d30cd32
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxInclusiveFacet.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-maxInclusive"><em><b>Max Inclusive Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxInclusiveFacet()
+ * @model
+ * @generated
+ */
+public interface XSDMaxInclusiveFacet extends XSDMaxFacet
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxLengthFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxLengthFacet.java
new file mode 100644
index 0000000..649fa9f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMaxLengthFacet.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-maxLength"><em><b>Max Length Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDMaxLengthFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxLengthFacet()
+ * @model
+ * @generated
+ */
+public interface XSDMaxLengthFacet extends XSDFixedFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#maxLength-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDMaxLengthFacet_Value()
+ * @model
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDMaxLengthFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinExclusiveFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinExclusiveFacet.java
new file mode 100644
index 0000000..021988f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinExclusiveFacet.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-minExclusive"><em><b>Min Exclusive Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinExclusiveFacet()
+ * @model
+ * @generated
+ */
+public interface XSDMinExclusiveFacet extends XSDMinFacet
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinFacet.java
new file mode 100644
index 0000000..a58e725
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinFacet.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Min Facet</b></em>'.
+ * It represents aspects common to
+ * '{@link org.eclipse.xsd.XSDMinExclusiveFacet <em>Min Exclusive Facet</em>}' and
+ * '{@link org.eclipse.xsd.XSDMinInclusiveFacet <em>Min Inclusive Facet</em>}'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDMinFacet#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDMinFacet#isInclusive <em>Inclusive</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDMinFacet#isExclusive <em>Exclusive</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDMinFacet extends XSDFixedFacet {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * minExclusive <a href="http://www.w3.org/TR/xmlschema-2/#minExclusive-value">value</a> or
+ * minInclusive <a href="http://www.w3.org/TR/xmlschema-2/#minInclusive-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(Object)
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinFacet_Value()
+ * @model dataType="org.eclipse.xsd.Value"
+ * @generated
+ */
+ Object getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDMinFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * The value is <code>true</code> if this is a {@link org.eclipse.xsd.XSDMinInclusiveFacet}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Inclusive</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinFacet_Inclusive()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isInclusive();
+
+ /**
+ * Returns the value of the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Exclusive</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinFacet_Exclusive()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isExclusive();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinInclusiveFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinInclusiveFacet.java
new file mode 100644
index 0000000..c04c8fb
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinInclusiveFacet.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-minInclusive"><em><b>Min Inclusive Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinInclusiveFacet()
+ * @model
+ * @generated
+ */
+public interface XSDMinInclusiveFacet extends XSDMinFacet
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinLengthFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinLengthFacet.java
new file mode 100644
index 0000000..469e390
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDMinLengthFacet.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-minLength"><em><b>Min Length Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDMinLengthFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinLengthFacet()
+ * @model
+ * @generated
+ */
+public interface XSDMinLengthFacet extends XSDFixedFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#minLength-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDMinLengthFacet_Value()
+ * @model
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDMinLengthFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDModelGroup.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDModelGroup.java
new file mode 100644
index 0000000..acca503
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDModelGroup.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#Model_Group"><em><b>Model Group</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDModelGroup#getCompositor <em>Compositor</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDModelGroup#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDModelGroup#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDModelGroup#getParticles <em>Particles</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroup()
+ * @model
+ * @generated
+ */
+public interface XSDModelGroup extends XSDTerm
+{
+ /**
+ * Returns the value of the '<em><b>Compositor</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDCompositor}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#compositor">compositor</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Compositor</em>' attribute.
+ * @see org.eclipse.xsd.XSDCompositor
+ * @see #setCompositor(XSDCompositor)
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroup_Compositor()
+ * @model
+ * @generated
+ */
+ XSDCompositor getCompositor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDModelGroup#getCompositor <em>Compositor</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Compositor</em>' attribute.
+ * @see org.eclipse.xsd.XSDCompositor
+ * @see #getCompositor()
+ * @generated
+ */
+ void setCompositor(XSDCompositor value);
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#amg-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroup_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDModelGroup#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDParticle}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the {@link org.eclipse.xsd.XSDParticleContent particle contents} defined within the body of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-sequence">sequence</a>,
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-choice">choice</a>, or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-all">all</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroup_Contents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDParticle> getContents();
+
+ /**
+ * Returns the value of the '<em><b>Particles</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDParticle}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#particles">particles</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Particles</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroup_Particles()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ EList<XSDParticle> getParticles();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDModelGroupDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDModelGroupDefinition.java
new file mode 100644
index 0000000..433ef76
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDModelGroupDefinition.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#Model_Group_Definition"><em><b>Model Group Definition</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDModelGroupDefinition#isModelGroupDefinitionReference <em>Model Group Definition Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDModelGroupDefinition#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDModelGroupDefinition#getModelGroup <em>Model Group</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDModelGroupDefinition#getResolvedModelGroupDefinition <em>Resolved Model Group Definition</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroupDefinition()
+ * @model
+ * @generated
+ */
+public interface XSDModelGroupDefinition extends XSDRedefinableComponent, XSDParticleContent, XSDRedefineContent
+{
+ /**
+ * Returns the value of the '<em><b>Model Group Definition Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute is equivalent to
+ *<pre>
+ * xsdModelGroupDefinition != xsdModelGroupDefinition.{@link #getResolvedModelGroupDefinition getResolvedModelGroupDefinition}()
+ *</pre>
+ * An infoset feature will never return an instance for which this is the <code>true</code>
+ * since this is a concrete attribute that is used to represent a model group definition
+ * with a <a href="http://www.w3.org/TR/xmlschema-1/#element-group">ref</a> attribute.
+ * </p>
+ * @see #getResolvedModelGroupDefinition()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Model Group Definition Reference</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroupDefinition_ModelGroupDefinitionReference()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isModelGroupDefinitionReference();
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#mg-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroupDefinition_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDModelGroupDefinition#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Model Group</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#model_group">model group</a>
+ * infoset property.
+ * (Some browsers do a case-insenstive match on the anchor and get the above link wrong;
+ * it should point to a property of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#Model_Group_Definition_details">model group definition</a>.)
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Model Group</em>' containment reference.
+ * @see #setModelGroup(XSDModelGroup)
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroupDefinition_ModelGroup()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ XSDModelGroup getModelGroup();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDModelGroupDefinition#getModelGroup <em>Model Group</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Model Group</em>' containment reference.
+ * @see #getModelGroup()
+ * @generated
+ */
+ void setModelGroup(XSDModelGroup value);
+
+ /**
+ * Returns the value of the '<em><b>Resolved Model Group Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the model group definition
+ * resolved by the <a href="http://www.w3.org/TR/xmlschema-1/#element-group">ref</a> attribute.
+ * Note that as of the writing of this documentation,
+ * the ref attribute doesn't actually appear in the XML Representation Summary,
+ * but it is mentioned in the particle interpretation.
+ * </p>
+ * @see #isModelGroupDefinitionReference()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Model Group Definition</em>' reference.
+ * @see #setResolvedModelGroupDefinition(XSDModelGroupDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDModelGroupDefinition_ResolvedModelGroupDefinition()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDModelGroupDefinition getResolvedModelGroupDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDModelGroupDefinition#getResolvedModelGroupDefinition <em>Resolved Model Group Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Model Group Definition</em>' reference.
+ * @see #getResolvedModelGroupDefinition()
+ * @generated
+ */
+ void setResolvedModelGroupDefinition(XSDModelGroupDefinition value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNamedComponent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNamedComponent.java
new file mode 100644
index 0000000..026f660
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNamedComponent.java
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Named Component</b></em>'.
+ * It is used to represent aspects common to
+ * {@link org.eclipse.xsd.XSDAttributeDeclaration attribute declarations},
+ * {@link org.eclipse.xsd.XSDAttributeGroupDefinition attribute group definitions},
+ * {@link org.eclipse.xsd.XSDComplexTypeDefinition complex type definitions},
+ * {@link org.eclipse.xsd.XSDElementDeclaration element declarations},
+ * {@link org.eclipse.xsd.XSDIdentityConstraintDefinition identity constraint definitions},
+ * {@link org.eclipse.xsd.XSDModelGroupDefinition model groups definitions},
+ * {@link org.eclipse.xsd.XSDNotationDeclaration notation declarations}, and
+ * {@link org.eclipse.xsd.XSDSimpleTypeDefinition simple type definitions}.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDNamedComponent#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace <em>Target Namespace</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNamedComponent#getAliasName <em>Alias Name</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNamedComponent#getURI <em>URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNamedComponent#getAliasURI <em>Alias URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNamedComponent#getQName <em>QName</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDNamedComponent extends XSDComponent
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * attribute declaration <a href="http://www.w3.org/TR/xmlschema-1/#a-name">name</a>,
+ * attribute group definition <a href="http://www.w3.org/TR/xmlschema-1/#ag-name">name</a>,
+ * complex type definition <a href="http://www.w3.org/TR/xmlschema-1/#ct-name">name</a>,
+ * element declaration <a href="http://www.w3.org/TR/xmlschema-1/#e-name">name</a>,
+ * identity constraint definition <a href="http://www.w3.org/TR/xmlschema-1/#c-name">name</a>,
+ * model group definition <a href="http://www.w3.org/TR/xmlschema-1/#mg-name">name</a>,
+ * notation declaration <a href="http://www.w3.org/TR/xmlschema-1/#n-name">name</a>, or
+ * simple type definition <a href="http://www.w3.org/TR/xmlschema-2/#defn-name">name</a>
+ * (<a href="http://www.w3.org/TR/xmlschema-1/#st-name">*</a>)
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDNamedComponent#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * attribute declaration <a href="http://www.w3.org/TR/xmlschema-1/#a-target_namespace">target namespace</a>,
+ * attribute group definition <a href="http://www.w3.org/TR/xmlschema-1/#ag-target_namespace">target namespace</a>,
+ * complex type definition <a href="http://www.w3.org/TR/xmlschema-1/#ct-target_namespace">target namespace</a>,
+ * element declaration <a href="http://www.w3.org/TR/xmlschema-1/#e-target_namespace">target namespace</a>,
+ * identity constraint definition <a href="http://www.w3.org/TR/xmlschema-1/#c-target_namespace">target namespace</a>,
+ * model group definition <a href="http://www.w3.org/TR/xmlschema-1/#mg-target_namespace">target namespace</a>,
+ * notation declaration <a href="http://www.w3.org/TR/xmlschema-1/#n-target_namespace">target namespace</a>, or
+ * simple type definition <a href="http://www.w3.org/TR/xmlschema-2/#defn-target-namespace">target namespace</a>
+ * (<a href="http://www.w3.org/TR/xmlschema-1/#st-target_namespace">*</a>)
+ * infoset property.
+ * It is computed from the {@link org.eclipse.xsd.XSDSchema#getTargetNamespace() target namespace} of the schema
+ * and should typically not be set directly;
+ * in the case of locally scoped {@link org.eclipse.xsd.XSDFeature features},
+ * the value is also affected by the {@link org.eclipse.xsd.XSDFeature#getForm form}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Namespace</em>' attribute.
+ * @see #setTargetNamespace(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent_TargetNamespace()
+ * @model
+ * @generated
+ */
+ String getTargetNamespace();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace <em>Target Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target Namespace</em>' attribute.
+ * @see #getTargetNamespace()
+ * @generated
+ */
+ void setTargetNamespace(String value);
+
+ /**
+ * Returns the value of the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This attempts to construct a relatively meaningful name for an anonymous component
+ * by using the name of the containing component and an indication of the relation to that component,
+ * For example,
+ * "<code>E_._type</code>" would be the alias name of the anonymous type definition of the element "<code>E</code>" and
+ * "<code>LT_._item</code>" would be the alias name of the anonymous item type definition of the list type defintion "<code>LT</code>".
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Alias Name</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent_AliasName()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ String getAliasName();
+
+ /**
+ * Returns the value of the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is equivalent to the string
+ *<pre>
+ * <{@link #getTargetNamespace() target namespace}>#<{@link #getName() name}>
+ *</pre>
+ * where a <code>null</code> target namespace is taken to mean an empty string.
+ * </p>
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveAttributeDeclarationURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveAttributeGroupDefinitionURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveComplexTypeDefinitionURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveElementDeclarationURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveIdentityConstraintDefinitionURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveModelGroupDefinitionURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveNotationDeclarationURI
+ * @see org.eclipse.xsd.XSDConcreteComponent#resolveSimpleTypeDefinitionURI
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>URI</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent_URI()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ String getURI();
+
+ /**
+ * Returns the value of the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is equivalent to the string
+ *<pre>
+ * <{@link #getTargetNamespace() target namespace}>#<{@link #getAliasName() alias name}>
+ *</pre>
+ * where a <code>null</code> target namespace is taken to mean an empty string.
+ * There is no support yet for resolving this URI;
+ * only globally scoped names can be resolved.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Alias URI</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent_AliasURI()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ String getAliasURI();
+
+ /**
+ * Returns the value of the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute is equivalent to
+ *<pre>
+ * xsdNamedComponent.{@link #getQName(org.eclipse.xsd.XSDConcreteComponent) getQName}(xsdNamedComponent)
+ *</pre>
+ * </p>
+ * @see #getQName(org.eclipse.xsd.XSDConcreteComponent)
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>QName</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamedComponent_QName()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ String getQName();
+
+ /**
+ * Returns this named component's
+ * '{@link org.eclipse.xsd.XSDNamedComponent#getQName <em>QName</em>}'
+ * in the context of the given component.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param relativeToComponent the context at which to express the QName.
+ * @return the '{@link org.eclipse.xsd.XSDNamedComponent#getQName <em>QName</em>}'.
+ * @see #getQName()
+ */
+ String getQName(XSDConcreteComponent relativeToComponent);
+
+ /**
+ * Returns whether this named component and the given named component are named the same.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is equivalent to
+ *<pre>
+ * xsdNamedComponent.{@link #hasNameAndTargetNamespace hasNameAndTargetNamespace}
+ * (xsdOtherNamedComponent.{@link #getName getName}(),
+ * xsdOtherNamedComponent.{@link #getTargetNamespace getTargetNamespace}())
+ *</pre>
+ * </p>
+ * <!-- end-user-doc -->
+ * @param xsdNamedComponent another named component.
+ * @return whether this named component and the given named component are named the same.
+ * @see #hasNameAndTargetNamespace
+ * @see #getName()
+ * @see #getTargetNamespace()
+ */
+ boolean hasSameNameAndTargetNamespace(XSDNamedComponent xsdNamedComponent);
+
+ /**
+ * Returns whether this named component has the given name and target namespace.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is equivalent to
+ *<pre>
+ * (targetNamespace == null ?
+ * getTargetNamespace() == null :
+ * targetNamespace.equals(getTargetNamespace())) &&
+ * (name == null ?
+ * getName() == null :
+ * name.equals(getName()))
+ *</pre>
+ * </p>
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @param targetNamespace namespace the target namespace.
+ * @return whether this named component has the given name and target namespace.
+ * @see #hasSameNameAndTargetNamespace
+ * @see #hasURI
+ * @see #getName()
+ * @see #getTargetNamespace()
+ */
+ boolean hasNameAndTargetNamespace(String name, String targetNamespace);
+
+ /**
+ * Returns whether this named component has the given URI.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is equivalent to
+ *<pre>
+ * String theTargetNamespace = getTargetNamespace();
+ * if (theTargetNamespace == null)
+ * {
+ * theTargetNamespace = "";
+ * }
+ * String theName = getName();
+ * if (theName == null)
+ * {
+ * theName = "";
+ * }
+ * return
+ * qName.startsWith(theTargetNamespace) &&
+ * qName.endsWith(theName) &&
+ * qName.length() == theName.length() + theTargetNamespace.length() + 1;
+ *</pre>
+ * </p>
+ * <!-- end-user-doc -->
+ * @param uri the URI.
+ * @return whether this named component has the given URI.
+ * @see #hasNameAndTargetNamespace
+ * @see #hasSameNameAndTargetNamespace
+ * @see #getURI()
+ */
+ boolean hasURI(String uri);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNamespaceConstraintCategory.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNamespaceConstraintCategory.java
new file mode 100644
index 0000000..d6e0881
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNamespaceConstraintCategory.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Namespace Constraint Category</b></em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getNamespaceConstraintCategory()
+ * @see org.eclipse.xsd.XSDWildcard#getNamespaceConstraint()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDNamespaceConstraintCategory()
+ * @model
+ * @generated
+ */
+public enum XSDNamespaceConstraintCategory implements Enumerator
+{
+ /**
+ * The '<em><b>Any</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ANY
+ * @generated
+ * @ordered
+ */
+ ANY_LITERAL(0, "any", "any"),
+
+ /**
+ * The '<em><b>Not</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NOT
+ * @generated
+ * @ordered
+ */
+ NOT_LITERAL(1, "not", "not"),
+
+ /**
+ * The '<em><b>Set</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SET
+ * @generated
+ * @ordered
+ */
+ SET_LITERAL(2, "set", "set");
+
+ /**
+ * The '<em><b>Any</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that any namespace is matched.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ANY_LITERAL
+ * @model name="any"
+ * @generated
+ * @ordered
+ */
+ public static final int ANY = 0;
+
+ /**
+ * The '<em><b>Not</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that any namespace not in the (singleton) set is matched.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NOT_LITERAL
+ * @model name="not"
+ * @generated
+ * @ordered
+ */
+ public static final int NOT = 1;
+
+ /**
+ * The '<em><b>Set</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that any namespace in the set is matched.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SET_LITERAL
+ * @model name="set"
+ * @generated
+ * @ordered
+ */
+ public static final int SET = 2;
+
+ /**
+ * An array of all the '<em><b>Namespace Constraint Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDNamespaceConstraintCategory[] VALUES_ARRAY =
+ new XSDNamespaceConstraintCategory[]
+ {
+ ANY_LITERAL,
+ NOT_LITERAL,
+ SET_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Namespace Constraint Category</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDNamespaceConstraintCategory> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Namespace Constraint Category</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDNamespaceConstraintCategory get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDNamespaceConstraintCategory result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Namespace Constraint Category</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDNamespaceConstraintCategory getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDNamespaceConstraintCategory result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Namespace Constraint Category</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDNamespaceConstraintCategory get(int value)
+ {
+ switch (value)
+ {
+ case ANY: return ANY_LITERAL;
+ case NOT: return NOT_LITERAL;
+ case SET: return SET_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDNamespaceConstraintCategory(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNotationDeclaration.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNotationDeclaration.java
new file mode 100644
index 0000000..6681e59
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNotationDeclaration.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cNotation_Declarations"><em><b>Notation Declaration</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDNotationDeclaration#getSystemIdentifier <em>System Identifier</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNotationDeclaration#getPublicIdentifier <em>Public Identifier</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDNotationDeclaration#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDNotationDeclaration()
+ * @model
+ * @generated
+ */
+public interface XSDNotationDeclaration extends XSDNamedComponent, XSDSchemaContent
+{
+ /**
+ * Returns the value of the '<em><b>System Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#system_identifier">system identifier</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>System Identifier</em>' attribute.
+ * @see #setSystemIdentifier(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDNotationDeclaration_SystemIdentifier()
+ * @model
+ * @generated
+ */
+ String getSystemIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDNotationDeclaration#getSystemIdentifier <em>System Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>System Identifier</em>' attribute.
+ * @see #getSystemIdentifier()
+ * @generated
+ */
+ void setSystemIdentifier(String value);
+
+ /**
+ * Returns the value of the '<em><b>Public Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#public_identifier">public identifier</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Public Identifier</em>' attribute.
+ * @see #setPublicIdentifier(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDNotationDeclaration_PublicIdentifier()
+ * @model
+ * @generated
+ */
+ String getPublicIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDNotationDeclaration#getPublicIdentifier <em>Public Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Public Identifier</em>' attribute.
+ * @see #getPublicIdentifier()
+ * @generated
+ */
+ void setPublicIdentifier(String value);
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#n-annotation">annotation</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDNotationDeclaration_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDNotationDeclaration#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNumericFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNumericFacet.java
new file mode 100644
index 0000000..189ad1b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDNumericFacet.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-numeric"><em><b>Numeric Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDNumericFacet#isValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDNumericFacet()
+ * @model
+ * @generated
+ */
+public interface XSDNumericFacet extends XSDFundamentalFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#numeric-value">value</a>
+ * infoset property.
+ * It is computed and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(boolean)
+ * @see org.eclipse.xsd.XSDPackage#getXSDNumericFacet_Value()
+ * @model
+ * @generated
+ */
+ boolean isValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDNumericFacet#isValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #isValue()
+ * @generated
+ */
+ void setValue(boolean value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDOrdered.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDOrdered.java
new file mode 100644
index 0000000..38764a1
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDOrdered.java
@@ -0,0 +1,265 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Ordered</b></em>'.
+ * @see org.eclipse.xsd.XSDOrderedFacet#getValue()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDOrdered()
+ * @model
+ * @generated
+ */
+public enum XSDOrdered implements Enumerator
+{
+ /**
+ * The '<em><b>False</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FALSE
+ * @generated
+ * @ordered
+ */
+ FALSE_LITERAL(0, "false", "false"),
+ /**
+ * The '<em><b>Partial</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PARTIAL
+ * @generated
+ * @ordered
+ */
+ PARTIAL_LITERAL(1, "partial", "partial"),
+ /**
+ * The '<em><b>Total</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TOTAL
+ * @generated
+ * @ordered
+ */
+ TOTAL_LITERAL(2, "total", "total");
+ /**
+ * The '<em><b>False</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a simple type definition's value space is unordered.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FALSE_LITERAL
+ * @model name="false"
+ * @generated
+ * @ordered
+ */
+ public static final int FALSE = 0;
+
+ /**
+ * The '<em><b>Partial</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a simple type definition's value space is partially ordered.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PARTIAL_LITERAL
+ * @model name="partial"
+ * @generated
+ * @ordered
+ */
+ public static final int PARTIAL = 1;
+
+ /**
+ * The '<em><b>Total</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a simple type definition's value space is ordered.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TOTAL_LITERAL
+ * @model name="total"
+ * @generated
+ * @ordered
+ */
+ public static final int TOTAL = 2;
+
+ /**
+ * An array of all the '<em><b>Ordered</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDOrdered[] VALUES_ARRAY =
+ new XSDOrdered[]
+ {
+ FALSE_LITERAL,
+ PARTIAL_LITERAL,
+ TOTAL_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Ordered</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDOrdered> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Ordered</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDOrdered get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDOrdered result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Ordered</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDOrdered getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDOrdered result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Ordered</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDOrdered get(int value)
+ {
+ switch (value)
+ {
+ case FALSE: return FALSE_LITERAL;
+ case PARTIAL: return PARTIAL_LITERAL;
+ case TOTAL: return TOTAL_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDOrdered(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDOrderedFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDOrderedFacet.java
new file mode 100644
index 0000000..ef6e819
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDOrderedFacet.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-ordered"><em><b>Ordered Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDOrderedFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDOrderedFacet()
+ * @model
+ * @generated
+ */
+public interface XSDOrderedFacet extends XSDFundamentalFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDOrdered}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#ordered-value">value</a>
+ * infoset property.
+ * It is computed and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDOrdered
+ * @see #setValue(XSDOrdered)
+ * @see org.eclipse.xsd.XSDPackage#getXSDOrderedFacet_Value()
+ * @model
+ * @generated
+ */
+ XSDOrdered getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDOrderedFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDOrdered
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(XSDOrdered value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPackage.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPackage.java
new file mode 100644
index 0000000..25fbc7c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPackage.java
@@ -0,0 +1,14082 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each literal of each enum</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface XSDPackage extends EPackage
+{
+ /**
+ * The package name.
+ * @generated
+ */
+ String eNAME = "xsd";
+
+ /**
+ * The package namespace URI.
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/xsd/2002/XSD";
+
+ /**
+ * The package namespace name.
+ * @generated
+ */
+ String eNS_PREFIX = "xsd";
+
+ /**
+ * The package content type ID.
+ * <!-- begin-user-doc -->
+ * @since 2.4
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eCONTENT_TYPE = "org.eclipse.xsd";
+
+ /**
+ * The singleton instance of the package.
+ * @generated
+ */
+ XSDPackage eINSTANCE = org.eclipse.xsd.impl.XSDPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDAnnotationImpl <em>Annotation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAnnotationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAnnotation()
+ * @generated
+ */
+ int XSD_ANNOTATION = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl <em>Attribute Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeDeclarationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeDeclaration()
+ * @generated
+ */
+ int XSD_ATTRIBUTE_DECLARATION = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDAttributeGroupContentImpl <em>Attribute Group Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeGroupContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeGroupContent()
+ * @generated
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl <em>Attribute Group Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDAttributeUseImpl <em>Attribute Use</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeUseImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeUse()
+ * @generated
+ */
+ int XSD_ATTRIBUTE_USE = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDBoundedFacetImpl <em>Bounded Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDBoundedFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDBoundedFacet()
+ * @generated
+ */
+ int XSD_BOUNDED_FACET = 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDCardinalityFacetImpl <em>Cardinality Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDCardinalityFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDCardinalityFacet()
+ * @generated
+ */
+ int XSD_CARDINALITY_FACET = 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDComplexTypeContentImpl <em>Complex Type Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDComplexTypeContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComplexTypeContent()
+ * @generated
+ */
+ int XSD_COMPLEX_TYPE_CONTENT = 7;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl <em>Complex Type Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComplexTypeDefinition()
+ * @generated
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION = 8;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDComponentImpl <em>Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComponent()
+ * @generated
+ */
+ int XSD_COMPONENT = 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl <em>Concrete Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDConcreteComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDConcreteComponent()
+ * @generated
+ */
+ int XSD_CONCRETE_COMPONENT = 10;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONCRETE_COMPONENT__ELEMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONCRETE_COMPONENT__CONTAINER = 1;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONCRETE_COMPONENT__ROOT_CONTAINER = 2;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONCRETE_COMPONENT__SCHEMA = 3;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONCRETE_COMPONENT__DIAGNOSTICS = 4;
+
+ /**
+ * The number of structural features of the '<em>Concrete Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONCRETE_COMPONENT_FEATURE_COUNT = 5;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPONENT__ELEMENT = XSD_CONCRETE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPONENT__CONTAINER = XSD_CONCRETE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPONENT__ROOT_CONTAINER = XSD_CONCRETE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPONENT__SCHEMA = XSD_CONCRETE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPONENT__DIAGNOSTICS = XSD_CONCRETE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPONENT_FEATURE_COUNT = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Application Information</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__APPLICATION_INFORMATION = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>User Information</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__USER_INFORMATION = XSD_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION__ATTRIBUTES = XSD_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Annotation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ANNOTATION_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDConstrainingFacetImpl <em>Constraining Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDConstrainingFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDConstrainingFacet()
+ * @generated
+ */
+ int XSD_CONSTRAINING_FACET = 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDDiagnosticImpl <em>Diagnostic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDDiagnosticImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDiagnostic()
+ * @generated
+ */
+ int XSD_DIAGNOSTIC = 12;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl <em>Element Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDElementDeclarationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDElementDeclaration()
+ * @generated
+ */
+ int XSD_ELEMENT_DECLARATION = 13;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDEnumerationFacetImpl <em>Enumeration Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDEnumerationFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDEnumerationFacet()
+ * @generated
+ */
+ int XSD_ENUMERATION_FACET = 14;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDFacetImpl <em>Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFacet()
+ * @generated
+ */
+ int XSD_FACET = 15;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDFeatureImpl <em>Feature</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFeatureImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFeature()
+ * @generated
+ */
+ int XSD_FEATURE = 16;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDFixedFacetImpl <em>Fixed Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFixedFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFixedFacet()
+ * @generated
+ */
+ int XSD_FIXED_FACET = 17;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDFractionDigitsFacetImpl <em>Fraction Digits Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFractionDigitsFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFractionDigitsFacet()
+ * @generated
+ */
+ int XSD_FRACTION_DIGITS_FACET = 18;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDFundamentalFacetImpl <em>Fundamental Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFundamentalFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFundamentalFacet()
+ * @generated
+ */
+ int XSD_FUNDAMENTAL_FACET = 19;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl <em>Identity Constraint Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION = 20;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDImportImpl <em>Import</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDImportImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDImport()
+ * @generated
+ */
+ int XSD_IMPORT = 21;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDIncludeImpl <em>Include</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDIncludeImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDInclude()
+ * @generated
+ */
+ int XSD_INCLUDE = 22;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDLengthFacetImpl <em>Length Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDLengthFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDLengthFacet()
+ * @generated
+ */
+ int XSD_LENGTH_FACET = 23;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMaxExclusiveFacetImpl <em>Max Exclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxExclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxExclusiveFacet()
+ * @generated
+ */
+ int XSD_MAX_EXCLUSIVE_FACET = 24;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMaxFacetImpl <em>Max Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxFacet()
+ * @generated
+ */
+ int XSD_MAX_FACET = 25;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMaxInclusiveFacetImpl <em>Max Inclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxInclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxInclusiveFacet()
+ * @generated
+ */
+ int XSD_MAX_INCLUSIVE_FACET = 26;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMaxLengthFacetImpl <em>Max Length Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxLengthFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxLengthFacet()
+ * @generated
+ */
+ int XSD_MAX_LENGTH_FACET = 27;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMinExclusiveFacetImpl <em>Min Exclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinExclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinExclusiveFacet()
+ * @generated
+ */
+ int XSD_MIN_EXCLUSIVE_FACET = 28;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMinFacetImpl <em>Min Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinFacet()
+ * @generated
+ */
+ int XSD_MIN_FACET = 29;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMinInclusiveFacetImpl <em>Min Inclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinInclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinInclusiveFacet()
+ * @generated
+ */
+ int XSD_MIN_INCLUSIVE_FACET = 30;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDMinLengthFacetImpl <em>Min Length Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinLengthFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinLengthFacet()
+ * @generated
+ */
+ int XSD_MIN_LENGTH_FACET = 31;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDModelGroupImpl <em>Model Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDModelGroupImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDModelGroup()
+ * @generated
+ */
+ int XSD_MODEL_GROUP = 32;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl <em>Model Group Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDModelGroupDefinition()
+ * @generated
+ */
+ int XSD_MODEL_GROUP_DEFINITION = 33;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDNamedComponentImpl <em>Named Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDNamedComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNamedComponent()
+ * @generated
+ */
+ int XSD_NAMED_COMPONENT = 34;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__NAME = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__TARGET_NAMESPACE = XSD_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__ALIAS_NAME = XSD_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__URI = XSD_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__ALIAS_URI = XSD_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT__QNAME = XSD_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Named Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NAMED_COMPONENT_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__ELEMENT = XSD_NAMED_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__CONTAINER = XSD_NAMED_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__ROOT_CONTAINER = XSD_NAMED_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__SCHEMA = XSD_NAMED_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__DIAGNOSTICS = XSD_NAMED_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__NAME = XSD_NAMED_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__TARGET_NAMESPACE = XSD_NAMED_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__ALIAS_NAME = XSD_NAMED_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__URI = XSD_NAMED_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__ALIAS_URI = XSD_NAMED_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__QNAME = XSD_NAMED_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__VALUE = XSD_NAMED_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Constraint</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__CONSTRAINT = XSD_NAMED_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Form</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__FORM = XSD_NAMED_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__LEXICAL_VALUE = XSD_NAMED_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Global</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__GLOBAL = XSD_NAMED_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Feature Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__FEATURE_REFERENCE = XSD_NAMED_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Scope</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__SCOPE = XSD_NAMED_COMPONENT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Resolved Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__RESOLVED_FEATURE = XSD_NAMED_COMPONENT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE__TYPE = XSD_NAMED_COMPONENT_FEATURE_COUNT + 8;
+
+ /**
+ * The number of structural features of the '<em>Feature</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FEATURE_FEATURE_COUNT = XSD_NAMED_COMPONENT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ELEMENT = XSD_FEATURE__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__CONTAINER = XSD_FEATURE__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ROOT_CONTAINER = XSD_FEATURE__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__SCHEMA = XSD_FEATURE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__DIAGNOSTICS = XSD_FEATURE__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__NAME = XSD_FEATURE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__TARGET_NAMESPACE = XSD_FEATURE__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ALIAS_NAME = XSD_FEATURE__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__URI = XSD_FEATURE__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ALIAS_URI = XSD_FEATURE__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__QNAME = XSD_FEATURE__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__VALUE = XSD_FEATURE__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Constraint</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__CONSTRAINT = XSD_FEATURE__CONSTRAINT;
+
+ /**
+ * The feature id for the '<em><b>Form</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__FORM = XSD_FEATURE__FORM;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__LEXICAL_VALUE = XSD_FEATURE__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Global</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__GLOBAL = XSD_FEATURE__GLOBAL;
+
+ /**
+ * The feature id for the '<em><b>Feature Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__FEATURE_REFERENCE = XSD_FEATURE__FEATURE_REFERENCE;
+
+ /**
+ * The feature id for the '<em><b>Scope</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__SCOPE = XSD_FEATURE__SCOPE;
+
+ /**
+ * The feature id for the '<em><b>Resolved Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__RESOLVED_FEATURE = XSD_FEATURE__RESOLVED_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__TYPE = XSD_FEATURE__TYPE;
+
+ /**
+ * The feature id for the '<em><b>Attribute Declaration Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ATTRIBUTE_DECLARATION_REFERENCE = XSD_FEATURE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ANNOTATION = XSD_FEATURE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Anonymous Type Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION = XSD_FEATURE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION = XSD_FEATURE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Resolved Attribute Declaration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION = XSD_FEATURE_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Attribute Declaration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_DECLARATION_FEATURE_COUNT = XSD_FEATURE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT__ELEMENT = XSD_CONCRETE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT__CONTAINER = XSD_CONCRETE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT__ROOT_CONTAINER = XSD_CONCRETE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT__SCHEMA = XSD_CONCRETE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT__DIAGNOSTICS = XSD_CONCRETE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Attribute Group Content</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_CONTENT_FEATURE_COUNT = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDNotationDeclarationImpl <em>Notation Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDNotationDeclarationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNotationDeclaration()
+ * @generated
+ */
+ int XSD_NOTATION_DECLARATION = 35;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDNumericFacetImpl <em>Numeric Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDNumericFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNumericFacet()
+ * @generated
+ */
+ int XSD_NUMERIC_FACET = 36;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDOrderedFacetImpl <em>Ordered Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDOrderedFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDOrderedFacet()
+ * @generated
+ */
+ int XSD_ORDERED_FACET = 37;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDParticleImpl <em>Particle</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDParticleImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDParticle()
+ * @generated
+ */
+ int XSD_PARTICLE = 38;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDParticleContentImpl <em>Particle Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDParticleContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDParticleContent()
+ * @generated
+ */
+ int XSD_PARTICLE_CONTENT = 39;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDPatternFacetImpl <em>Pattern Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDPatternFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDPatternFacet()
+ * @generated
+ */
+ int XSD_PATTERN_FACET = 40;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDRedefinableComponentImpl <em>Redefinable Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRedefinableComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRedefinableComponent()
+ * @generated
+ */
+ int XSD_REDEFINABLE_COMPONENT = 41;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__ELEMENT = XSD_NAMED_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__CONTAINER = XSD_NAMED_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__ROOT_CONTAINER = XSD_NAMED_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__SCHEMA = XSD_NAMED_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__DIAGNOSTICS = XSD_NAMED_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__NAME = XSD_NAMED_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__TARGET_NAMESPACE = XSD_NAMED_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__ALIAS_NAME = XSD_NAMED_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__URI = XSD_NAMED_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__ALIAS_URI = XSD_NAMED_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__QNAME = XSD_NAMED_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT__CIRCULAR = XSD_NAMED_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Redefinable Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT = XSD_NAMED_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ELEMENT = XSD_REDEFINABLE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__CONTAINER = XSD_REDEFINABLE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ROOT_CONTAINER = XSD_REDEFINABLE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__SCHEMA = XSD_REDEFINABLE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__DIAGNOSTICS = XSD_REDEFINABLE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__NAME = XSD_REDEFINABLE_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__TARGET_NAMESPACE = XSD_REDEFINABLE_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ALIAS_NAME = XSD_REDEFINABLE_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__URI = XSD_REDEFINABLE_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ALIAS_URI = XSD_REDEFINABLE_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__QNAME = XSD_REDEFINABLE_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__CIRCULAR = XSD_REDEFINABLE_COMPONENT__CIRCULAR;
+
+ /**
+ * The feature id for the '<em><b>Attribute Group Definition Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_GROUP_DEFINITION_REFERENCE = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Attribute Uses</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Attribute Wildcard Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Attribute Wildcard</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Resolved Attribute Group Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Synthetic Wildcard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 7;
+
+ /**
+ * The number of structural features of the '<em>Attribute Group Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_GROUP_DEFINITION_FEATURE_COUNT = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__REQUIRED = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__VALUE = XSD_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Constraint</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__CONSTRAINT = XSD_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Use</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__USE = XSD_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__LEXICAL_VALUE = XSD_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Attribute Declaration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION = XSD_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE__CONTENT = XSD_COMPONENT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Attribute Use</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ATTRIBUTE_USE_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__LEXICAL_VALUE = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__FACET_NAME = XSD_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__EFFECTIVE_VALUE = XSD_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__ANNOTATION = XSD_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET__SIMPLE_TYPE_DEFINITION = XSD_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FACET_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__ELEMENT = XSD_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__CONTAINER = XSD_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__ROOT_CONTAINER = XSD_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__SCHEMA = XSD_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__DIAGNOSTICS = XSD_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__LEXICAL_VALUE = XSD_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__FACET_NAME = XSD_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__EFFECTIVE_VALUE = XSD_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__ANNOTATION = XSD_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET__SIMPLE_TYPE_DEFINITION = XSD_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The number of structural features of the '<em>Fundamental Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FUNDAMENTAL_FACET_FEATURE_COUNT = XSD_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__ELEMENT = XSD_FUNDAMENTAL_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__CONTAINER = XSD_FUNDAMENTAL_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__ROOT_CONTAINER = XSD_FUNDAMENTAL_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__SCHEMA = XSD_FUNDAMENTAL_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__DIAGNOSTICS = XSD_FUNDAMENTAL_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__LEXICAL_VALUE = XSD_FUNDAMENTAL_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__FACET_NAME = XSD_FUNDAMENTAL_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__EFFECTIVE_VALUE = XSD_FUNDAMENTAL_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__ANNOTATION = XSD_FUNDAMENTAL_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__SIMPLE_TYPE_DEFINITION = XSD_FUNDAMENTAL_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET__VALUE = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Bounded Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_BOUNDED_FACET_FEATURE_COUNT = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__ELEMENT = XSD_FUNDAMENTAL_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__CONTAINER = XSD_FUNDAMENTAL_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__ROOT_CONTAINER = XSD_FUNDAMENTAL_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__SCHEMA = XSD_FUNDAMENTAL_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__DIAGNOSTICS = XSD_FUNDAMENTAL_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__LEXICAL_VALUE = XSD_FUNDAMENTAL_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__FACET_NAME = XSD_FUNDAMENTAL_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__EFFECTIVE_VALUE = XSD_FUNDAMENTAL_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__ANNOTATION = XSD_FUNDAMENTAL_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__SIMPLE_TYPE_DEFINITION = XSD_FUNDAMENTAL_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET__VALUE = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Cardinality Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CARDINALITY_FACET_FEATURE_COUNT = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_CONTENT__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_CONTENT__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_CONTENT__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_CONTENT__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_CONTENT__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Complex Type Content</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_CONTENT_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDRedefineContentImpl <em>Redefine Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRedefineContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRedefineContent()
+ * @generated
+ */
+ int XSD_REDEFINE_CONTENT = 42;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDRedefineImpl <em>Redefine</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRedefineImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRedefine()
+ * @generated
+ */
+ int XSD_REDEFINE = 43;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDRepeatableFacetImpl <em>Repeatable Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRepeatableFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRepeatableFacet()
+ * @generated
+ */
+ int XSD_REPEATABLE_FACET = 44;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDSchemaImpl <em>Schema</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchema()
+ * @generated
+ */
+ int XSD_SCHEMA = 45;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDSchemaCompositorImpl <em>Schema Compositor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaCompositorImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchemaCompositor()
+ * @generated
+ */
+ int XSD_SCHEMA_COMPOSITOR = 46;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDSchemaContentImpl <em>Schema Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchemaContent()
+ * @generated
+ */
+ int XSD_SCHEMA_CONTENT = 47;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDSchemaDirectiveImpl <em>Schema Directive</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaDirectiveImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchemaDirective()
+ * @generated
+ */
+ int XSD_SCHEMA_DIRECTIVE = 48;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDScopeImpl <em>Scope</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDScopeImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDScope()
+ * @generated
+ */
+ int XSD_SCOPE = 49;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl <em>Simple Type Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION = 50;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDTermImpl <em>Term</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDTermImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDTerm()
+ * @generated
+ */
+ int XSD_TERM = 51;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDTotalDigitsFacetImpl <em>Total Digits Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDTotalDigitsFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDTotalDigitsFacet()
+ * @generated
+ */
+ int XSD_TOTAL_DIGITS_FACET = 52;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl <em>Type Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDTypeDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDTypeDefinition()
+ * @generated
+ */
+ int XSD_TYPE_DEFINITION = 53;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ELEMENT = XSD_REDEFINABLE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__CONTAINER = XSD_REDEFINABLE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ROOT_CONTAINER = XSD_REDEFINABLE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__SCHEMA = XSD_REDEFINABLE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__DIAGNOSTICS = XSD_REDEFINABLE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__NAME = XSD_REDEFINABLE_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__TARGET_NAMESPACE = XSD_REDEFINABLE_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ALIAS_NAME = XSD_REDEFINABLE_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__URI = XSD_REDEFINABLE_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ALIAS_URI = XSD_REDEFINABLE_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__QNAME = XSD_REDEFINABLE_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__CIRCULAR = XSD_REDEFINABLE_COMPONENT__CIRCULAR;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ANNOTATION = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Derivation Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ANNOTATIONS = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Root Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__ROOT_TYPE = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__BASE_TYPE = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Simple Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__SIMPLE_TYPE = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Complex Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION__COMPLEX_TYPE = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Type Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TYPE_DEFINITION_FEATURE_COUNT = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ELEMENT = XSD_TYPE_DEFINITION__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__CONTAINER = XSD_TYPE_DEFINITION__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ROOT_CONTAINER = XSD_TYPE_DEFINITION__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__SCHEMA = XSD_TYPE_DEFINITION__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__DIAGNOSTICS = XSD_TYPE_DEFINITION__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__NAME = XSD_TYPE_DEFINITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__TARGET_NAMESPACE = XSD_TYPE_DEFINITION__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ALIAS_NAME = XSD_TYPE_DEFINITION__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__URI = XSD_TYPE_DEFINITION__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ALIAS_URI = XSD_TYPE_DEFINITION__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__QNAME = XSD_TYPE_DEFINITION__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__CIRCULAR = XSD_TYPE_DEFINITION__CIRCULAR;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ANNOTATION = XSD_TYPE_DEFINITION__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Derivation Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_ANNOTATION = XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ANNOTATIONS = XSD_TYPE_DEFINITION__ANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Root Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ROOT_TYPE = XSD_TYPE_DEFINITION__ROOT_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE = XSD_TYPE_DEFINITION__BASE_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Simple Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__SIMPLE_TYPE = XSD_TYPE_DEFINITION__SIMPLE_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Complex Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__COMPLEX_TYPE = XSD_TYPE_DEFINITION__COMPLEX_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Derivation Method</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD = XSD_TYPE_DEFINITION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Final</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__FINAL = XSD_TYPE_DEFINITION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT = XSD_TYPE_DEFINITION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Content Type Category</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY = XSD_TYPE_DEFINITION_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Prohibited Substitutions</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Lexical Final</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL = XSD_TYPE_DEFINITION_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Block</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__BLOCK = XSD_TYPE_DEFINITION_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__MIXED = XSD_TYPE_DEFINITION_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Content Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Base Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__CONTENT = XSD_TYPE_DEFINITION_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Content Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE = XSD_TYPE_DEFINITION_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Attribute Uses</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES = XSD_TYPE_DEFINITION_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Attribute Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Attribute Wildcard</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD = XSD_TYPE_DEFINITION_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Attribute Wildcard Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT = XSD_TYPE_DEFINITION_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Root Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__ROOT_TYPE_DEFINITION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Synthetic Particle</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE = XSD_TYPE_DEFINITION_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Synthetic Wildcard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD = XSD_TYPE_DEFINITION_FEATURE_COUNT + 18;
+
+ /**
+ * The number of structural features of the '<em>Complex Type Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_COMPLEX_TYPE_DEFINITION_FEATURE_COUNT = XSD_TYPE_DEFINITION_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__ELEMENT = XSD_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__CONTAINER = XSD_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__ROOT_CONTAINER = XSD_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__SCHEMA = XSD_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__DIAGNOSTICS = XSD_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__LEXICAL_VALUE = XSD_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__FACET_NAME = XSD_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__EFFECTIVE_VALUE = XSD_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__ANNOTATION = XSD_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET__SIMPLE_TYPE_DEFINITION = XSD_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The number of structural features of the '<em>Constraining Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_CONSTRAINING_FACET_FEATURE_COUNT = XSD_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__ELEMENT = XSD_CONCRETE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__CONTAINER = XSD_CONCRETE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__ROOT_CONTAINER = XSD_CONCRETE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__SCHEMA = XSD_CONCRETE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__DIAGNOSTICS = XSD_CONCRETE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Severity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__SEVERITY = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Message</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__MESSAGE = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Location URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__LOCATION_URI = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__LINE = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__COLUMN = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Node</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__NODE = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Annotation URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__ANNOTATION_URI = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__KEY = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Substitutions</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__SUBSTITUTIONS = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Components</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__COMPONENTS = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Primary Component</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC__PRIMARY_COMPONENT = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 10;
+
+ /**
+ * The number of structural features of the '<em>Diagnostic</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_DIAGNOSTIC_FEATURE_COUNT = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ELEMENT = XSD_FEATURE__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__CONTAINER = XSD_FEATURE__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ROOT_CONTAINER = XSD_FEATURE__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__SCHEMA = XSD_FEATURE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__DIAGNOSTICS = XSD_FEATURE__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__NAME = XSD_FEATURE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__TARGET_NAMESPACE = XSD_FEATURE__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ALIAS_NAME = XSD_FEATURE__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__URI = XSD_FEATURE__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ALIAS_URI = XSD_FEATURE__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__QNAME = XSD_FEATURE__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__VALUE = XSD_FEATURE__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Constraint</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__CONSTRAINT = XSD_FEATURE__CONSTRAINT;
+
+ /**
+ * The feature id for the '<em><b>Form</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__FORM = XSD_FEATURE__FORM;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__LEXICAL_VALUE = XSD_FEATURE__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Global</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__GLOBAL = XSD_FEATURE__GLOBAL;
+
+ /**
+ * The feature id for the '<em><b>Feature Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__FEATURE_REFERENCE = XSD_FEATURE__FEATURE_REFERENCE;
+
+ /**
+ * The feature id for the '<em><b>Scope</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__SCOPE = XSD_FEATURE__SCOPE;
+
+ /**
+ * The feature id for the '<em><b>Resolved Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__RESOLVED_FEATURE = XSD_FEATURE__RESOLVED_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__TYPE = XSD_FEATURE__TYPE;
+
+ /**
+ * The feature id for the '<em><b>Nillable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__NILLABLE = XSD_FEATURE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Disallowed Substitutions</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS = XSD_FEATURE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Substitution Group Exclusions</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS = XSD_FEATURE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ABSTRACT = XSD_FEATURE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Lexical Final</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__LEXICAL_FINAL = XSD_FEATURE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Block</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__BLOCK = XSD_FEATURE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Element Declaration Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ELEMENT_DECLARATION_REFERENCE = XSD_FEATURE_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__CIRCULAR = XSD_FEATURE_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ANNOTATION = XSD_FEATURE_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Anonymous Type Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION = XSD_FEATURE_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__TYPE_DEFINITION = XSD_FEATURE_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Identity Constraint Definitions</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS = XSD_FEATURE_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Resolved Element Declaration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION = XSD_FEATURE_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Substitution Group Affiliation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION = XSD_FEATURE_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Substitution Group</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP = XSD_FEATURE_FEATURE_COUNT + 14;
+
+ /**
+ * The number of structural features of the '<em>Element Declaration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ELEMENT_DECLARATION_FEATURE_COUNT = XSD_FEATURE_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__ELEMENT = XSD_CONSTRAINING_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__CONTAINER = XSD_CONSTRAINING_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__ROOT_CONTAINER = XSD_CONSTRAINING_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__SCHEMA = XSD_CONSTRAINING_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__DIAGNOSTICS = XSD_CONSTRAINING_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__LEXICAL_VALUE = XSD_CONSTRAINING_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__FACET_NAME = XSD_CONSTRAINING_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__EFFECTIVE_VALUE = XSD_CONSTRAINING_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__ANNOTATION = XSD_CONSTRAINING_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__SIMPLE_TYPE_DEFINITION = XSD_CONSTRAINING_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET__ANNOTATIONS = XSD_CONSTRAINING_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Repeatable Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REPEATABLE_FACET_FEATURE_COUNT = XSD_CONSTRAINING_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__ELEMENT = XSD_REPEATABLE_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__CONTAINER = XSD_REPEATABLE_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__ROOT_CONTAINER = XSD_REPEATABLE_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__SCHEMA = XSD_REPEATABLE_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__DIAGNOSTICS = XSD_REPEATABLE_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__LEXICAL_VALUE = XSD_REPEATABLE_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__FACET_NAME = XSD_REPEATABLE_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__EFFECTIVE_VALUE = XSD_REPEATABLE_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__ANNOTATION = XSD_REPEATABLE_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__SIMPLE_TYPE_DEFINITION = XSD_REPEATABLE_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__ANNOTATIONS = XSD_REPEATABLE_FACET__ANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET__VALUE = XSD_REPEATABLE_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Enumeration Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ENUMERATION_FACET_FEATURE_COUNT = XSD_REPEATABLE_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__ELEMENT = XSD_CONSTRAINING_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__CONTAINER = XSD_CONSTRAINING_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__ROOT_CONTAINER = XSD_CONSTRAINING_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__SCHEMA = XSD_CONSTRAINING_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__DIAGNOSTICS = XSD_CONSTRAINING_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__LEXICAL_VALUE = XSD_CONSTRAINING_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__FACET_NAME = XSD_CONSTRAINING_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__EFFECTIVE_VALUE = XSD_CONSTRAINING_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__ANNOTATION = XSD_CONSTRAINING_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION = XSD_CONSTRAINING_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET__FIXED = XSD_CONSTRAINING_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Fixed Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FIXED_FACET_FEATURE_COUNT = XSD_CONSTRAINING_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Fraction Digits Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_FRACTION_DIGITS_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__ELEMENT = XSD_NAMED_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__CONTAINER = XSD_NAMED_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__ROOT_CONTAINER = XSD_NAMED_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__SCHEMA = XSD_NAMED_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__DIAGNOSTICS = XSD_NAMED_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__NAME = XSD_NAMED_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__TARGET_NAMESPACE = XSD_NAMED_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__ALIAS_NAME = XSD_NAMED_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__URI = XSD_NAMED_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__ALIAS_URI = XSD_NAMED_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__QNAME = XSD_NAMED_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Identity Constraint Category</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY = XSD_NAMED_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION = XSD_NAMED_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Referenced Key</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY = XSD_NAMED_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Selector</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR = XSD_NAMED_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Fields</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS = XSD_NAMED_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Identity Constraint Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IDENTITY_CONSTRAINT_DEFINITION_FEATURE_COUNT = XSD_NAMED_COMPONENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_CONTENT__ELEMENT = XSD_CONCRETE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_CONTENT__CONTAINER = XSD_CONCRETE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_CONTENT__ROOT_CONTAINER = XSD_CONCRETE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_CONTENT__SCHEMA = XSD_CONCRETE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_CONTENT__DIAGNOSTICS = XSD_CONCRETE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Schema Content</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_CONTENT_FEATURE_COUNT = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__ELEMENT = XSD_SCHEMA_CONTENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__CONTAINER = XSD_SCHEMA_CONTENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__ROOT_CONTAINER = XSD_SCHEMA_CONTENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__SCHEMA = XSD_SCHEMA_CONTENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__DIAGNOSTICS = XSD_SCHEMA_CONTENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION = XSD_SCHEMA_CONTENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Resolved Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA = XSD_SCHEMA_CONTENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Schema Directive</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_DIRECTIVE_FEATURE_COUNT = XSD_SCHEMA_CONTENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__ELEMENT = XSD_SCHEMA_DIRECTIVE__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__CONTAINER = XSD_SCHEMA_DIRECTIVE__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__ROOT_CONTAINER = XSD_SCHEMA_DIRECTIVE__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__SCHEMA = XSD_SCHEMA_DIRECTIVE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__DIAGNOSTICS = XSD_SCHEMA_DIRECTIVE__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__SCHEMA_LOCATION = XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION;
+
+ /**
+ * The feature id for the '<em><b>Resolved Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__RESOLVED_SCHEMA = XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__NAMESPACE = XSD_SCHEMA_DIRECTIVE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT__ANNOTATION = XSD_SCHEMA_DIRECTIVE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Import</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_IMPORT_FEATURE_COUNT = XSD_SCHEMA_DIRECTIVE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__ELEMENT = XSD_SCHEMA_DIRECTIVE__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__CONTAINER = XSD_SCHEMA_DIRECTIVE__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__ROOT_CONTAINER = XSD_SCHEMA_DIRECTIVE__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__SCHEMA = XSD_SCHEMA_DIRECTIVE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__DIAGNOSTICS = XSD_SCHEMA_DIRECTIVE__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__SCHEMA_LOCATION = XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION;
+
+ /**
+ * The feature id for the '<em><b>Resolved Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__RESOLVED_SCHEMA = XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Incorporated Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA = XSD_SCHEMA_DIRECTIVE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Schema Compositor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_COMPOSITOR_FEATURE_COUNT = XSD_SCHEMA_DIRECTIVE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__ELEMENT = XSD_SCHEMA_COMPOSITOR__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__CONTAINER = XSD_SCHEMA_COMPOSITOR__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__ROOT_CONTAINER = XSD_SCHEMA_COMPOSITOR__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__SCHEMA = XSD_SCHEMA_COMPOSITOR__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__DIAGNOSTICS = XSD_SCHEMA_COMPOSITOR__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__SCHEMA_LOCATION = XSD_SCHEMA_COMPOSITOR__SCHEMA_LOCATION;
+
+ /**
+ * The feature id for the '<em><b>Resolved Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__RESOLVED_SCHEMA = XSD_SCHEMA_COMPOSITOR__RESOLVED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Incorporated Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__INCORPORATED_SCHEMA = XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE__ANNOTATION = XSD_SCHEMA_COMPOSITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Include</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_INCLUDE_FEATURE_COUNT = XSD_SCHEMA_COMPOSITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Length Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_LENGTH_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__INCLUSIVE = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET__EXCLUSIVE = XSD_FIXED_FACET_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Max Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__ELEMENT = XSD_MAX_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__CONTAINER = XSD_MAX_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__ROOT_CONTAINER = XSD_MAX_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__SCHEMA = XSD_MAX_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__DIAGNOSTICS = XSD_MAX_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__LEXICAL_VALUE = XSD_MAX_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__FACET_NAME = XSD_MAX_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__EFFECTIVE_VALUE = XSD_MAX_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__ANNOTATION = XSD_MAX_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__SIMPLE_TYPE_DEFINITION = XSD_MAX_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__FIXED = XSD_MAX_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__VALUE = XSD_MAX_FACET__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__INCLUSIVE = XSD_MAX_FACET__INCLUSIVE;
+
+ /**
+ * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET__EXCLUSIVE = XSD_MAX_FACET__EXCLUSIVE;
+
+ /**
+ * The number of structural features of the '<em>Max Exclusive Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_EXCLUSIVE_FACET_FEATURE_COUNT = XSD_MAX_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__ELEMENT = XSD_MAX_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__CONTAINER = XSD_MAX_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__ROOT_CONTAINER = XSD_MAX_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__SCHEMA = XSD_MAX_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__DIAGNOSTICS = XSD_MAX_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__LEXICAL_VALUE = XSD_MAX_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__FACET_NAME = XSD_MAX_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__EFFECTIVE_VALUE = XSD_MAX_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__ANNOTATION = XSD_MAX_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__SIMPLE_TYPE_DEFINITION = XSD_MAX_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__FIXED = XSD_MAX_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__VALUE = XSD_MAX_FACET__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__INCLUSIVE = XSD_MAX_FACET__INCLUSIVE;
+
+ /**
+ * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET__EXCLUSIVE = XSD_MAX_FACET__EXCLUSIVE;
+
+ /**
+ * The number of structural features of the '<em>Max Inclusive Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_INCLUSIVE_FACET_FEATURE_COUNT = XSD_MAX_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Max Length Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MAX_LENGTH_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__INCLUSIVE = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET__EXCLUSIVE = XSD_FIXED_FACET_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Min Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__ELEMENT = XSD_MIN_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__CONTAINER = XSD_MIN_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__ROOT_CONTAINER = XSD_MIN_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__SCHEMA = XSD_MIN_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__DIAGNOSTICS = XSD_MIN_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__LEXICAL_VALUE = XSD_MIN_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__FACET_NAME = XSD_MIN_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__EFFECTIVE_VALUE = XSD_MIN_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__ANNOTATION = XSD_MIN_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__SIMPLE_TYPE_DEFINITION = XSD_MIN_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__FIXED = XSD_MIN_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__VALUE = XSD_MIN_FACET__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__INCLUSIVE = XSD_MIN_FACET__INCLUSIVE;
+
+ /**
+ * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET__EXCLUSIVE = XSD_MIN_FACET__EXCLUSIVE;
+
+ /**
+ * The number of structural features of the '<em>Min Exclusive Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_EXCLUSIVE_FACET_FEATURE_COUNT = XSD_MIN_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__ELEMENT = XSD_MIN_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__CONTAINER = XSD_MIN_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__ROOT_CONTAINER = XSD_MIN_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__SCHEMA = XSD_MIN_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__DIAGNOSTICS = XSD_MIN_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__LEXICAL_VALUE = XSD_MIN_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__FACET_NAME = XSD_MIN_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__EFFECTIVE_VALUE = XSD_MIN_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__ANNOTATION = XSD_MIN_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__SIMPLE_TYPE_DEFINITION = XSD_MIN_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__FIXED = XSD_MIN_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__VALUE = XSD_MIN_FACET__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Inclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__INCLUSIVE = XSD_MIN_FACET__INCLUSIVE;
+
+ /**
+ * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET__EXCLUSIVE = XSD_MIN_FACET__EXCLUSIVE;
+
+ /**
+ * The number of structural features of the '<em>Min Inclusive Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_INCLUSIVE_FACET_FEATURE_COUNT = XSD_MIN_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Min Length Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MIN_LENGTH_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TERM__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TERM__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TERM__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TERM__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TERM__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Term</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TERM_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__ELEMENT = XSD_TERM__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__CONTAINER = XSD_TERM__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__ROOT_CONTAINER = XSD_TERM__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__SCHEMA = XSD_TERM__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__DIAGNOSTICS = XSD_TERM__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Compositor</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__COMPOSITOR = XSD_TERM_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__ANNOTATION = XSD_TERM_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__CONTENTS = XSD_TERM_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Particles</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP__PARTICLES = XSD_TERM_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Model Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_FEATURE_COUNT = XSD_TERM_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__ELEMENT = XSD_REDEFINABLE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__CONTAINER = XSD_REDEFINABLE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__ROOT_CONTAINER = XSD_REDEFINABLE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__SCHEMA = XSD_REDEFINABLE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__DIAGNOSTICS = XSD_REDEFINABLE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__NAME = XSD_REDEFINABLE_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__TARGET_NAMESPACE = XSD_REDEFINABLE_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__ALIAS_NAME = XSD_REDEFINABLE_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__URI = XSD_REDEFINABLE_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__ALIAS_URI = XSD_REDEFINABLE_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__QNAME = XSD_REDEFINABLE_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__CIRCULAR = XSD_REDEFINABLE_COMPONENT__CIRCULAR;
+
+ /**
+ * The feature id for the '<em><b>Model Group Definition Reference</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP_DEFINITION_REFERENCE = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__ANNOTATION = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Model Group</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Resolved Model Group Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Model Group Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_MODEL_GROUP_DEFINITION_FEATURE_COUNT = XSD_REDEFINABLE_COMPONENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__ELEMENT = XSD_NAMED_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__CONTAINER = XSD_NAMED_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__ROOT_CONTAINER = XSD_NAMED_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__SCHEMA = XSD_NAMED_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__DIAGNOSTICS = XSD_NAMED_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__NAME = XSD_NAMED_COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__TARGET_NAMESPACE = XSD_NAMED_COMPONENT__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__ALIAS_NAME = XSD_NAMED_COMPONENT__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__URI = XSD_NAMED_COMPONENT__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__ALIAS_URI = XSD_NAMED_COMPONENT__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__QNAME = XSD_NAMED_COMPONENT__QNAME;
+
+ /**
+ * The feature id for the '<em><b>System Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER = XSD_NAMED_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Public Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER = XSD_NAMED_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION__ANNOTATION = XSD_NAMED_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Notation Declaration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NOTATION_DECLARATION_FEATURE_COUNT = XSD_NAMED_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__ELEMENT = XSD_FUNDAMENTAL_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__CONTAINER = XSD_FUNDAMENTAL_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__ROOT_CONTAINER = XSD_FUNDAMENTAL_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__SCHEMA = XSD_FUNDAMENTAL_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__DIAGNOSTICS = XSD_FUNDAMENTAL_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__LEXICAL_VALUE = XSD_FUNDAMENTAL_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__FACET_NAME = XSD_FUNDAMENTAL_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__EFFECTIVE_VALUE = XSD_FUNDAMENTAL_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__ANNOTATION = XSD_FUNDAMENTAL_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__SIMPLE_TYPE_DEFINITION = XSD_FUNDAMENTAL_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET__VALUE = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Numeric Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_NUMERIC_FACET_FEATURE_COUNT = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__ELEMENT = XSD_FUNDAMENTAL_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__CONTAINER = XSD_FUNDAMENTAL_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__ROOT_CONTAINER = XSD_FUNDAMENTAL_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__SCHEMA = XSD_FUNDAMENTAL_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__DIAGNOSTICS = XSD_FUNDAMENTAL_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__LEXICAL_VALUE = XSD_FUNDAMENTAL_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__FACET_NAME = XSD_FUNDAMENTAL_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__EFFECTIVE_VALUE = XSD_FUNDAMENTAL_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__ANNOTATION = XSD_FUNDAMENTAL_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__SIMPLE_TYPE_DEFINITION = XSD_FUNDAMENTAL_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET__VALUE = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Ordered Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_ORDERED_FACET_FEATURE_COUNT = XSD_FUNDAMENTAL_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__ELEMENT = XSD_COMPLEX_TYPE_CONTENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__CONTAINER = XSD_COMPLEX_TYPE_CONTENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__ROOT_CONTAINER = XSD_COMPLEX_TYPE_CONTENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__SCHEMA = XSD_COMPLEX_TYPE_CONTENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__DIAGNOSTICS = XSD_COMPLEX_TYPE_CONTENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Min Occurs</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__MIN_OCCURS = XSD_COMPLEX_TYPE_CONTENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Max Occurs</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__MAX_OCCURS = XSD_COMPLEX_TYPE_CONTENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__CONTENT = XSD_COMPLEX_TYPE_CONTENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Term</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE__TERM = XSD_COMPLEX_TYPE_CONTENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Particle</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_FEATURE_COUNT = XSD_COMPLEX_TYPE_CONTENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_CONTENT__ELEMENT = XSD_CONCRETE_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_CONTENT__CONTAINER = XSD_CONCRETE_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_CONTENT__ROOT_CONTAINER = XSD_CONCRETE_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_CONTENT__SCHEMA = XSD_CONCRETE_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_CONTENT__DIAGNOSTICS = XSD_CONCRETE_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Particle Content</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PARTICLE_CONTENT_FEATURE_COUNT = XSD_CONCRETE_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__ELEMENT = XSD_REPEATABLE_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__CONTAINER = XSD_REPEATABLE_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__ROOT_CONTAINER = XSD_REPEATABLE_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__SCHEMA = XSD_REPEATABLE_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__DIAGNOSTICS = XSD_REPEATABLE_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__LEXICAL_VALUE = XSD_REPEATABLE_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__FACET_NAME = XSD_REPEATABLE_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__EFFECTIVE_VALUE = XSD_REPEATABLE_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__ANNOTATION = XSD_REPEATABLE_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__SIMPLE_TYPE_DEFINITION = XSD_REPEATABLE_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__ANNOTATIONS = XSD_REPEATABLE_FACET__ANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET__VALUE = XSD_REPEATABLE_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Pattern Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_PATTERN_FACET_FEATURE_COUNT = XSD_REPEATABLE_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_CONTENT__ELEMENT = XSD_SCHEMA_CONTENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_CONTENT__CONTAINER = XSD_SCHEMA_CONTENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_CONTENT__ROOT_CONTAINER = XSD_SCHEMA_CONTENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_CONTENT__SCHEMA = XSD_SCHEMA_CONTENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_CONTENT__DIAGNOSTICS = XSD_SCHEMA_CONTENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Redefine Content</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_CONTENT_FEATURE_COUNT = XSD_SCHEMA_CONTENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__ELEMENT = XSD_SCHEMA_COMPOSITOR__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__CONTAINER = XSD_SCHEMA_COMPOSITOR__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__ROOT_CONTAINER = XSD_SCHEMA_COMPOSITOR__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__SCHEMA = XSD_SCHEMA_COMPOSITOR__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__DIAGNOSTICS = XSD_SCHEMA_COMPOSITOR__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__SCHEMA_LOCATION = XSD_SCHEMA_COMPOSITOR__SCHEMA_LOCATION;
+
+ /**
+ * The feature id for the '<em><b>Resolved Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__RESOLVED_SCHEMA = XSD_SCHEMA_COMPOSITOR__RESOLVED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Incorporated Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__INCORPORATED_SCHEMA = XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__ANNOTATIONS = XSD_SCHEMA_COMPOSITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE__CONTENTS = XSD_SCHEMA_COMPOSITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Redefine</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_REDEFINE_FEATURE_COUNT = XSD_SCHEMA_COMPOSITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCOPE__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCOPE__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCOPE__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCOPE__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCOPE__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The number of structural features of the '<em>Scope</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCOPE_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ELEMENT = XSD_SCOPE__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__CONTAINER = XSD_SCOPE__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ROOT_CONTAINER = XSD_SCOPE__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__SCHEMA = XSD_SCOPE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__DIAGNOSTICS = XSD_SCOPE__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Document</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__DOCUMENT = XSD_SCOPE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__SCHEMA_LOCATION = XSD_SCOPE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__TARGET_NAMESPACE = XSD_SCOPE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Attribute Form Default</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT = XSD_SCOPE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Element Form Default</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ELEMENT_FORM_DEFAULT = XSD_SCOPE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Final Default</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__FINAL_DEFAULT = XSD_SCOPE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Block Default</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__BLOCK_DEFAULT = XSD_SCOPE_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__VERSION = XSD_SCOPE_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__CONTENTS = XSD_SCOPE_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Element Declarations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ELEMENT_DECLARATIONS = XSD_SCOPE_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Attribute Declarations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ATTRIBUTE_DECLARATIONS = XSD_SCOPE_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Attribute Group Definitions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS = XSD_SCOPE_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Type Definitions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__TYPE_DEFINITIONS = XSD_SCOPE_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Model Group Definitions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__MODEL_GROUP_DEFINITIONS = XSD_SCOPE_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Identity Constraint Definitions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS = XSD_SCOPE_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Notation Declarations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__NOTATION_DECLARATIONS = XSD_SCOPE_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ANNOTATIONS = XSD_SCOPE_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>All Diagnostics</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ALL_DIAGNOSTICS = XSD_SCOPE_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Referencing Directives</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__REFERENCING_DIRECTIVES = XSD_SCOPE_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Root Version</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ROOT_VERSION = XSD_SCOPE_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>Original Version</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__ORIGINAL_VERSION = XSD_SCOPE_FEATURE_COUNT + 20;
+
+ /**
+ * The feature id for the '<em><b>Incorporated Versions</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__INCORPORATED_VERSIONS = XSD_SCOPE_FEATURE_COUNT + 21;
+
+ /**
+ * The feature id for the '<em><b>Schema For Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA__SCHEMA_FOR_SCHEMA = XSD_SCOPE_FEATURE_COUNT + 22;
+
+ /**
+ * The number of structural features of the '<em>Schema</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SCHEMA_FEATURE_COUNT = XSD_SCOPE_FEATURE_COUNT + 23;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ELEMENT = XSD_TYPE_DEFINITION__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__CONTAINER = XSD_TYPE_DEFINITION__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ROOT_CONTAINER = XSD_TYPE_DEFINITION__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__SCHEMA = XSD_TYPE_DEFINITION__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__DIAGNOSTICS = XSD_TYPE_DEFINITION__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__NAME = XSD_TYPE_DEFINITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__TARGET_NAMESPACE = XSD_TYPE_DEFINITION__TARGET_NAMESPACE;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ALIAS_NAME = XSD_TYPE_DEFINITION__ALIAS_NAME;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__URI = XSD_TYPE_DEFINITION__URI;
+
+ /**
+ * The feature id for the '<em><b>Alias URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ALIAS_URI = XSD_TYPE_DEFINITION__ALIAS_URI;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__QNAME = XSD_TYPE_DEFINITION__QNAME;
+
+ /**
+ * The feature id for the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__CIRCULAR = XSD_TYPE_DEFINITION__CIRCULAR;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ANNOTATION = XSD_TYPE_DEFINITION__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Derivation Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__DERIVATION_ANNOTATION = XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ANNOTATIONS = XSD_TYPE_DEFINITION__ANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Root Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ROOT_TYPE = XSD_TYPE_DEFINITION__ROOT_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE = XSD_TYPE_DEFINITION__BASE_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Simple Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__SIMPLE_TYPE = XSD_TYPE_DEFINITION__SIMPLE_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Complex Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__COMPLEX_TYPE = XSD_TYPE_DEFINITION__COMPLEX_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Variety</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__VARIETY = XSD_TYPE_DEFINITION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Final</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__FINAL = XSD_TYPE_DEFINITION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Lexical Final</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL = XSD_TYPE_DEFINITION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Valid Facets</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__CONTENTS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Facet Contents</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Facets</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__FACETS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Member Type Definitions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Fundamental Facets</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Base Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Primitive Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Item Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Root Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ROOT_TYPE_DEFINITION = XSD_TYPE_DEFINITION_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Min Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MIN_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Max Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MAX_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Max Inclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MAX_INCLUSIVE_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Min Inclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MIN_INCLUSIVE_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Min Exclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MIN_EXCLUSIVE_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Max Exclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MAX_EXCLUSIVE_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__LENGTH_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>White Space Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__WHITE_SPACE_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 20;
+
+ /**
+ * The feature id for the '<em><b>Enumeration Facets</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ENUMERATION_FACETS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 21;
+
+ /**
+ * The feature id for the '<em><b>Pattern Facets</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__PATTERN_FACETS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 22;
+
+ /**
+ * The feature id for the '<em><b>Cardinality Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__CARDINALITY_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 23;
+
+ /**
+ * The feature id for the '<em><b>Numeric Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__NUMERIC_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 24;
+
+ /**
+ * The feature id for the '<em><b>Max Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MAX_LENGTH_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 25;
+
+ /**
+ * The feature id for the '<em><b>Min Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__MIN_LENGTH_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 26;
+
+ /**
+ * The feature id for the '<em><b>Total Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__TOTAL_DIGITS_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 27;
+
+ /**
+ * The feature id for the '<em><b>Fraction Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__FRACTION_DIGITS_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 28;
+
+ /**
+ * The feature id for the '<em><b>Ordered Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__ORDERED_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 29;
+
+ /**
+ * The feature id for the '<em><b>Bounded Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__BOUNDED_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 30;
+
+ /**
+ * The feature id for the '<em><b>Effective Max Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 31;
+
+ /**
+ * The feature id for the '<em><b>Effective White Space Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_WHITE_SPACE_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 32;
+
+ /**
+ * The feature id for the '<em><b>Effective Max Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_LENGTH_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 33;
+
+ /**
+ * The feature id for the '<em><b>Effective Fraction Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_FRACTION_DIGITS_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 34;
+
+ /**
+ * The feature id for the '<em><b>Effective Pattern Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_PATTERN_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 35;
+
+ /**
+ * The feature id for the '<em><b>Effective Enumeration Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_ENUMERATION_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 36;
+
+ /**
+ * The feature id for the '<em><b>Effective Total Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_TOTAL_DIGITS_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 37;
+
+ /**
+ * The feature id for the '<em><b>Effective Min Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_LENGTH_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 38;
+
+ /**
+ * The feature id for the '<em><b>Effective Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_LENGTH_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 39;
+
+ /**
+ * The feature id for the '<em><b>Effective Min Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_FACET = XSD_TYPE_DEFINITION_FEATURE_COUNT + 40;
+
+ /**
+ * The feature id for the '<em><b>Synthetic Facets</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS = XSD_TYPE_DEFINITION_FEATURE_COUNT + 41;
+
+ /**
+ * The number of structural features of the '<em>Simple Type Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_SIMPLE_TYPE_DEFINITION_FEATURE_COUNT = XSD_TYPE_DEFINITION_FEATURE_COUNT + 42;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Total Digits Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_TOTAL_DIGITS_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDWhiteSpaceFacetImpl <em>White Space Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDWhiteSpaceFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDWhiteSpaceFacet()
+ * @generated
+ */
+ int XSD_WHITE_SPACE_FACET = 54;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__ELEMENT = XSD_FIXED_FACET__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__CONTAINER = XSD_FIXED_FACET__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__ROOT_CONTAINER = XSD_FIXED_FACET__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__SCHEMA = XSD_FIXED_FACET__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__DIAGNOSTICS = XSD_FIXED_FACET__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Lexical Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__LEXICAL_VALUE = XSD_FIXED_FACET__LEXICAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Facet Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__FACET_NAME = XSD_FIXED_FACET__FACET_NAME;
+
+ /**
+ * The feature id for the '<em><b>Effective Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__EFFECTIVE_VALUE = XSD_FIXED_FACET__EFFECTIVE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__ANNOTATION = XSD_FIXED_FACET__ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Simple Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__SIMPLE_TYPE_DEFINITION = XSD_FIXED_FACET__SIMPLE_TYPE_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Fixed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__FIXED = XSD_FIXED_FACET__FIXED;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET__VALUE = XSD_FIXED_FACET_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>White Space Facet</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WHITE_SPACE_FACET_FEATURE_COUNT = XSD_FIXED_FACET_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDWildcardImpl <em>Wildcard</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDWildcardImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDWildcard()
+ * @generated
+ */
+ int XSD_WILDCARD = 55;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__ELEMENT = XSD_TERM__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__CONTAINER = XSD_TERM__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__ROOT_CONTAINER = XSD_TERM__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__SCHEMA = XSD_TERM__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__DIAGNOSTICS = XSD_TERM__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Namespace Constraint Category</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY = XSD_TERM_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Namespace Constraint</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__NAMESPACE_CONSTRAINT = XSD_TERM_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Process Contents</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__PROCESS_CONTENTS = XSD_TERM_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Lexical Namespace Constraint</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT = XSD_TERM_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__ANNOTATION = XSD_TERM_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Annotations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD__ANNOTATIONS = XSD_TERM_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Wildcard</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_WILDCARD_FEATURE_COUNT = XSD_TERM_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.impl.XSDXPathDefinitionImpl <em>XPath Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDXPathDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDXPathDefinition()
+ * @generated
+ */
+ int XSD_XPATH_DEFINITION = 56;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__ELEMENT = XSD_COMPONENT__ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__CONTAINER = XSD_COMPONENT__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Root Container</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__ROOT_CONTAINER = XSD_COMPONENT__ROOT_CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__SCHEMA = XSD_COMPONENT__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Diagnostics</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__DIAGNOSTICS = XSD_COMPONENT__DIAGNOSTICS;
+
+ /**
+ * The feature id for the '<em><b>Variety</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__VARIETY = XSD_COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__VALUE = XSD_COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION__ANNOTATION = XSD_COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>XPath Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int XSD_XPATH_DEFINITION_FEATURE_COUNT = XSD_COMPONENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDAttributeUseCategory <em>Attribute Use Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDAttributeUseCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeUseCategory()
+ * @generated
+ */
+ int XSD_ATTRIBUTE_USE_CATEGORY = 57;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDCardinality <em>Cardinality</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDCardinality
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDCardinality()
+ * @generated
+ */
+ int XSD_CARDINALITY = 58;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDComplexFinal <em>Complex Final</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDComplexFinal
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComplexFinal()
+ * @generated
+ */
+ int XSD_COMPLEX_FINAL = 59;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDCompositor <em>Compositor</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDCompositor
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDCompositor()
+ * @generated
+ */
+ int XSD_COMPOSITOR = 60;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDConstraint <em>Constraint</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDConstraint
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDConstraint()
+ * @generated
+ */
+ int XSD_CONSTRAINT = 61;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDContentTypeCategory <em>Content Type Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDContentTypeCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDContentTypeCategory()
+ * @generated
+ */
+ int XSD_CONTENT_TYPE_CATEGORY = 62;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDDerivationMethod <em>Derivation Method</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDDerivationMethod
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDerivationMethod()
+ * @generated
+ */
+ int XSD_DERIVATION_METHOD = 63;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDDiagnosticSeverity <em>Diagnostic Severity</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDDiagnosticSeverity
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDiagnosticSeverity()
+ * @generated
+ */
+ int XSD_DIAGNOSTIC_SEVERITY = 64;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDDisallowedSubstitutions <em>Disallowed Substitutions</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDDisallowedSubstitutions
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDisallowedSubstitutions()
+ * @generated
+ */
+ int XSD_DISALLOWED_SUBSTITUTIONS = 65;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDForm <em>Form</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDForm
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDForm()
+ * @generated
+ */
+ int XSD_FORM = 66;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDIdentityConstraintCategory <em>Identity Constraint Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDIdentityConstraintCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDIdentityConstraintCategory()
+ * @generated
+ */
+ int XSD_IDENTITY_CONSTRAINT_CATEGORY = 67;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDNamespaceConstraintCategory <em>Namespace Constraint Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDNamespaceConstraintCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNamespaceConstraintCategory()
+ * @generated
+ */
+ int XSD_NAMESPACE_CONSTRAINT_CATEGORY = 68;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDOrdered <em>Ordered</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDOrdered
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDOrdered()
+ * @generated
+ */
+ int XSD_ORDERED = 69;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDProcessContents <em>Process Contents</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDProcessContents
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDProcessContents()
+ * @generated
+ */
+ int XSD_PROCESS_CONTENTS = 70;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDProhibitedSubstitutions <em>Prohibited Substitutions</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDProhibitedSubstitutions()
+ * @generated
+ */
+ int XSD_PROHIBITED_SUBSTITUTIONS = 71;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDSimpleFinal <em>Simple Final</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDSimpleFinal
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSimpleFinal()
+ * @generated
+ */
+ int XSD_SIMPLE_FINAL = 72;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDSubstitutionGroupExclusions <em>Substitution Group Exclusions</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDSubstitutionGroupExclusions
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSubstitutionGroupExclusions()
+ * @generated
+ */
+ int XSD_SUBSTITUTION_GROUP_EXCLUSIONS = 73;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDVariety <em>Variety</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDVariety
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDVariety()
+ * @generated
+ */
+ int XSD_VARIETY = 74;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDWhiteSpace <em>White Space</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDWhiteSpace
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDWhiteSpace()
+ * @generated
+ */
+ int XSD_WHITE_SPACE = 75;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xsd.XSDXPathVariety <em>XPath Variety</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDXPathVariety
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDXPathVariety()
+ * @generated
+ */
+ int XSD_XPATH_VARIETY = 76;
+
+ /**
+ * The meta object id for the '<em>DOM Attr</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Attr
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMAttr()
+ * @generated
+ */
+ int DOM_ATTR = 77;
+
+ /**
+ * The meta object id for the '<em>DOM Document</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Document
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMDocument()
+ * @generated
+ */
+ int DOM_DOCUMENT = 78;
+
+ /**
+ * The meta object id for the '<em>DOM Element</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Element
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMElement()
+ * @generated
+ */
+ int DOM_ELEMENT = 79;
+
+ /**
+ * The meta object id for the '<em>DOM Node</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Node
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMNode()
+ * @generated
+ */
+ int DOM_NODE = 80;
+
+ /**
+ * The meta object id for the '<em>Value</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getValue()
+ * @generated
+ */
+ int VALUE = 81;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDAnnotation
+ * @generated
+ */
+ EClass getXSDAnnotation();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDAnnotation#getApplicationInformation <em>Application Information</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Application Information</em>'.
+ * @see org.eclipse.xsd.XSDAnnotation#getApplicationInformation()
+ * @see #getXSDAnnotation()
+ * @generated
+ */
+ EAttribute getXSDAnnotation_ApplicationInformation();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDAnnotation#getUserInformation <em>User Information</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>User Information</em>'.
+ * @see org.eclipse.xsd.XSDAnnotation#getUserInformation()
+ * @see #getXSDAnnotation()
+ * @generated
+ */
+ EAttribute getXSDAnnotation_UserInformation();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDAnnotation#getAttributes <em>Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Attributes</em>'.
+ * @see org.eclipse.xsd.XSDAnnotation#getAttributes()
+ * @see #getXSDAnnotation()
+ * @generated
+ */
+ EAttribute getXSDAnnotation_Attributes();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDAttributeDeclaration <em>Attribute Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute Declaration</em>'.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration
+ * @generated
+ */
+ EClass getXSDAttributeDeclaration();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeDeclaration#isAttributeDeclarationReference <em>Attribute Declaration Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Attribute Declaration Reference</em>'.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration#isAttributeDeclarationReference()
+ * @see #getXSDAttributeDeclaration()
+ * @generated
+ */
+ EAttribute getXSDAttributeDeclaration_AttributeDeclarationReference();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDAttributeDeclaration#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration#getAnnotation()
+ * @see #getXSDAttributeDeclaration()
+ * @generated
+ */
+ EReference getXSDAttributeDeclaration_Annotation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDAttributeDeclaration#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Anonymous Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration#getAnonymousTypeDefinition()
+ * @see #getXSDAttributeDeclaration()
+ * @generated
+ */
+ EReference getXSDAttributeDeclaration_AnonymousTypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDAttributeDeclaration#getTypeDefinition <em>Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration#getTypeDefinition()
+ * @see #getXSDAttributeDeclaration()
+ * @generated
+ */
+ EReference getXSDAttributeDeclaration_TypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDAttributeDeclaration#getResolvedAttributeDeclaration <em>Resolved Attribute Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Attribute Declaration</em>'.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration#getResolvedAttributeDeclaration()
+ * @see #getXSDAttributeDeclaration()
+ * @generated
+ */
+ EReference getXSDAttributeDeclaration_ResolvedAttributeDeclaration();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDAttributeGroupContent <em>Attribute Group Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute Group Content</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupContent
+ * @generated
+ */
+ EClass getXSDAttributeGroupContent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDAttributeGroupDefinition <em>Attribute Group Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute Group Definition</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition
+ * @generated
+ */
+ EClass getXSDAttributeGroupDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#isAttributeGroupDefinitionReference <em>Attribute Group Definition Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Attribute Group Definition Reference</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#isAttributeGroupDefinitionReference()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EAttribute getXSDAttributeGroupDefinition_AttributeGroupDefinitionReference();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getAnnotation()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_Annotation();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getContents <em>Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Contents</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getContents()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_Contents();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeUses <em>Attribute Uses</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Attribute Uses</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeUses()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_AttributeUses();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Attribute Wildcard Content</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcardContent()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_AttributeWildcardContent();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcard <em>Attribute Wildcard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Attribute Wildcard</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getAttributeWildcard()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_AttributeWildcard();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getResolvedAttributeGroupDefinition <em>Resolved Attribute Group Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Attribute Group Definition</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getResolvedAttributeGroupDefinition()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_ResolvedAttributeGroupDefinition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDAttributeGroupDefinition#getSyntheticWildcard <em>Synthetic Wildcard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Synthetic Wildcard</em>'.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition#getSyntheticWildcard()
+ * @see #getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EReference getXSDAttributeGroupDefinition_SyntheticWildcard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDAttributeUse <em>Attribute Use</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute Use</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse
+ * @generated
+ */
+ EClass getXSDAttributeUse();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeUse#isRequired <em>Required</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Required</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#isRequired()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EAttribute getXSDAttributeUse_Required();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeUse#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getValue()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EAttribute getXSDAttributeUse_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeUse#getConstraint <em>Constraint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Constraint</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getConstraint()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EAttribute getXSDAttributeUse_Constraint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeUse#getUse <em>Use</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Use</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getUse()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EAttribute getXSDAttributeUse_Use();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDAttributeUse#getLexicalValue <em>Lexical Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Lexical Value</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getLexicalValue()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EAttribute getXSDAttributeUse_LexicalValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDAttributeUse#getAttributeDeclaration <em>Attribute Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Attribute Declaration</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getAttributeDeclaration()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EReference getXSDAttributeUse_AttributeDeclaration();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDAttributeUse#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Content</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUse#getContent()
+ * @see #getXSDAttributeUse()
+ * @generated
+ */
+ EReference getXSDAttributeUse_Content();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDBoundedFacet <em>Bounded Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Bounded Facet</em>'.
+ * @see org.eclipse.xsd.XSDBoundedFacet
+ * @generated
+ */
+ EClass getXSDBoundedFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDBoundedFacet#isValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDBoundedFacet#isValue()
+ * @see #getXSDBoundedFacet()
+ * @generated
+ */
+ EAttribute getXSDBoundedFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDCardinalityFacet <em>Cardinality Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Cardinality Facet</em>'.
+ * @see org.eclipse.xsd.XSDCardinalityFacet
+ * @generated
+ */
+ EClass getXSDCardinalityFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDCardinalityFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDCardinalityFacet#getValue()
+ * @see #getXSDCardinalityFacet()
+ * @generated
+ */
+ EAttribute getXSDCardinalityFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDComplexTypeContent <em>Complex Type Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Complex Type Content</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeContent
+ * @generated
+ */
+ EClass getXSDComplexTypeContent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDComplexTypeDefinition <em>Complex Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Complex Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition
+ * @generated
+ */
+ EClass getXSDComplexTypeDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod <em>Derivation Method</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Derivation Method</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getDerivationMethod()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_DerivationMethod();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getFinal <em>Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Final</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getFinal()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_Final();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isAbstract <em>Abstract</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Abstract</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#isAbstract()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_Abstract();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory <em>Content Type Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Content Type Category</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_ContentTypeCategory();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getProhibitedSubstitutions <em>Prohibited Substitutions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Prohibited Substitutions</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getProhibitedSubstitutions()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_ProhibitedSubstitutions();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal <em>Lexical Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Lexical Final</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getLexicalFinal()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_LexicalFinal();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBlock <em>Block</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Block</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getBlock()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_Block();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDComplexTypeDefinition#isMixed <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Mixed</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#isMixed()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDComplexTypeDefinition_Mixed();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentAnnotation <em>Content Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Content Annotation</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getContentAnnotation()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_ContentAnnotation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition <em>Base Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_BaseTypeDefinition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Content</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getContent()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_Content();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentType <em>Content Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Content Type</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getContentType()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_ContentType();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeUses <em>Attribute Uses</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Attribute Uses</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeUses()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_AttributeUses();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeContents <em>Attribute Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attribute Contents</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeContents()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_AttributeContents();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcard <em>Attribute Wildcard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Attribute Wildcard</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcard()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_AttributeWildcard();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Attribute Wildcard Content</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getAttributeWildcardContent()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_AttributeWildcardContent();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getRootTypeDefinition <em>Root Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getRootTypeDefinition()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_RootTypeDefinition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticParticle <em>Synthetic Particle</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Synthetic Particle</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticParticle()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_SyntheticParticle();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticWildcard <em>Synthetic Wildcard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Synthetic Wildcard</em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getSyntheticWildcard()
+ * @see #getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EReference getXSDComplexTypeDefinition_SyntheticWildcard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDComponent <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Component</em>'.
+ * @see org.eclipse.xsd.XSDComponent
+ * @generated
+ */
+ EClass getXSDComponent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDConcreteComponent <em>Concrete Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Concrete Component</em>'.
+ * @see org.eclipse.xsd.XSDConcreteComponent
+ * @generated
+ */
+ EClass getXSDConcreteComponent();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDConcreteComponent#getElement <em>Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Element</em>'.
+ * @see org.eclipse.xsd.XSDConcreteComponent#getElement()
+ * @see #getXSDConcreteComponent()
+ * @generated
+ */
+ EAttribute getXSDConcreteComponent_Element();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDConcreteComponent#getContainer <em>Container</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Container</em>'.
+ * @see org.eclipse.xsd.XSDConcreteComponent#getContainer()
+ * @see #getXSDConcreteComponent()
+ * @generated
+ */
+ EReference getXSDConcreteComponent_Container();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDConcreteComponent#getRootContainer <em>Root Container</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root Container</em>'.
+ * @see org.eclipse.xsd.XSDConcreteComponent#getRootContainer()
+ * @see #getXSDConcreteComponent()
+ * @generated
+ */
+ EReference getXSDConcreteComponent_RootContainer();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDConcreteComponent#getSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Schema</em>'.
+ * @see org.eclipse.xsd.XSDConcreteComponent#getSchema()
+ * @see #getXSDConcreteComponent()
+ * @generated
+ */
+ EReference getXSDConcreteComponent_Schema();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDConcreteComponent#getDiagnostics <em>Diagnostics</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Diagnostics</em>'.
+ * @see org.eclipse.xsd.XSDConcreteComponent#getDiagnostics()
+ * @see #getXSDConcreteComponent()
+ * @generated
+ */
+ EReference getXSDConcreteComponent_Diagnostics();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDConstrainingFacet <em>Constraining Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Constraining Facet</em>'.
+ * @see org.eclipse.xsd.XSDConstrainingFacet
+ * @generated
+ */
+ EClass getXSDConstrainingFacet();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDDiagnostic <em>Diagnostic</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Diagnostic</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic
+ * @generated
+ */
+ EClass getXSDDiagnostic();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getSeverity <em>Severity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Severity</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getSeverity()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Severity();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getMessage <em>Message</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Message</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getMessage()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Message();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getLocationURI <em>Location URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Location URI</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getLocationURI()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_LocationURI();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getLine <em>Line</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Line</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getLine()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Line();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getColumn <em>Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Column</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getColumn()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Column();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getNode <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Node</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getNode()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Node();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getAnnotationURI <em>Annotation URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Annotation URI</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getAnnotationURI()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_AnnotationURI();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDDiagnostic#getKey <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getKey()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Key();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDDiagnostic#getSubstitutions <em>Substitutions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Substitutions</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getSubstitutions()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EAttribute getXSDDiagnostic_Substitutions();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDDiagnostic#getComponents <em>Components</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Components</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getComponents()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EReference getXSDDiagnostic_Components();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDDiagnostic#getPrimaryComponent <em>Primary Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Primary Component</em>'.
+ * @see org.eclipse.xsd.XSDDiagnostic#getPrimaryComponent()
+ * @see #getXSDDiagnostic()
+ * @generated
+ */
+ EReference getXSDDiagnostic_PrimaryComponent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDElementDeclaration <em>Element Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Element Declaration</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration
+ * @generated
+ */
+ EClass getXSDElementDeclaration();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDElementDeclaration#isNillable <em>Nillable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Nillable</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#isNillable()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_Nillable();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDElementDeclaration#getDisallowedSubstitutions <em>Disallowed Substitutions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Disallowed Substitutions</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getDisallowedSubstitutions()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_DisallowedSubstitutions();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupExclusions <em>Substitution Group Exclusions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Substitution Group Exclusions</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupExclusions()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_SubstitutionGroupExclusions();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDElementDeclaration#isAbstract <em>Abstract</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Abstract</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#isAbstract()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_Abstract();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDElementDeclaration#getLexicalFinal <em>Lexical Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Lexical Final</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getLexicalFinal()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_LexicalFinal();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDElementDeclaration#getBlock <em>Block</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Block</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getBlock()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_Block();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDElementDeclaration#isElementDeclarationReference <em>Element Declaration Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Element Declaration Reference</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#isElementDeclarationReference()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_ElementDeclarationReference();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDElementDeclaration#isCircular <em>Circular</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Circular</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#isCircular()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EAttribute getXSDElementDeclaration_Circular();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDElementDeclaration#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getAnnotation()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_Annotation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDElementDeclaration#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Anonymous Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getAnonymousTypeDefinition()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_AnonymousTypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDElementDeclaration#getTypeDefinition <em>Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getTypeDefinition()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_TypeDefinition();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDElementDeclaration#getIdentityConstraintDefinitions <em>Identity Constraint Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Identity Constraint Definitions</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getIdentityConstraintDefinitions()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_IdentityConstraintDefinitions();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDElementDeclaration#getResolvedElementDeclaration <em>Resolved Element Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Element Declaration</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getResolvedElementDeclaration()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_ResolvedElementDeclaration();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupAffiliation <em>Substitution Group Affiliation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Substitution Group Affiliation</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupAffiliation()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_SubstitutionGroupAffiliation();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroup <em>Substitution Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Substitution Group</em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroup()
+ * @see #getXSDElementDeclaration()
+ * @generated
+ */
+ EReference getXSDElementDeclaration_SubstitutionGroup();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDEnumerationFacet <em>Enumeration Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Enumeration Facet</em>'.
+ * @see org.eclipse.xsd.XSDEnumerationFacet
+ * @generated
+ */
+ EClass getXSDEnumerationFacet();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDEnumerationFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDEnumerationFacet#getValue()
+ * @see #getXSDEnumerationFacet()
+ * @generated
+ */
+ EAttribute getXSDEnumerationFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDFacet <em>Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Facet</em>'.
+ * @see org.eclipse.xsd.XSDFacet
+ * @generated
+ */
+ EClass getXSDFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFacet#getLexicalValue <em>Lexical Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Lexical Value</em>'.
+ * @see org.eclipse.xsd.XSDFacet#getLexicalValue()
+ * @see #getXSDFacet()
+ * @generated
+ */
+ EAttribute getXSDFacet_LexicalValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFacet#getFacetName <em>Facet Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Facet Name</em>'.
+ * @see org.eclipse.xsd.XSDFacet#getFacetName()
+ * @see #getXSDFacet()
+ * @generated
+ */
+ EAttribute getXSDFacet_FacetName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFacet#getEffectiveValue <em>Effective Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Effective Value</em>'.
+ * @see org.eclipse.xsd.XSDFacet#getEffectiveValue()
+ * @see #getXSDFacet()
+ * @generated
+ */
+ EAttribute getXSDFacet_EffectiveValue();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDFacet#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDFacet#getAnnotation()
+ * @see #getXSDFacet()
+ * @generated
+ */
+ EReference getXSDFacet_Annotation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDFacet#getSimpleTypeDefinition <em>Simple Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Simple Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDFacet#getSimpleTypeDefinition()
+ * @see #getXSDFacet()
+ * @generated
+ */
+ EReference getXSDFacet_SimpleTypeDefinition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDFeature <em>Feature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Feature</em>'.
+ * @see org.eclipse.xsd.XSDFeature
+ * @generated
+ */
+ EClass getXSDFeature();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFeature#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getValue()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EAttribute getXSDFeature_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFeature#getConstraint <em>Constraint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Constraint</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getConstraint()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EAttribute getXSDFeature_Constraint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFeature#getForm <em>Form</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Form</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getForm()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EAttribute getXSDFeature_Form();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFeature#getLexicalValue <em>Lexical Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Lexical Value</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getLexicalValue()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EAttribute getXSDFeature_LexicalValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFeature#isGlobal <em>Global</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Global</em>'.
+ * @see org.eclipse.xsd.XSDFeature#isGlobal()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EAttribute getXSDFeature_Global();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFeature#isFeatureReference <em>Feature Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Feature Reference</em>'.
+ * @see org.eclipse.xsd.XSDFeature#isFeatureReference()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EAttribute getXSDFeature_FeatureReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDFeature#getScope <em>Scope</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Scope</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getScope()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EReference getXSDFeature_Scope();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDFeature#getResolvedFeature <em>Resolved Feature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Feature</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getResolvedFeature()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EReference getXSDFeature_ResolvedFeature();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDFeature#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.xsd.XSDFeature#getType()
+ * @see #getXSDFeature()
+ * @generated
+ */
+ EReference getXSDFeature_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDFixedFacet <em>Fixed Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fixed Facet</em>'.
+ * @see org.eclipse.xsd.XSDFixedFacet
+ * @generated
+ */
+ EClass getXSDFixedFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFixedFacet#isFixed <em>Fixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Fixed</em>'.
+ * @see org.eclipse.xsd.XSDFixedFacet#isFixed()
+ * @see #getXSDFixedFacet()
+ * @generated
+ */
+ EAttribute getXSDFixedFacet_Fixed();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDFractionDigitsFacet <em>Fraction Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fraction Digits Facet</em>'.
+ * @see org.eclipse.xsd.XSDFractionDigitsFacet
+ * @generated
+ */
+ EClass getXSDFractionDigitsFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDFractionDigitsFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDFractionDigitsFacet#getValue()
+ * @see #getXSDFractionDigitsFacet()
+ * @generated
+ */
+ EAttribute getXSDFractionDigitsFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDFundamentalFacet <em>Fundamental Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fundamental Facet</em>'.
+ * @see org.eclipse.xsd.XSDFundamentalFacet
+ * @generated
+ */
+ EClass getXSDFundamentalFacet();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition <em>Identity Constraint Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identity Constraint Definition</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition
+ * @generated
+ */
+ EClass getXSDIdentityConstraintDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getIdentityConstraintCategory <em>Identity Constraint Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Identity Constraint Category</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition#getIdentityConstraintCategory()
+ * @see #getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ EAttribute getXSDIdentityConstraintDefinition_IdentityConstraintCategory();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition#getAnnotation()
+ * @see #getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ EReference getXSDIdentityConstraintDefinition_Annotation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getReferencedKey <em>Referenced Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Referenced Key</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition#getReferencedKey()
+ * @see #getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ EReference getXSDIdentityConstraintDefinition_ReferencedKey();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getSelector <em>Selector</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Selector</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition#getSelector()
+ * @see #getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ EReference getXSDIdentityConstraintDefinition_Selector();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getFields <em>Fields</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Fields</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition#getFields()
+ * @see #getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ EReference getXSDIdentityConstraintDefinition_Fields();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDImport <em>Import</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Import</em>'.
+ * @see org.eclipse.xsd.XSDImport
+ * @generated
+ */
+ EClass getXSDImport();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDImport#getNamespace <em>Namespace</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Namespace</em>'.
+ * @see org.eclipse.xsd.XSDImport#getNamespace()
+ * @see #getXSDImport()
+ * @generated
+ */
+ EAttribute getXSDImport_Namespace();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDImport#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDImport#getAnnotation()
+ * @see #getXSDImport()
+ * @generated
+ */
+ EReference getXSDImport_Annotation();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDInclude <em>Include</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Include</em>'.
+ * @see org.eclipse.xsd.XSDInclude
+ * @generated
+ */
+ EClass getXSDInclude();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDInclude#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDInclude#getAnnotation()
+ * @see #getXSDInclude()
+ * @generated
+ */
+ EReference getXSDInclude_Annotation();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDLengthFacet <em>Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDLengthFacet
+ * @generated
+ */
+ EClass getXSDLengthFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDLengthFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDLengthFacet#getValue()
+ * @see #getXSDLengthFacet()
+ * @generated
+ */
+ EAttribute getXSDLengthFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMaxExclusiveFacet <em>Max Exclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Max Exclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDMaxExclusiveFacet
+ * @generated
+ */
+ EClass getXSDMaxExclusiveFacet();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMaxFacet <em>Max Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Max Facet</em>'.
+ * @see org.eclipse.xsd.XSDMaxFacet
+ * @generated
+ */
+ EClass getXSDMaxFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMaxFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDMaxFacet#getValue()
+ * @see #getXSDMaxFacet()
+ * @generated
+ */
+ EAttribute getXSDMaxFacet_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMaxFacet#isInclusive <em>Inclusive</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Inclusive</em>'.
+ * @see org.eclipse.xsd.XSDMaxFacet#isInclusive()
+ * @see #getXSDMaxFacet()
+ * @generated
+ */
+ EAttribute getXSDMaxFacet_Inclusive();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMaxFacet#isExclusive <em>Exclusive</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Exclusive</em>'.
+ * @see org.eclipse.xsd.XSDMaxFacet#isExclusive()
+ * @see #getXSDMaxFacet()
+ * @generated
+ */
+ EAttribute getXSDMaxFacet_Exclusive();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMaxInclusiveFacet <em>Max Inclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Max Inclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDMaxInclusiveFacet
+ * @generated
+ */
+ EClass getXSDMaxInclusiveFacet();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMaxLengthFacet <em>Max Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Max Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDMaxLengthFacet
+ * @generated
+ */
+ EClass getXSDMaxLengthFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMaxLengthFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDMaxLengthFacet#getValue()
+ * @see #getXSDMaxLengthFacet()
+ * @generated
+ */
+ EAttribute getXSDMaxLengthFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMinExclusiveFacet <em>Min Exclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Min Exclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDMinExclusiveFacet
+ * @generated
+ */
+ EClass getXSDMinExclusiveFacet();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMinFacet <em>Min Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Min Facet</em>'.
+ * @see org.eclipse.xsd.XSDMinFacet
+ * @generated
+ */
+ EClass getXSDMinFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMinFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDMinFacet#getValue()
+ * @see #getXSDMinFacet()
+ * @generated
+ */
+ EAttribute getXSDMinFacet_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMinFacet#isInclusive <em>Inclusive</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Inclusive</em>'.
+ * @see org.eclipse.xsd.XSDMinFacet#isInclusive()
+ * @see #getXSDMinFacet()
+ * @generated
+ */
+ EAttribute getXSDMinFacet_Inclusive();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMinFacet#isExclusive <em>Exclusive</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Exclusive</em>'.
+ * @see org.eclipse.xsd.XSDMinFacet#isExclusive()
+ * @see #getXSDMinFacet()
+ * @generated
+ */
+ EAttribute getXSDMinFacet_Exclusive();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMinInclusiveFacet <em>Min Inclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Min Inclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDMinInclusiveFacet
+ * @generated
+ */
+ EClass getXSDMinInclusiveFacet();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDMinLengthFacet <em>Min Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Min Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDMinLengthFacet
+ * @generated
+ */
+ EClass getXSDMinLengthFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDMinLengthFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDMinLengthFacet#getValue()
+ * @see #getXSDMinLengthFacet()
+ * @generated
+ */
+ EAttribute getXSDMinLengthFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDModelGroup <em>Model Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Model Group</em>'.
+ * @see org.eclipse.xsd.XSDModelGroup
+ * @generated
+ */
+ EClass getXSDModelGroup();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDModelGroup#getCompositor <em>Compositor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Compositor</em>'.
+ * @see org.eclipse.xsd.XSDModelGroup#getCompositor()
+ * @see #getXSDModelGroup()
+ * @generated
+ */
+ EAttribute getXSDModelGroup_Compositor();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDModelGroup#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDModelGroup#getAnnotation()
+ * @see #getXSDModelGroup()
+ * @generated
+ */
+ EReference getXSDModelGroup_Annotation();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDModelGroup#getContents <em>Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Contents</em>'.
+ * @see org.eclipse.xsd.XSDModelGroup#getContents()
+ * @see #getXSDModelGroup()
+ * @generated
+ */
+ EReference getXSDModelGroup_Contents();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDModelGroup#getParticles <em>Particles</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Particles</em>'.
+ * @see org.eclipse.xsd.XSDModelGroup#getParticles()
+ * @see #getXSDModelGroup()
+ * @generated
+ */
+ EReference getXSDModelGroup_Particles();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDModelGroupDefinition <em>Model Group Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Model Group Definition</em>'.
+ * @see org.eclipse.xsd.XSDModelGroupDefinition
+ * @generated
+ */
+ EClass getXSDModelGroupDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDModelGroupDefinition#isModelGroupDefinitionReference <em>Model Group Definition Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Model Group Definition Reference</em>'.
+ * @see org.eclipse.xsd.XSDModelGroupDefinition#isModelGroupDefinitionReference()
+ * @see #getXSDModelGroupDefinition()
+ * @generated
+ */
+ EAttribute getXSDModelGroupDefinition_ModelGroupDefinitionReference();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDModelGroupDefinition#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDModelGroupDefinition#getAnnotation()
+ * @see #getXSDModelGroupDefinition()
+ * @generated
+ */
+ EReference getXSDModelGroupDefinition_Annotation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDModelGroupDefinition#getModelGroup <em>Model Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Model Group</em>'.
+ * @see org.eclipse.xsd.XSDModelGroupDefinition#getModelGroup()
+ * @see #getXSDModelGroupDefinition()
+ * @generated
+ */
+ EReference getXSDModelGroupDefinition_ModelGroup();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDModelGroupDefinition#getResolvedModelGroupDefinition <em>Resolved Model Group Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Model Group Definition</em>'.
+ * @see org.eclipse.xsd.XSDModelGroupDefinition#getResolvedModelGroupDefinition()
+ * @see #getXSDModelGroupDefinition()
+ * @generated
+ */
+ EReference getXSDModelGroupDefinition_ResolvedModelGroupDefinition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDNamedComponent <em>Named Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Named Component</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent
+ * @generated
+ */
+ EClass getXSDNamedComponent();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNamedComponent#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent#getName()
+ * @see #getXSDNamedComponent()
+ * @generated
+ */
+ EAttribute getXSDNamedComponent_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace <em>Target Namespace</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target Namespace</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
+ * @see #getXSDNamedComponent()
+ * @generated
+ */
+ EAttribute getXSDNamedComponent_TargetNamespace();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNamedComponent#getAliasName <em>Alias Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Alias Name</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent#getAliasName()
+ * @see #getXSDNamedComponent()
+ * @generated
+ */
+ EAttribute getXSDNamedComponent_AliasName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNamedComponent#getURI <em>URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>URI</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent#getURI()
+ * @see #getXSDNamedComponent()
+ * @generated
+ */
+ EAttribute getXSDNamedComponent_URI();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNamedComponent#getAliasURI <em>Alias URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Alias URI</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent#getAliasURI()
+ * @see #getXSDNamedComponent()
+ * @generated
+ */
+ EAttribute getXSDNamedComponent_AliasURI();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNamedComponent#getQName <em>QName</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>QName</em>'.
+ * @see org.eclipse.xsd.XSDNamedComponent#getQName()
+ * @see #getXSDNamedComponent()
+ * @generated
+ */
+ EAttribute getXSDNamedComponent_QName();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDNotationDeclaration <em>Notation Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Notation Declaration</em>'.
+ * @see org.eclipse.xsd.XSDNotationDeclaration
+ * @generated
+ */
+ EClass getXSDNotationDeclaration();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNotationDeclaration#getSystemIdentifier <em>System Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>System Identifier</em>'.
+ * @see org.eclipse.xsd.XSDNotationDeclaration#getSystemIdentifier()
+ * @see #getXSDNotationDeclaration()
+ * @generated
+ */
+ EAttribute getXSDNotationDeclaration_SystemIdentifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNotationDeclaration#getPublicIdentifier <em>Public Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Public Identifier</em>'.
+ * @see org.eclipse.xsd.XSDNotationDeclaration#getPublicIdentifier()
+ * @see #getXSDNotationDeclaration()
+ * @generated
+ */
+ EAttribute getXSDNotationDeclaration_PublicIdentifier();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDNotationDeclaration#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDNotationDeclaration#getAnnotation()
+ * @see #getXSDNotationDeclaration()
+ * @generated
+ */
+ EReference getXSDNotationDeclaration_Annotation();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDNumericFacet <em>Numeric Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Numeric Facet</em>'.
+ * @see org.eclipse.xsd.XSDNumericFacet
+ * @generated
+ */
+ EClass getXSDNumericFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDNumericFacet#isValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDNumericFacet#isValue()
+ * @see #getXSDNumericFacet()
+ * @generated
+ */
+ EAttribute getXSDNumericFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDOrderedFacet <em>Ordered Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Ordered Facet</em>'.
+ * @see org.eclipse.xsd.XSDOrderedFacet
+ * @generated
+ */
+ EClass getXSDOrderedFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDOrderedFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDOrderedFacet#getValue()
+ * @see #getXSDOrderedFacet()
+ * @generated
+ */
+ EAttribute getXSDOrderedFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDParticle <em>Particle</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Particle</em>'.
+ * @see org.eclipse.xsd.XSDParticle
+ * @generated
+ */
+ EClass getXSDParticle();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Min Occurs</em>'.
+ * @see org.eclipse.xsd.XSDParticle#getMinOccurs()
+ * @see #getXSDParticle()
+ * @generated
+ */
+ EAttribute getXSDParticle_MinOccurs();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Max Occurs</em>'.
+ * @see org.eclipse.xsd.XSDParticle#getMaxOccurs()
+ * @see #getXSDParticle()
+ * @generated
+ */
+ EAttribute getXSDParticle_MaxOccurs();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDParticle#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Content</em>'.
+ * @see org.eclipse.xsd.XSDParticle#getContent()
+ * @see #getXSDParticle()
+ * @generated
+ */
+ EReference getXSDParticle_Content();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDParticle#getTerm <em>Term</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Term</em>'.
+ * @see org.eclipse.xsd.XSDParticle#getTerm()
+ * @see #getXSDParticle()
+ * @generated
+ */
+ EReference getXSDParticle_Term();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDParticleContent <em>Particle Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Particle Content</em>'.
+ * @see org.eclipse.xsd.XSDParticleContent
+ * @generated
+ */
+ EClass getXSDParticleContent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDPatternFacet <em>Pattern Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Pattern Facet</em>'.
+ * @see org.eclipse.xsd.XSDPatternFacet
+ * @generated
+ */
+ EClass getXSDPatternFacet();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDPatternFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDPatternFacet#getValue()
+ * @see #getXSDPatternFacet()
+ * @generated
+ */
+ EAttribute getXSDPatternFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDRedefinableComponent <em>Redefinable Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Redefinable Component</em>'.
+ * @see org.eclipse.xsd.XSDRedefinableComponent
+ * @generated
+ */
+ EClass getXSDRedefinableComponent();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDRedefinableComponent#isCircular <em>Circular</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Circular</em>'.
+ * @see org.eclipse.xsd.XSDRedefinableComponent#isCircular()
+ * @see #getXSDRedefinableComponent()
+ * @generated
+ */
+ EAttribute getXSDRedefinableComponent_Circular();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDRedefineContent <em>Redefine Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Redefine Content</em>'.
+ * @see org.eclipse.xsd.XSDRedefineContent
+ * @generated
+ */
+ EClass getXSDRedefineContent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDRedefine <em>Redefine</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Redefine</em>'.
+ * @see org.eclipse.xsd.XSDRedefine
+ * @generated
+ */
+ EClass getXSDRedefine();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDRedefine#getAnnotations <em>Annotations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Annotations</em>'.
+ * @see org.eclipse.xsd.XSDRedefine#getAnnotations()
+ * @see #getXSDRedefine()
+ * @generated
+ */
+ EReference getXSDRedefine_Annotations();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDRedefine#getContents <em>Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Contents</em>'.
+ * @see org.eclipse.xsd.XSDRedefine#getContents()
+ * @see #getXSDRedefine()
+ * @generated
+ */
+ EReference getXSDRedefine_Contents();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDRepeatableFacet <em>Repeatable Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Repeatable Facet</em>'.
+ * @see org.eclipse.xsd.XSDRepeatableFacet
+ * @generated
+ */
+ EClass getXSDRepeatableFacet();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDRepeatableFacet#getAnnotations <em>Annotations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Annotations</em>'.
+ * @see org.eclipse.xsd.XSDRepeatableFacet#getAnnotations()
+ * @see #getXSDRepeatableFacet()
+ * @generated
+ */
+ EReference getXSDRepeatableFacet_Annotations();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Schema</em>'.
+ * @see org.eclipse.xsd.XSDSchema
+ * @generated
+ */
+ EClass getXSDSchema();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchema#getDocument <em>Document</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Document</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getDocument()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_Document();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchema#getSchemaLocation <em>Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema Location</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getSchemaLocation()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_SchemaLocation();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchema#getTargetNamespace <em>Target Namespace</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target Namespace</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_TargetNamespace();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchema#getAttributeFormDefault <em>Attribute Form Default</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Attribute Form Default</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getAttributeFormDefault()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_AttributeFormDefault();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchema#getElementFormDefault <em>Element Form Default</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Element Form Default</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getElementFormDefault()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_ElementFormDefault();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDSchema#getFinalDefault <em>Final Default</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Final Default</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getFinalDefault()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_FinalDefault();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDSchema#getBlockDefault <em>Block Default</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Block Default</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getBlockDefault()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_BlockDefault();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchema#getVersion <em>Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Version</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getVersion()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EAttribute getXSDSchema_Version();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDSchema#getContents <em>Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Contents</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getContents()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_Contents();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getElementDeclarations <em>Element Declarations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Element Declarations</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getElementDeclarations()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_ElementDeclarations();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getAttributeDeclarations <em>Attribute Declarations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Attribute Declarations</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getAttributeDeclarations()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_AttributeDeclarations();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getAttributeGroupDefinitions <em>Attribute Group Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Attribute Group Definitions</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getAttributeGroupDefinitions()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_AttributeGroupDefinitions();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getTypeDefinitions <em>Type Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Type Definitions</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getTypeDefinitions()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_TypeDefinitions();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getModelGroupDefinitions <em>Model Group Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Model Group Definitions</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getModelGroupDefinitions()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_ModelGroupDefinitions();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getIdentityConstraintDefinitions <em>Identity Constraint Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Identity Constraint Definitions</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getIdentityConstraintDefinitions()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_IdentityConstraintDefinitions();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getNotationDeclarations <em>Notation Declarations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Notation Declarations</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getNotationDeclarations()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_NotationDeclarations();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getAnnotations <em>Annotations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Annotations</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getAnnotations()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_Annotations();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getAllDiagnostics <em>All Diagnostics</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>All Diagnostics</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getAllDiagnostics()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_AllDiagnostics();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSchema#getReferencingDirectives <em>Referencing Directives</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Referencing Directives</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getReferencingDirectives()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_ReferencingDirectives();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSchema#getRootVersion <em>Root Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root Version</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getRootVersion()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_RootVersion();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSchema#getOriginalVersion <em>Original Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Original Version</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getOriginalVersion()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_OriginalVersion();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDSchema#getIncorporatedVersions <em>Incorporated Versions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Incorporated Versions</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getIncorporatedVersions()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_IncorporatedVersions();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSchema#getSchemaForSchema <em>Schema For Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Schema For Schema</em>'.
+ * @see org.eclipse.xsd.XSDSchema#getSchemaForSchema()
+ * @see #getXSDSchema()
+ * @generated
+ */
+ EReference getXSDSchema_SchemaForSchema();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDSchemaCompositor <em>Schema Compositor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Schema Compositor</em>'.
+ * @see org.eclipse.xsd.XSDSchemaCompositor
+ * @generated
+ */
+ EClass getXSDSchemaCompositor();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSchemaCompositor#getIncorporatedSchema <em>Incorporated Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Incorporated Schema</em>'.
+ * @see org.eclipse.xsd.XSDSchemaCompositor#getIncorporatedSchema()
+ * @see #getXSDSchemaCompositor()
+ * @generated
+ */
+ EReference getXSDSchemaCompositor_IncorporatedSchema();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDSchemaContent <em>Schema Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Schema Content</em>'.
+ * @see org.eclipse.xsd.XSDSchemaContent
+ * @generated
+ */
+ EClass getXSDSchemaContent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDSchemaDirective <em>Schema Directive</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Schema Directive</em>'.
+ * @see org.eclipse.xsd.XSDSchemaDirective
+ * @generated
+ */
+ EClass getXSDSchemaDirective();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation <em>Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema Location</em>'.
+ * @see org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation()
+ * @see #getXSDSchemaDirective()
+ * @generated
+ */
+ EAttribute getXSDSchemaDirective_SchemaLocation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSchemaDirective#getResolvedSchema <em>Resolved Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Schema</em>'.
+ * @see org.eclipse.xsd.XSDSchemaDirective#getResolvedSchema()
+ * @see #getXSDSchemaDirective()
+ * @generated
+ */
+ EReference getXSDSchemaDirective_ResolvedSchema();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDScope <em>Scope</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Scope</em>'.
+ * @see org.eclipse.xsd.XSDScope
+ * @generated
+ */
+ EClass getXSDScope();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDSimpleTypeDefinition <em>Simple Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition
+ * @generated
+ */
+ EClass getXSDSimpleTypeDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety <em>Variety</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Variety</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDSimpleTypeDefinition_Variety();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFinal <em>Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Final</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getFinal()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDSimpleTypeDefinition_Final();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal <em>Lexical Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Lexical Final</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDSimpleTypeDefinition_LexicalFinal();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getValidFacets <em>Valid Facets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Valid Facets</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getValidFacets()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EAttribute getXSDSimpleTypeDefinition_ValidFacets();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getContents <em>Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Contents</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getContents()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_Contents();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFacetContents <em>Facet Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Facet Contents</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getFacetContents()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_FacetContents();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFacets <em>Facets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Facets</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getFacets()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_Facets();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMemberTypeDefinitions <em>Member Type Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Member Type Definitions</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMemberTypeDefinitions()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MemberTypeDefinitions();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFundamentalFacets <em>Fundamental Facets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Fundamental Facets</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getFundamentalFacets()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_FundamentalFacets();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getBaseTypeDefinition <em>Base Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getBaseTypeDefinition()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_BaseTypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getPrimitiveTypeDefinition <em>Primitive Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Primitive Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getPrimitiveTypeDefinition()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_PrimitiveTypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getItemTypeDefinition <em>Item Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Item Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getItemTypeDefinition()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_ItemTypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getRootTypeDefinition <em>Root Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getRootTypeDefinition()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_RootTypeDefinition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinFacet <em>Min Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Min Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMinFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MinFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxFacet <em>Max Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Max Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MaxFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxInclusiveFacet <em>Max Inclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Max Inclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxInclusiveFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MaxInclusiveFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinInclusiveFacet <em>Min Inclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Min Inclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMinInclusiveFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MinInclusiveFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinExclusiveFacet <em>Min Exclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Min Exclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMinExclusiveFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MinExclusiveFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxExclusiveFacet <em>Max Exclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Max Exclusive Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxExclusiveFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MaxExclusiveFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLengthFacet <em>Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getLengthFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_LengthFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getWhiteSpaceFacet <em>White Space Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>White Space Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getWhiteSpaceFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_WhiteSpaceFacet();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEnumerationFacets <em>Enumeration Facets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Enumeration Facets</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEnumerationFacets()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EnumerationFacets();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getPatternFacets <em>Pattern Facets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Pattern Facets</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getPatternFacets()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_PatternFacets();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getCardinalityFacet <em>Cardinality Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Cardinality Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getCardinalityFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_CardinalityFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getNumericFacet <em>Numeric Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Numeric Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getNumericFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_NumericFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxLengthFacet <em>Max Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Max Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxLengthFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MaxLengthFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinLengthFacet <em>Min Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Min Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getMinLengthFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_MinLengthFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getTotalDigitsFacet <em>Total Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Total Digits Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getTotalDigitsFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_TotalDigitsFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFractionDigitsFacet <em>Fraction Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Fraction Digits Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getFractionDigitsFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_FractionDigitsFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getOrderedFacet <em>Ordered Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ordered Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getOrderedFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_OrderedFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getBoundedFacet <em>Bounded Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Bounded Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getBoundedFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_BoundedFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMaxFacet <em>Effective Max Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Max Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMaxFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveMaxFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveWhiteSpaceFacet <em>Effective White Space Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective White Space Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveWhiteSpaceFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveWhiteSpaceFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMaxLengthFacet <em>Effective Max Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Max Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMaxLengthFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveMaxLengthFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveFractionDigitsFacet <em>Effective Fraction Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Fraction Digits Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveFractionDigitsFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveFractionDigitsFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectivePatternFacet <em>Effective Pattern Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Pattern Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectivePatternFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectivePatternFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveEnumerationFacet <em>Effective Enumeration Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Enumeration Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveEnumerationFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveEnumerationFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveTotalDigitsFacet <em>Effective Total Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Total Digits Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveTotalDigitsFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveTotalDigitsFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMinLengthFacet <em>Effective Min Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Min Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMinLengthFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveMinLengthFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveLengthFacet <em>Effective Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Length Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveLengthFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveLengthFacet();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMinFacet <em>Effective Min Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Effective Min Facet</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMinFacet()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_EffectiveMinFacet();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getSyntheticFacets <em>Synthetic Facets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Synthetic Facets</em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getSyntheticFacets()
+ * @see #getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EReference getXSDSimpleTypeDefinition_SyntheticFacets();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDTerm <em>Term</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Term</em>'.
+ * @see org.eclipse.xsd.XSDTerm
+ * @generated
+ */
+ EClass getXSDTerm();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDTotalDigitsFacet <em>Total Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Total Digits Facet</em>'.
+ * @see org.eclipse.xsd.XSDTotalDigitsFacet
+ * @generated
+ */
+ EClass getXSDTotalDigitsFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDTotalDigitsFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDTotalDigitsFacet#getValue()
+ * @see #getXSDTotalDigitsFacet()
+ * @generated
+ */
+ EAttribute getXSDTotalDigitsFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDTypeDefinition <em>Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Definition</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition
+ * @generated
+ */
+ EClass getXSDTypeDefinition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDTypeDefinition#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getAnnotation()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_Annotation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDTypeDefinition#getDerivationAnnotation <em>Derivation Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Derivation Annotation</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getDerivationAnnotation()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_DerivationAnnotation();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDTypeDefinition#getAnnotations <em>Annotations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Annotations</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getAnnotations()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_Annotations();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDTypeDefinition#getRootType <em>Root Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root Type</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getRootType()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_RootType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDTypeDefinition#getBaseType <em>Base Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Type</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getBaseType()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_BaseType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDTypeDefinition#getSimpleType <em>Simple Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Simple Type</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getSimpleType()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_SimpleType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xsd.XSDTypeDefinition#getComplexType <em>Complex Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Complex Type</em>'.
+ * @see org.eclipse.xsd.XSDTypeDefinition#getComplexType()
+ * @see #getXSDTypeDefinition()
+ * @generated
+ */
+ EReference getXSDTypeDefinition_ComplexType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDWhiteSpaceFacet <em>White Space Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>White Space Facet</em>'.
+ * @see org.eclipse.xsd.XSDWhiteSpaceFacet
+ * @generated
+ */
+ EClass getXSDWhiteSpaceFacet();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDWhiteSpaceFacet#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDWhiteSpaceFacet#getValue()
+ * @see #getXSDWhiteSpaceFacet()
+ * @generated
+ */
+ EAttribute getXSDWhiteSpaceFacet_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDWildcard <em>Wildcard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Wildcard</em>'.
+ * @see org.eclipse.xsd.XSDWildcard
+ * @generated
+ */
+ EClass getXSDWildcard();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDWildcard#getNamespaceConstraintCategory <em>Namespace Constraint Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Namespace Constraint Category</em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getNamespaceConstraintCategory()
+ * @see #getXSDWildcard()
+ * @generated
+ */
+ EAttribute getXSDWildcard_NamespaceConstraintCategory();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDWildcard#getNamespaceConstraint <em>Namespace Constraint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Namespace Constraint</em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getNamespaceConstraint()
+ * @see #getXSDWildcard()
+ * @generated
+ */
+ EAttribute getXSDWildcard_NamespaceConstraint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDWildcard#getProcessContents <em>Process Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Process Contents</em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getProcessContents()
+ * @see #getXSDWildcard()
+ * @generated
+ */
+ EAttribute getXSDWildcard_ProcessContents();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Lexical Namespace Constraint</em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint()
+ * @see #getXSDWildcard()
+ * @generated
+ */
+ EAttribute getXSDWildcard_LexicalNamespaceConstraint();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDWildcard#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getAnnotation()
+ * @see #getXSDWildcard()
+ * @generated
+ */
+ EReference getXSDWildcard_Annotation();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xsd.XSDWildcard#getAnnotations <em>Annotations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Annotations</em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getAnnotations()
+ * @see #getXSDWildcard()
+ * @generated
+ */
+ EReference getXSDWildcard_Annotations();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xsd.XSDXPathDefinition <em>XPath Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>XPath Definition</em>'.
+ * @see org.eclipse.xsd.XSDXPathDefinition
+ * @generated
+ */
+ EClass getXSDXPathDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDXPathDefinition#getVariety <em>Variety</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Variety</em>'.
+ * @see org.eclipse.xsd.XSDXPathDefinition#getVariety()
+ * @see #getXSDXPathDefinition()
+ * @generated
+ */
+ EAttribute getXSDXPathDefinition_Variety();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xsd.XSDXPathDefinition#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xsd.XSDXPathDefinition#getValue()
+ * @see #getXSDXPathDefinition()
+ * @generated
+ */
+ EAttribute getXSDXPathDefinition_Value();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xsd.XSDXPathDefinition#getAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Annotation</em>'.
+ * @see org.eclipse.xsd.XSDXPathDefinition#getAnnotation()
+ * @see #getXSDXPathDefinition()
+ * @generated
+ */
+ EReference getXSDXPathDefinition_Annotation();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDAttributeUseCategory <em>Attribute Use Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Attribute Use Category</em>'.
+ * @see org.eclipse.xsd.XSDAttributeUseCategory
+ * @generated
+ */
+ EEnum getXSDAttributeUseCategory();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDCardinality <em>Cardinality</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Cardinality</em>'.
+ * @see org.eclipse.xsd.XSDCardinality
+ * @generated
+ */
+ EEnum getXSDCardinality();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDComplexFinal <em>Complex Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Complex Final</em>'.
+ * @see org.eclipse.xsd.XSDComplexFinal
+ * @generated
+ */
+ EEnum getXSDComplexFinal();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDCompositor <em>Compositor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Compositor</em>'.
+ * @see org.eclipse.xsd.XSDCompositor
+ * @generated
+ */
+ EEnum getXSDCompositor();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDConstraint <em>Constraint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Constraint</em>'.
+ * @see org.eclipse.xsd.XSDConstraint
+ * @generated
+ */
+ EEnum getXSDConstraint();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDContentTypeCategory <em>Content Type Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Content Type Category</em>'.
+ * @see org.eclipse.xsd.XSDContentTypeCategory
+ * @generated
+ */
+ EEnum getXSDContentTypeCategory();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDDerivationMethod <em>Derivation Method</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Derivation Method</em>'.
+ * @see org.eclipse.xsd.XSDDerivationMethod
+ * @generated
+ */
+ EEnum getXSDDerivationMethod();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDDiagnosticSeverity <em>Diagnostic Severity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Diagnostic Severity</em>'.
+ * @see org.eclipse.xsd.XSDDiagnosticSeverity
+ * @generated
+ */
+ EEnum getXSDDiagnosticSeverity();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDDisallowedSubstitutions <em>Disallowed Substitutions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Disallowed Substitutions</em>'.
+ * @see org.eclipse.xsd.XSDDisallowedSubstitutions
+ * @generated
+ */
+ EEnum getXSDDisallowedSubstitutions();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDForm <em>Form</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Form</em>'.
+ * @see org.eclipse.xsd.XSDForm
+ * @generated
+ */
+ EEnum getXSDForm();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDIdentityConstraintCategory <em>Identity Constraint Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Identity Constraint Category</em>'.
+ * @see org.eclipse.xsd.XSDIdentityConstraintCategory
+ * @generated
+ */
+ EEnum getXSDIdentityConstraintCategory();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDNamespaceConstraintCategory <em>Namespace Constraint Category</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Namespace Constraint Category</em>'.
+ * @see org.eclipse.xsd.XSDNamespaceConstraintCategory
+ * @generated
+ */
+ EEnum getXSDNamespaceConstraintCategory();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDOrdered <em>Ordered</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Ordered</em>'.
+ * @see org.eclipse.xsd.XSDOrdered
+ * @generated
+ */
+ EEnum getXSDOrdered();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDProcessContents <em>Process Contents</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Process Contents</em>'.
+ * @see org.eclipse.xsd.XSDProcessContents
+ * @generated
+ */
+ EEnum getXSDProcessContents();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDProhibitedSubstitutions <em>Prohibited Substitutions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Prohibited Substitutions</em>'.
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @generated
+ */
+ EEnum getXSDProhibitedSubstitutions();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDSimpleFinal <em>Simple Final</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Simple Final</em>'.
+ * @see org.eclipse.xsd.XSDSimpleFinal
+ * @generated
+ */
+ EEnum getXSDSimpleFinal();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDSubstitutionGroupExclusions <em>Substitution Group Exclusions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Substitution Group Exclusions</em>'.
+ * @see org.eclipse.xsd.XSDSubstitutionGroupExclusions
+ * @generated
+ */
+ EEnum getXSDSubstitutionGroupExclusions();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDVariety <em>Variety</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Variety</em>'.
+ * @see org.eclipse.xsd.XSDVariety
+ * @generated
+ */
+ EEnum getXSDVariety();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDWhiteSpace <em>White Space</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>White Space</em>'.
+ * @see org.eclipse.xsd.XSDWhiteSpace
+ * @generated
+ */
+ EEnum getXSDWhiteSpace();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.xsd.XSDXPathVariety <em>XPath Variety</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>XPath Variety</em>'.
+ * @see org.eclipse.xsd.XSDXPathVariety
+ * @generated
+ */
+ EEnum getXSDXPathVariety();
+
+ /**
+ * Returns the meta object for data type '{@link org.w3c.dom.Attr <em>DOM Attr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>DOM Attr</em>'.
+ * @see org.w3c.dom.Attr
+ * @model instanceClass="org.w3c.dom.Attr"
+ * @generated
+ */
+ EDataType getDOMAttr();
+
+ /**
+ * Returns the meta object for data type '{@link org.w3c.dom.Document <em>DOM Document</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>DOM Document</em>'.
+ * @see org.w3c.dom.Document
+ * @model instanceClass="org.w3c.dom.Document"
+ * @generated
+ */
+ EDataType getDOMDocument();
+
+ /**
+ * Returns the meta object for data type '{@link org.w3c.dom.Element <em>DOM Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>DOM Element</em>'.
+ * @see org.w3c.dom.Element
+ * @model instanceClass="org.w3c.dom.Element"
+ * @generated
+ */
+ EDataType getDOMElement();
+
+ /**
+ * Returns the meta object for data type '{@link org.w3c.dom.Node <em>DOM Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>DOM Node</em>'.
+ * @see org.w3c.dom.Node
+ * @model instanceClass="org.w3c.dom.Node"
+ * @generated
+ */
+ EDataType getDOMNode();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Object <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Value</em>'.
+ * @see java.lang.Object
+ * @model instanceClass="java.lang.Object"
+ * @generated
+ */
+ EDataType getValue();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ XSDFactory getXSDFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDAnnotationImpl <em>Annotation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAnnotationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAnnotation()
+ * @generated
+ */
+ EClass XSD_ANNOTATION = eINSTANCE.getXSDAnnotation();
+
+ /**
+ * The meta object literal for the '<em><b>Application Information</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ANNOTATION__APPLICATION_INFORMATION = eINSTANCE.getXSDAnnotation_ApplicationInformation();
+
+ /**
+ * The meta object literal for the '<em><b>User Information</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ANNOTATION__USER_INFORMATION = eINSTANCE.getXSDAnnotation_UserInformation();
+
+ /**
+ * The meta object literal for the '<em><b>Attributes</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ANNOTATION__ATTRIBUTES = eINSTANCE.getXSDAnnotation_Attributes();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl <em>Attribute Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeDeclarationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeDeclaration()
+ * @generated
+ */
+ EClass XSD_ATTRIBUTE_DECLARATION = eINSTANCE.getXSDAttributeDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Declaration Reference</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_DECLARATION__ATTRIBUTE_DECLARATION_REFERENCE = eINSTANCE.getXSDAttributeDeclaration_AttributeDeclarationReference();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_DECLARATION__ANNOTATION = eINSTANCE.getXSDAttributeDeclaration_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Anonymous Type Definition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION = eINSTANCE.getXSDAttributeDeclaration_AnonymousTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION = eINSTANCE.getXSDAttributeDeclaration_TypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Attribute Declaration</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION = eINSTANCE.getXSDAttributeDeclaration_ResolvedAttributeDeclaration();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDAttributeGroupContentImpl <em>Attribute Group Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeGroupContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeGroupContent()
+ * @generated
+ */
+ EClass XSD_ATTRIBUTE_GROUP_CONTENT = eINSTANCE.getXSDAttributeGroupContent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl <em>Attribute Group Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeGroupDefinition()
+ * @generated
+ */
+ EClass XSD_ATTRIBUTE_GROUP_DEFINITION = eINSTANCE.getXSDAttributeGroupDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Group Definition Reference</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_GROUP_DEFINITION_REFERENCE = eINSTANCE.getXSDAttributeGroupDefinition_AttributeGroupDefinitionReference();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION = eINSTANCE.getXSDAttributeGroupDefinition_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS = eINSTANCE.getXSDAttributeGroupDefinition_Contents();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Uses</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES = eINSTANCE.getXSDAttributeGroupDefinition_AttributeUses();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Wildcard Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT = eINSTANCE.getXSDAttributeGroupDefinition_AttributeWildcardContent();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Wildcard</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD = eINSTANCE.getXSDAttributeGroupDefinition_AttributeWildcard();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Attribute Group Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION = eINSTANCE.getXSDAttributeGroupDefinition_ResolvedAttributeGroupDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Synthetic Wildcard</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD = eINSTANCE.getXSDAttributeGroupDefinition_SyntheticWildcard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDAttributeUseImpl <em>Attribute Use</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDAttributeUseImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeUse()
+ * @generated
+ */
+ EClass XSD_ATTRIBUTE_USE = eINSTANCE.getXSDAttributeUse();
+
+ /**
+ * The meta object literal for the '<em><b>Required</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_USE__REQUIRED = eINSTANCE.getXSDAttributeUse_Required();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_USE__VALUE = eINSTANCE.getXSDAttributeUse_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Constraint</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_USE__CONSTRAINT = eINSTANCE.getXSDAttributeUse_Constraint();
+
+ /**
+ * The meta object literal for the '<em><b>Use</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_USE__USE = eINSTANCE.getXSDAttributeUse_Use();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ATTRIBUTE_USE__LEXICAL_VALUE = eINSTANCE.getXSDAttributeUse_LexicalValue();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Declaration</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION = eINSTANCE.getXSDAttributeUse_AttributeDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ATTRIBUTE_USE__CONTENT = eINSTANCE.getXSDAttributeUse_Content();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDBoundedFacetImpl <em>Bounded Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDBoundedFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDBoundedFacet()
+ * @generated
+ */
+ EClass XSD_BOUNDED_FACET = eINSTANCE.getXSDBoundedFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_BOUNDED_FACET__VALUE = eINSTANCE.getXSDBoundedFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDCardinalityFacetImpl <em>Cardinality Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDCardinalityFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDCardinalityFacet()
+ * @generated
+ */
+ EClass XSD_CARDINALITY_FACET = eINSTANCE.getXSDCardinalityFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_CARDINALITY_FACET__VALUE = eINSTANCE.getXSDCardinalityFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDComplexTypeContentImpl <em>Complex Type Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDComplexTypeContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComplexTypeContent()
+ * @generated
+ */
+ EClass XSD_COMPLEX_TYPE_CONTENT = eINSTANCE.getXSDComplexTypeContent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl <em>Complex Type Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComplexTypeDefinition()
+ * @generated
+ */
+ EClass XSD_COMPLEX_TYPE_DEFINITION = eINSTANCE.getXSDComplexTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Derivation Method</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD = eINSTANCE.getXSDComplexTypeDefinition_DerivationMethod();
+
+ /**
+ * The meta object literal for the '<em><b>Final</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__FINAL = eINSTANCE.getXSDComplexTypeDefinition_Final();
+
+ /**
+ * The meta object literal for the '<em><b>Abstract</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT = eINSTANCE.getXSDComplexTypeDefinition_Abstract();
+
+ /**
+ * The meta object literal for the '<em><b>Content Type Category</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY = eINSTANCE.getXSDComplexTypeDefinition_ContentTypeCategory();
+
+ /**
+ * The meta object literal for the '<em><b>Prohibited Substitutions</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS = eINSTANCE.getXSDComplexTypeDefinition_ProhibitedSubstitutions();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Final</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL = eINSTANCE.getXSDComplexTypeDefinition_LexicalFinal();
+
+ /**
+ * The meta object literal for the '<em><b>Block</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__BLOCK = eINSTANCE.getXSDComplexTypeDefinition_Block();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_COMPLEX_TYPE_DEFINITION__MIXED = eINSTANCE.getXSDComplexTypeDefinition_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>Content Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION = eINSTANCE.getXSDComplexTypeDefinition_ContentAnnotation();
+
+ /**
+ * The meta object literal for the '<em><b>Base Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION = eINSTANCE.getXSDComplexTypeDefinition_BaseTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__CONTENT = eINSTANCE.getXSDComplexTypeDefinition_Content();
+
+ /**
+ * The meta object literal for the '<em><b>Content Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE = eINSTANCE.getXSDComplexTypeDefinition_ContentType();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Uses</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES = eINSTANCE.getXSDComplexTypeDefinition_AttributeUses();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS = eINSTANCE.getXSDComplexTypeDefinition_AttributeContents();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Wildcard</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD = eINSTANCE.getXSDComplexTypeDefinition_AttributeWildcard();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Wildcard Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT = eINSTANCE.getXSDComplexTypeDefinition_AttributeWildcardContent();
+
+ /**
+ * The meta object literal for the '<em><b>Root Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__ROOT_TYPE_DEFINITION = eINSTANCE.getXSDComplexTypeDefinition_RootTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Synthetic Particle</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE = eINSTANCE.getXSDComplexTypeDefinition_SyntheticParticle();
+
+ /**
+ * The meta object literal for the '<em><b>Synthetic Wildcard</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD = eINSTANCE.getXSDComplexTypeDefinition_SyntheticWildcard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDComponentImpl <em>Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComponent()
+ * @generated
+ */
+ EClass XSD_COMPONENT = eINSTANCE.getXSDComponent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl <em>Concrete Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDConcreteComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDConcreteComponent()
+ * @generated
+ */
+ EClass XSD_CONCRETE_COMPONENT = eINSTANCE.getXSDConcreteComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Element</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_CONCRETE_COMPONENT__ELEMENT = eINSTANCE.getXSDConcreteComponent_Element();
+
+ /**
+ * The meta object literal for the '<em><b>Container</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_CONCRETE_COMPONENT__CONTAINER = eINSTANCE.getXSDConcreteComponent_Container();
+
+ /**
+ * The meta object literal for the '<em><b>Root Container</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_CONCRETE_COMPONENT__ROOT_CONTAINER = eINSTANCE.getXSDConcreteComponent_RootContainer();
+
+ /**
+ * The meta object literal for the '<em><b>Schema</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_CONCRETE_COMPONENT__SCHEMA = eINSTANCE.getXSDConcreteComponent_Schema();
+
+ /**
+ * The meta object literal for the '<em><b>Diagnostics</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_CONCRETE_COMPONENT__DIAGNOSTICS = eINSTANCE.getXSDConcreteComponent_Diagnostics();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDConstrainingFacetImpl <em>Constraining Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDConstrainingFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDConstrainingFacet()
+ * @generated
+ */
+ EClass XSD_CONSTRAINING_FACET = eINSTANCE.getXSDConstrainingFacet();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDDiagnosticImpl <em>Diagnostic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDDiagnosticImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDiagnostic()
+ * @generated
+ */
+ EClass XSD_DIAGNOSTIC = eINSTANCE.getXSDDiagnostic();
+
+ /**
+ * The meta object literal for the '<em><b>Severity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__SEVERITY = eINSTANCE.getXSDDiagnostic_Severity();
+
+ /**
+ * The meta object literal for the '<em><b>Message</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__MESSAGE = eINSTANCE.getXSDDiagnostic_Message();
+
+ /**
+ * The meta object literal for the '<em><b>Location URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__LOCATION_URI = eINSTANCE.getXSDDiagnostic_LocationURI();
+
+ /**
+ * The meta object literal for the '<em><b>Line</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__LINE = eINSTANCE.getXSDDiagnostic_Line();
+
+ /**
+ * The meta object literal for the '<em><b>Column</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__COLUMN = eINSTANCE.getXSDDiagnostic_Column();
+
+ /**
+ * The meta object literal for the '<em><b>Node</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__NODE = eINSTANCE.getXSDDiagnostic_Node();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__ANNOTATION_URI = eINSTANCE.getXSDDiagnostic_AnnotationURI();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__KEY = eINSTANCE.getXSDDiagnostic_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Substitutions</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_DIAGNOSTIC__SUBSTITUTIONS = eINSTANCE.getXSDDiagnostic_Substitutions();
+
+ /**
+ * The meta object literal for the '<em><b>Components</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_DIAGNOSTIC__COMPONENTS = eINSTANCE.getXSDDiagnostic_Components();
+
+ /**
+ * The meta object literal for the '<em><b>Primary Component</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_DIAGNOSTIC__PRIMARY_COMPONENT = eINSTANCE.getXSDDiagnostic_PrimaryComponent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl <em>Element Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDElementDeclarationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDElementDeclaration()
+ * @generated
+ */
+ EClass XSD_ELEMENT_DECLARATION = eINSTANCE.getXSDElementDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Nillable</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__NILLABLE = eINSTANCE.getXSDElementDeclaration_Nillable();
+
+ /**
+ * The meta object literal for the '<em><b>Disallowed Substitutions</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS = eINSTANCE.getXSDElementDeclaration_DisallowedSubstitutions();
+
+ /**
+ * The meta object literal for the '<em><b>Substitution Group Exclusions</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS = eINSTANCE.getXSDElementDeclaration_SubstitutionGroupExclusions();
+
+ /**
+ * The meta object literal for the '<em><b>Abstract</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__ABSTRACT = eINSTANCE.getXSDElementDeclaration_Abstract();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Final</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__LEXICAL_FINAL = eINSTANCE.getXSDElementDeclaration_LexicalFinal();
+
+ /**
+ * The meta object literal for the '<em><b>Block</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__BLOCK = eINSTANCE.getXSDElementDeclaration_Block();
+
+ /**
+ * The meta object literal for the '<em><b>Element Declaration Reference</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__ELEMENT_DECLARATION_REFERENCE = eINSTANCE.getXSDElementDeclaration_ElementDeclarationReference();
+
+ /**
+ * The meta object literal for the '<em><b>Circular</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ELEMENT_DECLARATION__CIRCULAR = eINSTANCE.getXSDElementDeclaration_Circular();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__ANNOTATION = eINSTANCE.getXSDElementDeclaration_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Anonymous Type Definition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION = eINSTANCE.getXSDElementDeclaration_AnonymousTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__TYPE_DEFINITION = eINSTANCE.getXSDElementDeclaration_TypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Identity Constraint Definitions</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS = eINSTANCE.getXSDElementDeclaration_IdentityConstraintDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Element Declaration</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION = eINSTANCE.getXSDElementDeclaration_ResolvedElementDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Substitution Group Affiliation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION = eINSTANCE.getXSDElementDeclaration_SubstitutionGroupAffiliation();
+
+ /**
+ * The meta object literal for the '<em><b>Substitution Group</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP = eINSTANCE.getXSDElementDeclaration_SubstitutionGroup();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDEnumerationFacetImpl <em>Enumeration Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDEnumerationFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDEnumerationFacet()
+ * @generated
+ */
+ EClass XSD_ENUMERATION_FACET = eINSTANCE.getXSDEnumerationFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ENUMERATION_FACET__VALUE = eINSTANCE.getXSDEnumerationFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDFacetImpl <em>Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFacet()
+ * @generated
+ */
+ EClass XSD_FACET = eINSTANCE.getXSDFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FACET__LEXICAL_VALUE = eINSTANCE.getXSDFacet_LexicalValue();
+
+ /**
+ * The meta object literal for the '<em><b>Facet Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FACET__FACET_NAME = eINSTANCE.getXSDFacet_FacetName();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FACET__EFFECTIVE_VALUE = eINSTANCE.getXSDFacet_EffectiveValue();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_FACET__ANNOTATION = eINSTANCE.getXSDFacet_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Simple Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_FACET__SIMPLE_TYPE_DEFINITION = eINSTANCE.getXSDFacet_SimpleTypeDefinition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDFeatureImpl <em>Feature</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFeatureImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFeature()
+ * @generated
+ */
+ EClass XSD_FEATURE = eINSTANCE.getXSDFeature();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FEATURE__VALUE = eINSTANCE.getXSDFeature_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Constraint</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FEATURE__CONSTRAINT = eINSTANCE.getXSDFeature_Constraint();
+
+ /**
+ * The meta object literal for the '<em><b>Form</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FEATURE__FORM = eINSTANCE.getXSDFeature_Form();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FEATURE__LEXICAL_VALUE = eINSTANCE.getXSDFeature_LexicalValue();
+
+ /**
+ * The meta object literal for the '<em><b>Global</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FEATURE__GLOBAL = eINSTANCE.getXSDFeature_Global();
+
+ /**
+ * The meta object literal for the '<em><b>Feature Reference</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FEATURE__FEATURE_REFERENCE = eINSTANCE.getXSDFeature_FeatureReference();
+
+ /**
+ * The meta object literal for the '<em><b>Scope</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_FEATURE__SCOPE = eINSTANCE.getXSDFeature_Scope();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Feature</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_FEATURE__RESOLVED_FEATURE = eINSTANCE.getXSDFeature_ResolvedFeature();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_FEATURE__TYPE = eINSTANCE.getXSDFeature_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDFixedFacetImpl <em>Fixed Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFixedFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFixedFacet()
+ * @generated
+ */
+ EClass XSD_FIXED_FACET = eINSTANCE.getXSDFixedFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Fixed</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FIXED_FACET__FIXED = eINSTANCE.getXSDFixedFacet_Fixed();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDFractionDigitsFacetImpl <em>Fraction Digits Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFractionDigitsFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFractionDigitsFacet()
+ * @generated
+ */
+ EClass XSD_FRACTION_DIGITS_FACET = eINSTANCE.getXSDFractionDigitsFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_FRACTION_DIGITS_FACET__VALUE = eINSTANCE.getXSDFractionDigitsFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDFundamentalFacetImpl <em>Fundamental Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDFundamentalFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDFundamentalFacet()
+ * @generated
+ */
+ EClass XSD_FUNDAMENTAL_FACET = eINSTANCE.getXSDFundamentalFacet();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl <em>Identity Constraint Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDIdentityConstraintDefinition()
+ * @generated
+ */
+ EClass XSD_IDENTITY_CONSTRAINT_DEFINITION = eINSTANCE.getXSDIdentityConstraintDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Identity Constraint Category</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY = eINSTANCE.getXSDIdentityConstraintDefinition_IdentityConstraintCategory();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION = eINSTANCE.getXSDIdentityConstraintDefinition_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Referenced Key</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY = eINSTANCE.getXSDIdentityConstraintDefinition_ReferencedKey();
+
+ /**
+ * The meta object literal for the '<em><b>Selector</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR = eINSTANCE.getXSDIdentityConstraintDefinition_Selector();
+
+ /**
+ * The meta object literal for the '<em><b>Fields</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS = eINSTANCE.getXSDIdentityConstraintDefinition_Fields();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDImportImpl <em>Import</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDImportImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDImport()
+ * @generated
+ */
+ EClass XSD_IMPORT = eINSTANCE.getXSDImport();
+
+ /**
+ * The meta object literal for the '<em><b>Namespace</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_IMPORT__NAMESPACE = eINSTANCE.getXSDImport_Namespace();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_IMPORT__ANNOTATION = eINSTANCE.getXSDImport_Annotation();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDIncludeImpl <em>Include</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDIncludeImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDInclude()
+ * @generated
+ */
+ EClass XSD_INCLUDE = eINSTANCE.getXSDInclude();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_INCLUDE__ANNOTATION = eINSTANCE.getXSDInclude_Annotation();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDLengthFacetImpl <em>Length Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDLengthFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDLengthFacet()
+ * @generated
+ */
+ EClass XSD_LENGTH_FACET = eINSTANCE.getXSDLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_LENGTH_FACET__VALUE = eINSTANCE.getXSDLengthFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMaxExclusiveFacetImpl <em>Max Exclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxExclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxExclusiveFacet()
+ * @generated
+ */
+ EClass XSD_MAX_EXCLUSIVE_FACET = eINSTANCE.getXSDMaxExclusiveFacet();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMaxFacetImpl <em>Max Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxFacet()
+ * @generated
+ */
+ EClass XSD_MAX_FACET = eINSTANCE.getXSDMaxFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MAX_FACET__VALUE = eINSTANCE.getXSDMaxFacet_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Inclusive</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MAX_FACET__INCLUSIVE = eINSTANCE.getXSDMaxFacet_Inclusive();
+
+ /**
+ * The meta object literal for the '<em><b>Exclusive</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MAX_FACET__EXCLUSIVE = eINSTANCE.getXSDMaxFacet_Exclusive();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMaxInclusiveFacetImpl <em>Max Inclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxInclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxInclusiveFacet()
+ * @generated
+ */
+ EClass XSD_MAX_INCLUSIVE_FACET = eINSTANCE.getXSDMaxInclusiveFacet();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMaxLengthFacetImpl <em>Max Length Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMaxLengthFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMaxLengthFacet()
+ * @generated
+ */
+ EClass XSD_MAX_LENGTH_FACET = eINSTANCE.getXSDMaxLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MAX_LENGTH_FACET__VALUE = eINSTANCE.getXSDMaxLengthFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMinExclusiveFacetImpl <em>Min Exclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinExclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinExclusiveFacet()
+ * @generated
+ */
+ EClass XSD_MIN_EXCLUSIVE_FACET = eINSTANCE.getXSDMinExclusiveFacet();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMinFacetImpl <em>Min Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinFacet()
+ * @generated
+ */
+ EClass XSD_MIN_FACET = eINSTANCE.getXSDMinFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MIN_FACET__VALUE = eINSTANCE.getXSDMinFacet_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Inclusive</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MIN_FACET__INCLUSIVE = eINSTANCE.getXSDMinFacet_Inclusive();
+
+ /**
+ * The meta object literal for the '<em><b>Exclusive</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MIN_FACET__EXCLUSIVE = eINSTANCE.getXSDMinFacet_Exclusive();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMinInclusiveFacetImpl <em>Min Inclusive Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinInclusiveFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinInclusiveFacet()
+ * @generated
+ */
+ EClass XSD_MIN_INCLUSIVE_FACET = eINSTANCE.getXSDMinInclusiveFacet();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDMinLengthFacetImpl <em>Min Length Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDMinLengthFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDMinLengthFacet()
+ * @generated
+ */
+ EClass XSD_MIN_LENGTH_FACET = eINSTANCE.getXSDMinLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MIN_LENGTH_FACET__VALUE = eINSTANCE.getXSDMinLengthFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDModelGroupImpl <em>Model Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDModelGroupImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDModelGroup()
+ * @generated
+ */
+ EClass XSD_MODEL_GROUP = eINSTANCE.getXSDModelGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Compositor</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MODEL_GROUP__COMPOSITOR = eINSTANCE.getXSDModelGroup_Compositor();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_MODEL_GROUP__ANNOTATION = eINSTANCE.getXSDModelGroup_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_MODEL_GROUP__CONTENTS = eINSTANCE.getXSDModelGroup_Contents();
+
+ /**
+ * The meta object literal for the '<em><b>Particles</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_MODEL_GROUP__PARTICLES = eINSTANCE.getXSDModelGroup_Particles();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl <em>Model Group Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDModelGroupDefinition()
+ * @generated
+ */
+ EClass XSD_MODEL_GROUP_DEFINITION = eINSTANCE.getXSDModelGroupDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Model Group Definition Reference</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP_DEFINITION_REFERENCE = eINSTANCE.getXSDModelGroupDefinition_ModelGroupDefinitionReference();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_MODEL_GROUP_DEFINITION__ANNOTATION = eINSTANCE.getXSDModelGroupDefinition_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Model Group</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP = eINSTANCE.getXSDModelGroupDefinition_ModelGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Model Group Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION = eINSTANCE.getXSDModelGroupDefinition_ResolvedModelGroupDefinition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDNamedComponentImpl <em>Named Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDNamedComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNamedComponent()
+ * @generated
+ */
+ EClass XSD_NAMED_COMPONENT = eINSTANCE.getXSDNamedComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NAMED_COMPONENT__NAME = eINSTANCE.getXSDNamedComponent_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Target Namespace</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NAMED_COMPONENT__TARGET_NAMESPACE = eINSTANCE.getXSDNamedComponent_TargetNamespace();
+
+ /**
+ * The meta object literal for the '<em><b>Alias Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NAMED_COMPONENT__ALIAS_NAME = eINSTANCE.getXSDNamedComponent_AliasName();
+
+ /**
+ * The meta object literal for the '<em><b>URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NAMED_COMPONENT__URI = eINSTANCE.getXSDNamedComponent_URI();
+
+ /**
+ * The meta object literal for the '<em><b>Alias URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NAMED_COMPONENT__ALIAS_URI = eINSTANCE.getXSDNamedComponent_AliasURI();
+
+ /**
+ * The meta object literal for the '<em><b>QName</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NAMED_COMPONENT__QNAME = eINSTANCE.getXSDNamedComponent_QName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDNotationDeclarationImpl <em>Notation Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDNotationDeclarationImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNotationDeclaration()
+ * @generated
+ */
+ EClass XSD_NOTATION_DECLARATION = eINSTANCE.getXSDNotationDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>System Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER = eINSTANCE.getXSDNotationDeclaration_SystemIdentifier();
+
+ /**
+ * The meta object literal for the '<em><b>Public Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER = eINSTANCE.getXSDNotationDeclaration_PublicIdentifier();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_NOTATION_DECLARATION__ANNOTATION = eINSTANCE.getXSDNotationDeclaration_Annotation();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDNumericFacetImpl <em>Numeric Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDNumericFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNumericFacet()
+ * @generated
+ */
+ EClass XSD_NUMERIC_FACET = eINSTANCE.getXSDNumericFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_NUMERIC_FACET__VALUE = eINSTANCE.getXSDNumericFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDOrderedFacetImpl <em>Ordered Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDOrderedFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDOrderedFacet()
+ * @generated
+ */
+ EClass XSD_ORDERED_FACET = eINSTANCE.getXSDOrderedFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_ORDERED_FACET__VALUE = eINSTANCE.getXSDOrderedFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDParticleImpl <em>Particle</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDParticleImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDParticle()
+ * @generated
+ */
+ EClass XSD_PARTICLE = eINSTANCE.getXSDParticle();
+
+ /**
+ * The meta object literal for the '<em><b>Min Occurs</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_PARTICLE__MIN_OCCURS = eINSTANCE.getXSDParticle_MinOccurs();
+
+ /**
+ * The meta object literal for the '<em><b>Max Occurs</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_PARTICLE__MAX_OCCURS = eINSTANCE.getXSDParticle_MaxOccurs();
+
+ /**
+ * The meta object literal for the '<em><b>Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_PARTICLE__CONTENT = eINSTANCE.getXSDParticle_Content();
+
+ /**
+ * The meta object literal for the '<em><b>Term</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_PARTICLE__TERM = eINSTANCE.getXSDParticle_Term();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDParticleContentImpl <em>Particle Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDParticleContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDParticleContent()
+ * @generated
+ */
+ EClass XSD_PARTICLE_CONTENT = eINSTANCE.getXSDParticleContent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDPatternFacetImpl <em>Pattern Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDPatternFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDPatternFacet()
+ * @generated
+ */
+ EClass XSD_PATTERN_FACET = eINSTANCE.getXSDPatternFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_PATTERN_FACET__VALUE = eINSTANCE.getXSDPatternFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDRedefinableComponentImpl <em>Redefinable Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRedefinableComponentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRedefinableComponent()
+ * @generated
+ */
+ EClass XSD_REDEFINABLE_COMPONENT = eINSTANCE.getXSDRedefinableComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Circular</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_REDEFINABLE_COMPONENT__CIRCULAR = eINSTANCE.getXSDRedefinableComponent_Circular();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDRedefineContentImpl <em>Redefine Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRedefineContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRedefineContent()
+ * @generated
+ */
+ EClass XSD_REDEFINE_CONTENT = eINSTANCE.getXSDRedefineContent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDRedefineImpl <em>Redefine</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRedefineImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRedefine()
+ * @generated
+ */
+ EClass XSD_REDEFINE = eINSTANCE.getXSDRedefine();
+
+ /**
+ * The meta object literal for the '<em><b>Annotations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_REDEFINE__ANNOTATIONS = eINSTANCE.getXSDRedefine_Annotations();
+
+ /**
+ * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_REDEFINE__CONTENTS = eINSTANCE.getXSDRedefine_Contents();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDRepeatableFacetImpl <em>Repeatable Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDRepeatableFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDRepeatableFacet()
+ * @generated
+ */
+ EClass XSD_REPEATABLE_FACET = eINSTANCE.getXSDRepeatableFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Annotations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_REPEATABLE_FACET__ANNOTATIONS = eINSTANCE.getXSDRepeatableFacet_Annotations();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDSchemaImpl <em>Schema</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchema()
+ * @generated
+ */
+ EClass XSD_SCHEMA = eINSTANCE.getXSDSchema();
+
+ /**
+ * The meta object literal for the '<em><b>Document</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__DOCUMENT = eINSTANCE.getXSDSchema_Document();
+
+ /**
+ * The meta object literal for the '<em><b>Schema Location</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__SCHEMA_LOCATION = eINSTANCE.getXSDSchema_SchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Target Namespace</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__TARGET_NAMESPACE = eINSTANCE.getXSDSchema_TargetNamespace();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Form Default</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT = eINSTANCE.getXSDSchema_AttributeFormDefault();
+
+ /**
+ * The meta object literal for the '<em><b>Element Form Default</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__ELEMENT_FORM_DEFAULT = eINSTANCE.getXSDSchema_ElementFormDefault();
+
+ /**
+ * The meta object literal for the '<em><b>Final Default</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__FINAL_DEFAULT = eINSTANCE.getXSDSchema_FinalDefault();
+
+ /**
+ * The meta object literal for the '<em><b>Block Default</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__BLOCK_DEFAULT = eINSTANCE.getXSDSchema_BlockDefault();
+
+ /**
+ * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA__VERSION = eINSTANCE.getXSDSchema_Version();
+
+ /**
+ * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__CONTENTS = eINSTANCE.getXSDSchema_Contents();
+
+ /**
+ * The meta object literal for the '<em><b>Element Declarations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ELEMENT_DECLARATIONS = eINSTANCE.getXSDSchema_ElementDeclarations();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Declarations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ATTRIBUTE_DECLARATIONS = eINSTANCE.getXSDSchema_AttributeDeclarations();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Group Definitions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS = eINSTANCE.getXSDSchema_AttributeGroupDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Type Definitions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__TYPE_DEFINITIONS = eINSTANCE.getXSDSchema_TypeDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Model Group Definitions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__MODEL_GROUP_DEFINITIONS = eINSTANCE.getXSDSchema_ModelGroupDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Identity Constraint Definitions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS = eINSTANCE.getXSDSchema_IdentityConstraintDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Notation Declarations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__NOTATION_DECLARATIONS = eINSTANCE.getXSDSchema_NotationDeclarations();
+
+ /**
+ * The meta object literal for the '<em><b>Annotations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ANNOTATIONS = eINSTANCE.getXSDSchema_Annotations();
+
+ /**
+ * The meta object literal for the '<em><b>All Diagnostics</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ALL_DIAGNOSTICS = eINSTANCE.getXSDSchema_AllDiagnostics();
+
+ /**
+ * The meta object literal for the '<em><b>Referencing Directives</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__REFERENCING_DIRECTIVES = eINSTANCE.getXSDSchema_ReferencingDirectives();
+
+ /**
+ * The meta object literal for the '<em><b>Root Version</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ROOT_VERSION = eINSTANCE.getXSDSchema_RootVersion();
+
+ /**
+ * The meta object literal for the '<em><b>Original Version</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__ORIGINAL_VERSION = eINSTANCE.getXSDSchema_OriginalVersion();
+
+ /**
+ * The meta object literal for the '<em><b>Incorporated Versions</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__INCORPORATED_VERSIONS = eINSTANCE.getXSDSchema_IncorporatedVersions();
+
+ /**
+ * The meta object literal for the '<em><b>Schema For Schema</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA__SCHEMA_FOR_SCHEMA = eINSTANCE.getXSDSchema_SchemaForSchema();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDSchemaCompositorImpl <em>Schema Compositor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaCompositorImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchemaCompositor()
+ * @generated
+ */
+ EClass XSD_SCHEMA_COMPOSITOR = eINSTANCE.getXSDSchemaCompositor();
+
+ /**
+ * The meta object literal for the '<em><b>Incorporated Schema</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA = eINSTANCE.getXSDSchemaCompositor_IncorporatedSchema();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDSchemaContentImpl <em>Schema Content</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaContentImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchemaContent()
+ * @generated
+ */
+ EClass XSD_SCHEMA_CONTENT = eINSTANCE.getXSDSchemaContent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDSchemaDirectiveImpl <em>Schema Directive</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSchemaDirectiveImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSchemaDirective()
+ * @generated
+ */
+ EClass XSD_SCHEMA_DIRECTIVE = eINSTANCE.getXSDSchemaDirective();
+
+ /**
+ * The meta object literal for the '<em><b>Schema Location</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION = eINSTANCE.getXSDSchemaDirective_SchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Schema</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA = eINSTANCE.getXSDSchemaDirective_ResolvedSchema();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDScopeImpl <em>Scope</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDScopeImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDScope()
+ * @generated
+ */
+ EClass XSD_SCOPE = eINSTANCE.getXSDScope();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl <em>Simple Type Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSimpleTypeDefinition()
+ * @generated
+ */
+ EClass XSD_SIMPLE_TYPE_DEFINITION = eINSTANCE.getXSDSimpleTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Variety</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SIMPLE_TYPE_DEFINITION__VARIETY = eINSTANCE.getXSDSimpleTypeDefinition_Variety();
+
+ /**
+ * The meta object literal for the '<em><b>Final</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SIMPLE_TYPE_DEFINITION__FINAL = eINSTANCE.getXSDSimpleTypeDefinition_Final();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Final</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL = eINSTANCE.getXSDSimpleTypeDefinition_LexicalFinal();
+
+ /**
+ * The meta object literal for the '<em><b>Valid Facets</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS = eINSTANCE.getXSDSimpleTypeDefinition_ValidFacets();
+
+ /**
+ * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__CONTENTS = eINSTANCE.getXSDSimpleTypeDefinition_Contents();
+
+ /**
+ * The meta object literal for the '<em><b>Facet Contents</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS = eINSTANCE.getXSDSimpleTypeDefinition_FacetContents();
+
+ /**
+ * The meta object literal for the '<em><b>Facets</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__FACETS = eINSTANCE.getXSDSimpleTypeDefinition_Facets();
+
+ /**
+ * The meta object literal for the '<em><b>Member Type Definitions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS = eINSTANCE.getXSDSimpleTypeDefinition_MemberTypeDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Fundamental Facets</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS = eINSTANCE.getXSDSimpleTypeDefinition_FundamentalFacets();
+
+ /**
+ * The meta object literal for the '<em><b>Base Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION = eINSTANCE.getXSDSimpleTypeDefinition_BaseTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Primitive Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION = eINSTANCE.getXSDSimpleTypeDefinition_PrimitiveTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Item Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION = eINSTANCE.getXSDSimpleTypeDefinition_ItemTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Root Type Definition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__ROOT_TYPE_DEFINITION = eINSTANCE.getXSDSimpleTypeDefinition_RootTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Min Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MIN_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MinFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Max Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MAX_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MaxFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Max Inclusive Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MAX_INCLUSIVE_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MaxInclusiveFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Min Inclusive Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MIN_INCLUSIVE_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MinInclusiveFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Min Exclusive Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MIN_EXCLUSIVE_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MinExclusiveFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Max Exclusive Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MAX_EXCLUSIVE_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MaxExclusiveFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Length Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__LENGTH_FACET = eINSTANCE.getXSDSimpleTypeDefinition_LengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>White Space Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__WHITE_SPACE_FACET = eINSTANCE.getXSDSimpleTypeDefinition_WhiteSpaceFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Enumeration Facets</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__ENUMERATION_FACETS = eINSTANCE.getXSDSimpleTypeDefinition_EnumerationFacets();
+
+ /**
+ * The meta object literal for the '<em><b>Pattern Facets</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__PATTERN_FACETS = eINSTANCE.getXSDSimpleTypeDefinition_PatternFacets();
+
+ /**
+ * The meta object literal for the '<em><b>Cardinality Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__CARDINALITY_FACET = eINSTANCE.getXSDSimpleTypeDefinition_CardinalityFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Numeric Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__NUMERIC_FACET = eINSTANCE.getXSDSimpleTypeDefinition_NumericFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Max Length Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MAX_LENGTH_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MaxLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Min Length Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__MIN_LENGTH_FACET = eINSTANCE.getXSDSimpleTypeDefinition_MinLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Total Digits Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__TOTAL_DIGITS_FACET = eINSTANCE.getXSDSimpleTypeDefinition_TotalDigitsFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Fraction Digits Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__FRACTION_DIGITS_FACET = eINSTANCE.getXSDSimpleTypeDefinition_FractionDigitsFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Ordered Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__ORDERED_FACET = eINSTANCE.getXSDSimpleTypeDefinition_OrderedFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Bounded Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__BOUNDED_FACET = eINSTANCE.getXSDSimpleTypeDefinition_BoundedFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Max Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveMaxFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective White Space Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_WHITE_SPACE_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveWhiteSpaceFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Max Length Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_LENGTH_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveMaxLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Fraction Digits Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_FRACTION_DIGITS_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveFractionDigitsFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Pattern Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_PATTERN_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectivePatternFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Enumeration Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_ENUMERATION_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveEnumerationFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Total Digits Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_TOTAL_DIGITS_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveTotalDigitsFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Min Length Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_LENGTH_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveMinLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Length Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_LENGTH_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveLengthFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Effective Min Facet</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_FACET = eINSTANCE.getXSDSimpleTypeDefinition_EffectiveMinFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Synthetic Facets</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS = eINSTANCE.getXSDSimpleTypeDefinition_SyntheticFacets();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDTermImpl <em>Term</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDTermImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDTerm()
+ * @generated
+ */
+ EClass XSD_TERM = eINSTANCE.getXSDTerm();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDTotalDigitsFacetImpl <em>Total Digits Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDTotalDigitsFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDTotalDigitsFacet()
+ * @generated
+ */
+ EClass XSD_TOTAL_DIGITS_FACET = eINSTANCE.getXSDTotalDigitsFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_TOTAL_DIGITS_FACET__VALUE = eINSTANCE.getXSDTotalDigitsFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl <em>Type Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDTypeDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDTypeDefinition()
+ * @generated
+ */
+ EClass XSD_TYPE_DEFINITION = eINSTANCE.getXSDTypeDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__ANNOTATION = eINSTANCE.getXSDTypeDefinition_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Derivation Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION = eINSTANCE.getXSDTypeDefinition_DerivationAnnotation();
+
+ /**
+ * The meta object literal for the '<em><b>Annotations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__ANNOTATIONS = eINSTANCE.getXSDTypeDefinition_Annotations();
+
+ /**
+ * The meta object literal for the '<em><b>Root Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__ROOT_TYPE = eINSTANCE.getXSDTypeDefinition_RootType();
+
+ /**
+ * The meta object literal for the '<em><b>Base Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__BASE_TYPE = eINSTANCE.getXSDTypeDefinition_BaseType();
+
+ /**
+ * The meta object literal for the '<em><b>Simple Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__SIMPLE_TYPE = eINSTANCE.getXSDTypeDefinition_SimpleType();
+
+ /**
+ * The meta object literal for the '<em><b>Complex Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_TYPE_DEFINITION__COMPLEX_TYPE = eINSTANCE.getXSDTypeDefinition_ComplexType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDWhiteSpaceFacetImpl <em>White Space Facet</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDWhiteSpaceFacetImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDWhiteSpaceFacet()
+ * @generated
+ */
+ EClass XSD_WHITE_SPACE_FACET = eINSTANCE.getXSDWhiteSpaceFacet();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_WHITE_SPACE_FACET__VALUE = eINSTANCE.getXSDWhiteSpaceFacet_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDWildcardImpl <em>Wildcard</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDWildcardImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDWildcard()
+ * @generated
+ */
+ EClass XSD_WILDCARD = eINSTANCE.getXSDWildcard();
+
+ /**
+ * The meta object literal for the '<em><b>Namespace Constraint Category</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY = eINSTANCE.getXSDWildcard_NamespaceConstraintCategory();
+
+ /**
+ * The meta object literal for the '<em><b>Namespace Constraint</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_WILDCARD__NAMESPACE_CONSTRAINT = eINSTANCE.getXSDWildcard_NamespaceConstraint();
+
+ /**
+ * The meta object literal for the '<em><b>Process Contents</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_WILDCARD__PROCESS_CONTENTS = eINSTANCE.getXSDWildcard_ProcessContents();
+
+ /**
+ * The meta object literal for the '<em><b>Lexical Namespace Constraint</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT = eINSTANCE.getXSDWildcard_LexicalNamespaceConstraint();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_WILDCARD__ANNOTATION = eINSTANCE.getXSDWildcard_Annotation();
+
+ /**
+ * The meta object literal for the '<em><b>Annotations</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_WILDCARD__ANNOTATIONS = eINSTANCE.getXSDWildcard_Annotations();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.impl.XSDXPathDefinitionImpl <em>XPath Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.impl.XSDXPathDefinitionImpl
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDXPathDefinition()
+ * @generated
+ */
+ EClass XSD_XPATH_DEFINITION = eINSTANCE.getXSDXPathDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Variety</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_XPATH_DEFINITION__VARIETY = eINSTANCE.getXSDXPathDefinition_Variety();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute XSD_XPATH_DEFINITION__VALUE = eINSTANCE.getXSDXPathDefinition_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference XSD_XPATH_DEFINITION__ANNOTATION = eINSTANCE.getXSDXPathDefinition_Annotation();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDAttributeUseCategory <em>Attribute Use Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDAttributeUseCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDAttributeUseCategory()
+ * @generated
+ */
+ EEnum XSD_ATTRIBUTE_USE_CATEGORY = eINSTANCE.getXSDAttributeUseCategory();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDCardinality <em>Cardinality</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDCardinality
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDCardinality()
+ * @generated
+ */
+ EEnum XSD_CARDINALITY = eINSTANCE.getXSDCardinality();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDComplexFinal <em>Complex Final</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDComplexFinal
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDComplexFinal()
+ * @generated
+ */
+ EEnum XSD_COMPLEX_FINAL = eINSTANCE.getXSDComplexFinal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDCompositor <em>Compositor</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDCompositor
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDCompositor()
+ * @generated
+ */
+ EEnum XSD_COMPOSITOR = eINSTANCE.getXSDCompositor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDConstraint <em>Constraint</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDConstraint
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDConstraint()
+ * @generated
+ */
+ EEnum XSD_CONSTRAINT = eINSTANCE.getXSDConstraint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDContentTypeCategory <em>Content Type Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDContentTypeCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDContentTypeCategory()
+ * @generated
+ */
+ EEnum XSD_CONTENT_TYPE_CATEGORY = eINSTANCE.getXSDContentTypeCategory();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDDerivationMethod <em>Derivation Method</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDDerivationMethod
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDerivationMethod()
+ * @generated
+ */
+ EEnum XSD_DERIVATION_METHOD = eINSTANCE.getXSDDerivationMethod();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDDiagnosticSeverity <em>Diagnostic Severity</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDDiagnosticSeverity
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDiagnosticSeverity()
+ * @generated
+ */
+ EEnum XSD_DIAGNOSTIC_SEVERITY = eINSTANCE.getXSDDiagnosticSeverity();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDDisallowedSubstitutions <em>Disallowed Substitutions</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDDisallowedSubstitutions
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDDisallowedSubstitutions()
+ * @generated
+ */
+ EEnum XSD_DISALLOWED_SUBSTITUTIONS = eINSTANCE.getXSDDisallowedSubstitutions();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDForm <em>Form</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDForm
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDForm()
+ * @generated
+ */
+ EEnum XSD_FORM = eINSTANCE.getXSDForm();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDIdentityConstraintCategory <em>Identity Constraint Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDIdentityConstraintCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDIdentityConstraintCategory()
+ * @generated
+ */
+ EEnum XSD_IDENTITY_CONSTRAINT_CATEGORY = eINSTANCE.getXSDIdentityConstraintCategory();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDNamespaceConstraintCategory <em>Namespace Constraint Category</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDNamespaceConstraintCategory
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDNamespaceConstraintCategory()
+ * @generated
+ */
+ EEnum XSD_NAMESPACE_CONSTRAINT_CATEGORY = eINSTANCE.getXSDNamespaceConstraintCategory();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDOrdered <em>Ordered</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDOrdered
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDOrdered()
+ * @generated
+ */
+ EEnum XSD_ORDERED = eINSTANCE.getXSDOrdered();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDProcessContents <em>Process Contents</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDProcessContents
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDProcessContents()
+ * @generated
+ */
+ EEnum XSD_PROCESS_CONTENTS = eINSTANCE.getXSDProcessContents();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDProhibitedSubstitutions <em>Prohibited Substitutions</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDProhibitedSubstitutions()
+ * @generated
+ */
+ EEnum XSD_PROHIBITED_SUBSTITUTIONS = eINSTANCE.getXSDProhibitedSubstitutions();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDSimpleFinal <em>Simple Final</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDSimpleFinal
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSimpleFinal()
+ * @generated
+ */
+ EEnum XSD_SIMPLE_FINAL = eINSTANCE.getXSDSimpleFinal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDSubstitutionGroupExclusions <em>Substitution Group Exclusions</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDSubstitutionGroupExclusions
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDSubstitutionGroupExclusions()
+ * @generated
+ */
+ EEnum XSD_SUBSTITUTION_GROUP_EXCLUSIONS = eINSTANCE.getXSDSubstitutionGroupExclusions();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDVariety <em>Variety</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDVariety
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDVariety()
+ * @generated
+ */
+ EEnum XSD_VARIETY = eINSTANCE.getXSDVariety();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDWhiteSpace <em>White Space</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDWhiteSpace
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDWhiteSpace()
+ * @generated
+ */
+ EEnum XSD_WHITE_SPACE = eINSTANCE.getXSDWhiteSpace();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xsd.XSDXPathVariety <em>XPath Variety</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDXPathVariety
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getXSDXPathVariety()
+ * @generated
+ */
+ EEnum XSD_XPATH_VARIETY = eINSTANCE.getXSDXPathVariety();
+
+ /**
+ * The meta object literal for the '<em>DOM Attr</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Attr
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMAttr()
+ * @generated
+ */
+ EDataType DOM_ATTR = eINSTANCE.getDOMAttr();
+
+ /**
+ * The meta object literal for the '<em>DOM Document</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Document
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMDocument()
+ * @generated
+ */
+ EDataType DOM_DOCUMENT = eINSTANCE.getDOMDocument();
+
+ /**
+ * The meta object literal for the '<em>DOM Element</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Element
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMElement()
+ * @generated
+ */
+ EDataType DOM_ELEMENT = eINSTANCE.getDOMElement();
+
+ /**
+ * The meta object literal for the '<em>DOM Node</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.w3c.dom.Node
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getDOMNode()
+ * @generated
+ */
+ EDataType DOM_NODE = eINSTANCE.getDOMNode();
+
+ /**
+ * The meta object literal for the '<em>Value</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.eclipse.xsd.impl.XSDPackageImpl#getValue()
+ * @generated
+ */
+ EDataType VALUE = eINSTANCE.getValue();
+
+ }
+
+} //XSDPackage
+
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDParticle.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDParticle.java
new file mode 100644
index 0000000..03e98b4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDParticle.java
@@ -0,0 +1,313 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.List;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#cParticles"><em><b>Particle</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDParticle#getContent <em>Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDParticle#getTerm <em>Term</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDParticle()
+ * @model
+ * @generated
+ */
+public interface XSDParticle extends XSDComplexTypeContent
+{
+ /**
+ * Returns the value of the '<em><b>Min Occurs</b></em>' attribute.
+ * The default value is <code>"1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#p-min_occurs">min occurs</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Min Occurs</em>' attribute.
+ * @see #isSetMinOccurs()
+ * @see #unsetMinOccurs()
+ * @see #setMinOccurs(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDParticle_MinOccurs()
+ * @model default="1" unsettable="true"
+ * @generated
+ */
+ int getMinOccurs();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Min Occurs</em>' attribute.
+ * @see #isSetMinOccurs()
+ * @see #unsetMinOccurs()
+ * @see #getMinOccurs()
+ * @generated
+ */
+ void setMinOccurs(int value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetMinOccurs()
+ * @see #getMinOccurs()
+ * @see #setMinOccurs(int)
+ * @generated
+ */
+ void unsetMinOccurs();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Min Occurs</em>' attribute is set.
+ * @see #unsetMinOccurs()
+ * @see #getMinOccurs()
+ * @see #setMinOccurs(int)
+ * @generated
+ */
+ boolean isSetMinOccurs();
+
+ /**
+ * The value <code>-1</code> representing a max occurs of unbounded.
+ * @see #getMaxOccurs
+ */
+ int UNBOUNDED = -1;
+
+ /**
+ * Returns the value of the '<em><b>Max Occurs</b></em>' attribute.
+ * The default value is <code>"1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#p-max_occurs">max occurs</a>
+ * infoset property.
+ * The <code>unbounded</code> value is represented by {@link #UNBOUNDED}, i.e., <code>-1</code>.
+ * @see #UNBOUNDED
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Max Occurs</em>' attribute.
+ * @see #isSetMaxOccurs()
+ * @see #unsetMaxOccurs()
+ * @see #setMaxOccurs(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDParticle_MaxOccurs()
+ * @model default="1" unsettable="true"
+ * @generated
+ */
+ int getMaxOccurs();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Max Occurs</em>' attribute.
+ * @see #isSetMaxOccurs()
+ * @see #unsetMaxOccurs()
+ * @see #getMaxOccurs()
+ * @generated
+ */
+ void setMaxOccurs(int value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetMaxOccurs()
+ * @see #getMaxOccurs()
+ * @see #setMaxOccurs(int)
+ * @generated
+ */
+ void unsetMaxOccurs();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Max Occurs</em>' attribute is set.
+ * @see #unsetMaxOccurs()
+ * @see #getMaxOccurs()
+ * @see #setMaxOccurs(int)
+ * @generated
+ */
+ boolean isSetMaxOccurs();
+
+ /**
+ * Returns the value of the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the {@link org.eclipse.xsd.XSDParticleContent particle content} of the particle.
+ * It is used to compute the {@link #getTerm term}.
+ * </p>
+ * @see #getTerm()
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content</em>' containment reference.
+ * @see #setContent(XSDParticleContent)
+ * @see org.eclipse.xsd.XSDPackage#getXSDParticle_Content()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ XSDParticleContent getContent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getContent <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content</em>' containment reference.
+ * @see #getContent()
+ * @generated
+ */
+ void setContent(XSDParticleContent value);
+
+ /**
+ * Returns the value of the '<em><b>Term</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#term">term</a>
+ * infoset property.
+ * It is computed from the {@link #getContent() content} and should typically not be modified directly.
+ * </p>
+ * @see #getContent()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Term</em>' reference.
+ * @see #setTerm(XSDTerm)
+ * @see org.eclipse.xsd.XSDPackage#getXSDParticle_Term()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDTerm getTerm();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getTerm <em>Term</em>}' reference.
+ * <!-- begin-user-doc -->
+ * Since the term is computed from the {@link #getContent() content}, this reference should typically not be modified directly.
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Term</em>' reference.
+ * @see #getTerm()
+ * @generated
+ */
+ void setTerm(XSDTerm value);
+
+ /**
+ * A deterministic finite state automaton as described for
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#non-ambig"><em><b>Unique Particle Attribution</b></em></a>'.
+ */
+ public interface DFA
+ {
+ /**
+ * A state of a deterministic finite state automaton.
+ */
+ public interface State
+ {
+ /**
+ * Returns whether this state is an accepting state.
+ * @return whether this state is an accepting state.
+ */
+ boolean isAccepting();
+
+ /**
+ * Returns the list of transitions that leave this state.
+ * @return the list of transitions that leave this state.
+ */
+ List<Transition> getTransitions();
+
+ /**
+ * Return the transition applicable for the given input.
+ * An unrecognized input will yield <code>null</code>.
+ * @return the transition applicable for the given input
+ */
+ Transition accept(String namespaceURI, String localName);
+ }
+
+ /**
+ * A transition of a deterministic finite state automaton.
+ */
+ public interface Transition
+ {
+ /**
+ * Returns the particle associated with this transition.
+ * @return the particle associated with this transition.
+ */
+ XSDParticle getParticle();
+
+ /**
+ * Returns the target state of this transition.
+ * @return the target state of this transition.
+ */
+ State getState();
+ }
+
+ /**
+ * Returns whether this DFA is an approximation of the content model.
+ * A large maxOccurs may be treated as unbounded
+ * and a large all model group may be treated as a repeating choice.
+ * @return <code>true</code> if this DFA is an approximation of the content model.
+ */
+ boolean isApproximate();
+
+ /**
+ * Returns the list of states in this automaton.
+ * @return the list of states in this automaton.
+ */
+ List<State> getStates();
+
+ /**
+ * Returns the initial state of this automaton.
+ * @return the initial states in this automaton.
+ */
+ State getInitialState();
+
+ /**
+ * Creates a clone of the automaton.
+ * @return a clone of the automaton.
+ */
+ DFA cloneDFA();
+ }
+
+ /**
+ * Returns the deterministic finite state automaton that implements this particle's content model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the deterministic finite state automaton that implements this particle's content model.
+ */
+ DFA getDFA();
+
+ /**
+ * Returns whether the particle is
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-group-emptiable">emptiable</a>.
+ * @return whether the particle is emptiable.
+ */
+ boolean isEmptiable();
+
+ /**
+ * This returns whether this particle accepts a subset of the content accepted by the other particle,
+ * i.e., whether this is a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-particle-restrict">valid restriction</a>.
+ * @param otherParticle some other particle.
+ * @return whether this is a valid restriction.
+ */
+ boolean isSubset(XSDParticle otherParticle);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDParticleContent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDParticleContent.java
new file mode 100644
index 0000000..64b4085
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDParticleContent.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Particle Content</b></em>'.
+ * It is used to represent the types of object returned by
+ * {@link XSDParticle#getContent()}.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDParticleContent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDParticleContent extends XSDConcreteComponent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPatternFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPatternFacet.java
new file mode 100644
index 0000000..be8ce62
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPatternFacet.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-pattern"><em><b>Pattern Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDPatternFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDPatternFacet()
+ * @model
+ * @generated
+ */
+public interface XSDPatternFacet extends XSDRepeatableFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#pattern-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * Each item in the list is a String representing a pattern.
+ * The overall effect of the list of patterns is the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#src-multiple-patterns">logical intersection</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDPatternFacet_Value()
+ * @model
+ * @generated
+ */
+ EList<String> getValue();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPlugin.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPlugin.java
new file mode 100644
index 0000000..04e120f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDPlugin.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Comparator;
+
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+
+/**
+ * The <b>Plugin</b> for the model.
+ * The XML Schema model needs to be able to run
+ * within an Eclipse workbench,
+ * within a headless Eclipse workspace,
+ * or just stand-alone as part of some other application.
+ * To support this, all access is directed to the static methods,
+ * which can redirect the service as appopriate to the runtime.
+ * During stand-alone invocation no plugin initialization takes place.
+ * In this case you will need the resources jar on the class path.
+ * @see #getBaseURL()
+ */
+public final class XSDPlugin extends EMFPlugin
+{
+ /**
+ * The singleton instance of the plugin.
+ */
+ public static final XSDPlugin INSTANCE = new XSDPlugin();
+
+ /**
+ * The one instance of this class.
+ */
+ static private Implementation plugin;
+
+ /**
+ * Creates the singleton instance.
+ */
+ private XSDPlugin()
+ {
+ super(new ResourceLocator[] {});
+ }
+
+ /**
+ * A comparator for strings which does collation specific to the current locale by default.
+ */
+ public static class StringComparator implements Comparator<String>
+ {
+ private Comparator<String> comparator = CommonPlugin.INSTANCE.getComparator();
+
+ public int compare(String s1, String s2)
+ {
+ return comparator.compare(s1, s2);
+ }
+ }
+
+ /**
+ * A comparator for strings which does collation based simply on unicode values.
+ */
+ public static class UnicodeStringComparator extends StringComparator
+ {
+ @Override
+ public int compare(String s1, String s2)
+ {
+ return s1.compareTo(s2);
+ }
+ }
+
+ /**
+ * The current comparator.
+ */
+ private StringComparator comparator = new StringComparator();
+
+ /**
+ * Returns the comparator that will be used to sort namespaces and names.
+ * The default comparator is specific to the current locale at startup.
+ * Changes to the comparator after it's already in use will be ignored.
+ * @return the comparator that will be used to sort namespaces and names.
+ */
+ public StringComparator getComparator()
+ {
+ return comparator;
+ }
+
+ /**
+ * Sets the comparator that will be used to sort namespaces and names.
+ * Changes to the comparator after it's already in use will be ignored.
+ * @param comparator the comparator that will be used to sort namespaces and names.
+ */
+ public void setComparator(StringComparator comparator)
+ {
+ this.comparator = comparator;
+ }
+
+ /*
+ * Javadoc copied from base class.
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * @return the singleton instance.
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ */
+ public static class Implementation extends EMFPlugin.EclipsePlugin
+ {
+ /**
+ * Creates an instance.
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDProcessContents.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDProcessContents.java
new file mode 100644
index 0000000..694e290
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDProcessContents.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Process Contents</b></em>'.
+ * @see org.eclipse.xsd.XSDWildcard#getProcessContents()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDProcessContents()
+ * @model
+ * @generated
+ */
+public enum XSDProcessContents implements Enumerator
+{
+ /**
+ * The '<em><b>Strict</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #STRICT
+ * @generated
+ * @ordered
+ */
+ STRICT_LITERAL(0, "strict", "strict"),
+
+ /**
+ * The '<em><b>Lax</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LAX
+ * @generated
+ * @ordered
+ */
+ LAX_LITERAL(1, "lax", "lax"),
+
+ /**
+ * The '<em><b>Skip</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SKIP
+ * @generated
+ * @ordered
+ */
+ SKIP_LITERAL(2, "skip", "skip");
+
+ /**
+ * The '<em><b>Strict</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that content must be strictly valid.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #STRICT_LITERAL
+ * @model name="strict"
+ * @generated
+ * @ordered
+ */
+ public static final int STRICT = 0;
+
+ /**
+ * The '<em><b>Lax</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that content may be strictly valid but need not be.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LAX_LITERAL
+ * @model name="lax"
+ * @generated
+ * @ordered
+ */
+ public static final int LAX = 1;
+
+ /**
+ * The '<em><b>Skip</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that content is not validated at all.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SKIP_LITERAL
+ * @model name="skip"
+ * @generated
+ * @ordered
+ */
+ public static final int SKIP = 2;
+
+ /**
+ * An array of all the '<em><b>Process Contents</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDProcessContents[] VALUES_ARRAY =
+ new XSDProcessContents[]
+ {
+ STRICT_LITERAL,
+ LAX_LITERAL,
+ SKIP_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Process Contents</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDProcessContents> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Process Contents</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDProcessContents get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDProcessContents result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Process Contents</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDProcessContents getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDProcessContents result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Process Contents</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDProcessContents get(int value)
+ {
+ switch (value)
+ {
+ case STRICT: return STRICT_LITERAL;
+ case LAX: return LAX_LITERAL;
+ case SKIP: return SKIP_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDProcessContents(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDProhibitedSubstitutions.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDProhibitedSubstitutions.java
new file mode 100644
index 0000000..96ec47c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDProhibitedSubstitutions.java
@@ -0,0 +1,272 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Prohibited Substitutions</b></em>'.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getProhibitedSubstitutions()
+ * @see org.eclipse.xsd.XSDSchema#getFinalDefault()
+ * @see org.eclipse.xsd.XSDElementDeclaration#getLexicalFinal()
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition#getBlock()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDProhibitedSubstitutions()
+ * @model
+ * @generated
+ */
+public enum XSDProhibitedSubstitutions implements Enumerator
+{
+ /**
+ * The '<em><b>Extension</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION
+ * @generated
+ * @ordered
+ */
+ EXTENSION_LITERAL(0, "extension", "extension"),
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION
+ * @generated
+ * @ordered
+ */
+ RESTRICTION_LITERAL(1, "restriction", "restriction"),
+
+ /**
+ * The '<em><b>All</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL
+ * @generated
+ * @ordered
+ */
+ ALL_LITERAL(2, "all", "all");
+
+ /**
+ * The '<em><b>Extension</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that types derived via extension will not be permitted to validate content.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION_LITERAL
+ * @model name="extension"
+ * @generated
+ * @ordered
+ */
+ public static final int EXTENSION = 0;
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that types derived via restriction will not be permitted to validate content.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION_LITERAL
+ * @model name="restriction"
+ * @generated
+ * @ordered
+ */
+ public static final int RESTRICTION = 1;
+
+ /**
+ * The '<em><b>All</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that derived types will not be permitted to validate content.
+ * It is literally expanded to extension and restriction in the infoset model.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_LITERAL
+ * @model name="all"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL = 2;
+
+ /**
+ * An array of all the '<em><b>Prohibited Substitutions</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDProhibitedSubstitutions[] VALUES_ARRAY =
+ new XSDProhibitedSubstitutions[]
+ {
+ EXTENSION_LITERAL,
+ RESTRICTION_LITERAL,
+ ALL_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Prohibited Substitutions</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDProhibitedSubstitutions> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Prohibited Substitutions</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDProhibitedSubstitutions get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDProhibitedSubstitutions result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Prohibited Substitutions</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDProhibitedSubstitutions getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDProhibitedSubstitutions result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Prohibited Substitutions</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDProhibitedSubstitutions get(int value)
+ {
+ switch (value)
+ {
+ case EXTENSION: return EXTENSION_LITERAL;
+ case RESTRICTION: return RESTRICTION_LITERAL;
+ case ALL: return ALL_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDProhibitedSubstitutions(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefinableComponent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefinableComponent.java
new file mode 100644
index 0000000..48f829b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefinableComponent.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Redefinable Component</b></em>'.
+ * As expected,
+ * a redefinable components is one that can be
+ * <a href="http://www.w3.org/TR/xmlschema-1/#modify-schema">redefined</a>.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDRedefinableComponent#isCircular <em>Circular</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDRedefinableComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDRedefinableComponent extends XSDNamedComponent, XSDRedefineContent {
+ /**
+ * Returns the value of the '<em><b>Circular</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This indicates whether the definition is circular,
+ * e.g., circular base, item, or member types reference,
+ * circular attribute group definition reference,
+ * or circular model group definition reference.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Circular</em>' attribute.
+ * @see org.eclipse.xsd.XSDPackage#getXSDRedefinableComponent_Circular()
+ * @model changeable="false" volatile="true"
+ * @generated
+ */
+ boolean isCircular();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefine.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefine.java
new file mode 100644
index 0000000..709d325
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefine.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#modify-schema"><em><b>Redefine</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDRedefine#getAnnotations <em>Annotations</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDRedefine#getContents <em>Contents</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDRedefine()
+ * @model
+ * @generated
+ */
+public interface XSDRedefine extends XSDSchemaCompositor
+{
+ /**
+ * Returns the value of the '<em><b>Annotations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAnnotation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This reference represents the annotation contents defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-redefine">redefine</a> element.
+ * It is computed from the {@link #getContents() contents} and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDRedefine_Annotations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAnnotation> getAnnotations();
+
+ /**
+ * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDRedefineContent}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the contents defined within the body of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-redefine">redefine</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDRedefine_Contents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDRedefineContent> getContents();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefineContent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefineContent.java
new file mode 100644
index 0000000..e7c031a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRedefineContent.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Redefine Content</b></em>'.
+ * It is used to represent the types of object returned by
+ * {@link XSDRedefine#getContents XSDRedefine.getContents()}.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDRedefineContent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDRedefineContent extends XSDSchemaContent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRepeatableFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRepeatableFacet.java
new file mode 100644
index 0000000..2ea1d5b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDRepeatableFacet.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Repeatable Facet</b></em>'.
+ *
+ * <p>
+ * Both {@link org.eclipse.xsd.XSDPatternFacet pattern} and {@link org.eclipse.xsd.XSDEnumerationFacet enumeration} facets
+ * may be repeated in the concrete syntax and yet they are merged into a single component in the infoset model.
+ * As a result, instances of these two facets are synthesized by
+ * {@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectivePatternFacet()} and
+ * {@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveEnumerationFacet()}.
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDRepeatableFacet#getAnnotations <em>Annotations</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDRepeatableFacet()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDRepeatableFacet extends XSDConstrainingFacet
+{
+ /**
+ * Returns the value of the '<em><b>Annotations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAnnotation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * enumeration <a href="http://www.w3.org/TR/xmlschema-2/#enumeration-annotation">annotation</a>, or
+ * pattern <a href="http://www.w3.org/TR/xmlschema-2/#pattern-annotation">annotation</a>
+ * infoset property.
+ * It is computed from the concrete {@link #getAnnotation() annotation content} and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDRepeatableFacet_Annotations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAnnotation> getAnnotations();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchema.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchema.java
new file mode 100644
index 0000000..91b403b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchema.java
@@ -0,0 +1,786 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Map;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#Schemas"><em><b>Schema</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getDocument <em>Document</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getSchemaLocation <em>Schema Location</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getTargetNamespace <em>Target Namespace</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getAttributeFormDefault <em>Attribute Form Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getElementFormDefault <em>Element Form Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getFinalDefault <em>Final Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getBlockDefault <em>Block Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getVersion <em>Version</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getElementDeclarations <em>Element Declarations</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getAttributeDeclarations <em>Attribute Declarations</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getAttributeGroupDefinitions <em>Attribute Group Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getTypeDefinitions <em>Type Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getModelGroupDefinitions <em>Model Group Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getIdentityConstraintDefinitions <em>Identity Constraint Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getNotationDeclarations <em>Notation Declarations</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getAnnotations <em>Annotations</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getAllDiagnostics <em>All Diagnostics</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getReferencingDirectives <em>Referencing Directives</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getRootVersion <em>Root Version</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getOriginalVersion <em>Original Version</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getIncorporatedVersions <em>Incorporated Versions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchema#getSchemaForSchema <em>Schema For Schema</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema()
+ * @model
+ * @generated
+ */
+public interface XSDSchema extends XSDScope
+{
+ /**
+ * Returns the value of the '<em><b>Document</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is the optional DOM document of this schema,
+ * i.e., the owner of the {@link #getElement element}.
+ * A document can be created by calling {@link #updateDocument};
+ * a document <b>and</b> an element can be create by calling {@link #updateElement}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Document</em>' attribute.
+ * @see #setDocument(Document)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_Document()
+ * @model dataType="org.eclipse.xsd.DOMDocument"
+ * @generated
+ */
+ Document getDocument();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchema#getDocument <em>Document</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Document</em>' attribute.
+ * @see #getDocument()
+ * @generated
+ */
+ void setDocument(Document value);
+
+ /**
+ * Returns the value of the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the URI of the resource that contains this this schema.
+ * It is used to complete any relative {@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation schemaLocation} URI
+ * in an import, include, or redefine.
+ * No schema {@link org.eclipse.xsd.XSDSchemaDirective#getResolvedSchema resolution} will be attempted until this has been set.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema Location</em>' attribute.
+ * @see #setSchemaLocation(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_SchemaLocation()
+ * @model
+ * @generated
+ */
+ String getSchemaLocation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchema#getSchemaLocation <em>Schema Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schema Location</em>' attribute.
+ * @see #getSchemaLocation()
+ * @generated
+ */
+ void setSchemaLocation(String value);
+
+ /**
+ * Returns the value of the '<em><b>Target Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">targetNamespace</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Namespace</em>' attribute.
+ * @see #setTargetNamespace(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_TargetNamespace()
+ * @model
+ * @generated
+ */
+ String getTargetNamespace();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchema#getTargetNamespace <em>Target Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target Namespace</em>' attribute.
+ * @see #getTargetNamespace()
+ * @generated
+ */
+ void setTargetNamespace(String value);
+
+ /**
+ * Returns the value of the '<em><b>Attribute Form Default</b></em>' attribute.
+ * The default value is <code>"unqualified"</code>.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDForm}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">attributeFormDefault</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Form Default</em>' attribute.
+ * @see org.eclipse.xsd.XSDForm
+ * @see #isSetAttributeFormDefault()
+ * @see #unsetAttributeFormDefault()
+ * @see #setAttributeFormDefault(XSDForm)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_AttributeFormDefault()
+ * @model default="unqualified" unsettable="true"
+ * @generated
+ */
+ XSDForm getAttributeFormDefault();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchema#getAttributeFormDefault <em>Attribute Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Attribute Form Default</em>' attribute.
+ * @see org.eclipse.xsd.XSDForm
+ * @see #isSetAttributeFormDefault()
+ * @see #unsetAttributeFormDefault()
+ * @see #getAttributeFormDefault()
+ * @generated
+ */
+ void setAttributeFormDefault(XSDForm value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDSchema#getAttributeFormDefault <em>Attribute Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetAttributeFormDefault()
+ * @see #getAttributeFormDefault()
+ * @see #setAttributeFormDefault(XSDForm)
+ * @generated
+ */
+ void unsetAttributeFormDefault();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDSchema#getAttributeFormDefault <em>Attribute Form Default</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Attribute Form Default</em>' attribute is set.
+ * @see #unsetAttributeFormDefault()
+ * @see #getAttributeFormDefault()
+ * @see #setAttributeFormDefault(XSDForm)
+ * @generated
+ */
+ boolean isSetAttributeFormDefault();
+
+ /**
+ * Returns the value of the '<em><b>Element Form Default</b></em>' attribute.
+ * The default value is <code>"unqualified"</code>.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDForm}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">elementFormDefault</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Element Form Default</em>' attribute.
+ * @see org.eclipse.xsd.XSDForm
+ * @see #isSetElementFormDefault()
+ * @see #unsetElementFormDefault()
+ * @see #setElementFormDefault(XSDForm)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_ElementFormDefault()
+ * @model default="unqualified" unsettable="true"
+ * @generated
+ */
+ XSDForm getElementFormDefault();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchema#getElementFormDefault <em>Element Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Element Form Default</em>' attribute.
+ * @see org.eclipse.xsd.XSDForm
+ * @see #isSetElementFormDefault()
+ * @see #unsetElementFormDefault()
+ * @see #getElementFormDefault()
+ * @generated
+ */
+ void setElementFormDefault(XSDForm value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDSchema#getElementFormDefault <em>Element Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetElementFormDefault()
+ * @see #getElementFormDefault()
+ * @see #setElementFormDefault(XSDForm)
+ * @generated
+ */
+ void unsetElementFormDefault();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDSchema#getElementFormDefault <em>Element Form Default</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Element Form Default</em>' attribute is set.
+ * @see #unsetElementFormDefault()
+ * @see #getElementFormDefault()
+ * @see #setElementFormDefault(XSDForm)
+ * @generated
+ */
+ boolean isSetElementFormDefault();
+
+ /**
+ * Returns the value of the '<em><b>Final Default</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDProhibitedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">finalDefault</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Final Default</em>' attribute list.
+ * @see org.eclipse.xsd.XSDProhibitedSubstitutions
+ * @see #isSetFinalDefault()
+ * @see #unsetFinalDefault()
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_FinalDefault()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDProhibitedSubstitutions> getFinalDefault();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDSchema#getFinalDefault <em>Final Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetFinalDefault()
+ * @see #getFinalDefault()
+ * @generated
+ */
+ void unsetFinalDefault();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDSchema#getFinalDefault <em>Final Default</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Final Default</em>' attribute list is set.
+ * @see #unsetFinalDefault()
+ * @see #getFinalDefault()
+ * @generated
+ */
+ boolean isSetFinalDefault();
+
+ /**
+ * Returns the String value of the '{@link #getFinalDefault() <em>Final Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Final Default</em>' attribute list.
+ * @see #getFinalDefault()
+ * @see #setStringFinalDefault(java.lang.String)
+ */
+ public String getStringFinalDefault();
+
+ /**
+ * Set the String value of the '{@link #getFinalDefault() <em>Final Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param finalDefault the new value of the '<em>Final Default</em>' attribute list.
+ * @see #getFinalDefault()
+ * @see #getStringFinalDefault()
+ */
+ public void setStringFinalDefault(String finalDefault);
+
+ /**
+ * Returns the value of the '<em><b>Block Default</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDDisallowedSubstitutions}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDDisallowedSubstitutions}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">blockDefault</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Block Default</em>' attribute list.
+ * @see org.eclipse.xsd.XSDDisallowedSubstitutions
+ * @see #isSetBlockDefault()
+ * @see #unsetBlockDefault()
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_BlockDefault()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDDisallowedSubstitutions> getBlockDefault();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDSchema#getBlockDefault <em>Block Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetBlockDefault()
+ * @see #getBlockDefault()
+ * @generated
+ */
+ void unsetBlockDefault();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDSchema#getBlockDefault <em>Block Default</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Block Default</em>' attribute list is set.
+ * @see #unsetBlockDefault()
+ * @see #getBlockDefault()
+ * @generated
+ */
+ boolean isSetBlockDefault();
+
+ /**
+ * Returns the value of the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">version</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Version</em>' attribute.
+ * @see #setVersion(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_Version()
+ * @model
+ * @generated
+ */
+ String getVersion();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchema#getVersion <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Version</em>' attribute.
+ * @see #getVersion()
+ * @generated
+ */
+ void setVersion(String value);
+
+ /**
+ * Returns the String value of the '{@link #getBlockDefault() <em>Block Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Block Default</em>' attribute list.
+ * @see #getBlockDefault()
+ * @see #setStringBlockDefault(java.lang.String)
+ */
+ public String getStringBlockDefault();
+
+ /**
+ * Returns the String value of the '{@link #getBlockDefault() <em>Block Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param blockDefault the new value of the '<em>Block Default</em>' attribute list.
+ * @see #getBlockDefault()
+ * @see #getStringBlockDefault()
+ */
+ public void setStringBlockDefault(String blockDefault);
+
+ /**
+ * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSchemaContent}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the contents defined within the body of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-schema">schema</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_Contents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDSchemaContent> getContents();
+
+ /**
+ * Returns the value of the '<em><b>Element Declarations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDElementDeclaration}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element_declarations">element declarations</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Element Declarations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_ElementDeclarations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDElementDeclaration> getElementDeclarations();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Declarations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAttributeDeclaration}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#attribute_declarations">attribute declarations</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Declarations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_AttributeDeclarations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAttributeDeclaration> getAttributeDeclarations();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Group Definitions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAttributeGroupDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#attribute_group_definitions">attribute group definitions</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attribute Group Definitions</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_AttributeGroupDefinitions()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAttributeGroupDefinition> getAttributeGroupDefinitions();
+
+ /**
+ * Returns the value of the '<em><b>Type Definitions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDTypeDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#type_definitions">type definitions</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type Definitions</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_TypeDefinitions()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDTypeDefinition> getTypeDefinitions();
+
+ /**
+ * Returns the value of the '<em><b>Model Group Definitions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDModelGroupDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#model_group_definitions">model group definitions</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Model Group Definitions</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_ModelGroupDefinitions()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDModelGroupDefinition> getModelGroupDefinitions();
+
+ /**
+ * Returns the value of the '<em><b>Identity Constraint Definitions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDIdentityConstraintDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#Schema_details">identity constraint definitions</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * Actually, there is no such property defined
+ * but this seems to be an oversight;
+ * it is needed to resolve a {@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getReferencedKey referenced key}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Identity Constraint Definitions</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_IdentityConstraintDefinitions()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDIdentityConstraintDefinition> getIdentityConstraintDefinitions();
+
+ /**
+ * Returns the value of the '<em><b>Notation Declarations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDNotationDeclaration}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#notation_declarations">notation declarations</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Notation Declarations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_NotationDeclarations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDNotationDeclaration> getNotationDeclarations();
+
+ /**
+ * Returns the value of the '<em><b>Annotations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAnnotation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#annotations">annotations</a>
+ * infoset property.
+ * It is computed from the {@link #getContents() contents} and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_Annotations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAnnotation> getAnnotations();
+
+ /**
+ * Returns the value of the '<em><b>All Diagnostics</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDDiagnostic}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents all the diagnostics that occur within the components of this schema.
+ * It is computed from the '{@link #getDiagnostics <em>Diagnostics</em>}' reference list
+ * and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>All Diagnostics</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_AllDiagnostics()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDDiagnostic> getAllDiagnostics();
+
+ /**
+ * Returns the value of the '<em><b>Referencing Directives</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSchemaDirective}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the directives that have this schema as their
+ * '{@link org.eclipse.xsd.XSDSchemaDirective#getResolvedSchema <em>Resolved Schema</em>}' reference or
+ * '{@link org.eclipse.xsd.XSDSchemaCompositor#getIncorporatedSchema <em>Incorporated Schema</em>}' reference.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referencing Directives</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_ReferencingDirectives()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDSchemaDirective> getReferencingDirectives();
+
+ /**
+ * Returns the value of the '<em><b>Root Version</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This walks the {@link #getOriginalVersion() original versions}
+ * until it hits one that has no original version.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root Version</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_RootVersion()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSchema getRootVersion();
+
+ /**
+ * Returns the value of the '<em><b>Original Version</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the schema from which an {@link #getIncorporatedVersions incorporated version} originates.
+ * The {@link #getRootVersion root version} has itself as its original version.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Original Version</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_OriginalVersion()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSchema getOriginalVersion();
+
+ /**
+ * Returns the value of the '<em><b>Incorporated Versions</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSchema}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents those versions of this schema
+ * that have been {@link org.eclipse.xsd.XSDInclude included} into a schema with a different namespace
+ * or have been otherwise {@link org.eclipse.xsd.XSDRedefine redefined}.
+ * </p>
+ * @see org.eclipse.xsd.XSDSchemaCompositor#getIncorporatedSchema()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Incorporated Versions</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_IncorporatedVersions()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ EList<XSDSchema> getIncorporatedVersions();
+
+ /**
+ * Returns the value of the '<em><b>Schema For Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#normative-schemaSchema">schema for schemas</a>'.
+ * It is computed from the {@link #getSchemaForSchemaNamespace schema for schema namespace}
+ * and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema For Schema</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchema_SchemaForSchema()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSchema getSchemaForSchema();
+
+ /**
+ * Returns the best concrete component that corresponds to the given node.
+ * Since each concrete component has an associated element not a node, a best element is determined from the node first.
+ * Furthermore, since not every element corresponds to a concrete component, parent elements are considered when finding a match.
+ * The best match will be the deepest choice.
+ * @param node the node to find.
+ * @return the best concrete component that corresponds to the given node.
+ * @see #getElement()
+ */
+ public XSDConcreteComponent getCorrespondingComponent(Node node);
+
+ /**
+ * Returns a map from String ID to {@link XSDSimpleTypeDefinition}
+ * based on the IDs in the DOM representation.
+ * For the {@link #getSchemaForSchema() schema for schema},
+ * this represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#built-in-datatypes">built-in datatypes</a>.
+ * @return a map from String ID to {@link XSDSimpleTypeDefinition}
+ * @see #getSchemaForSchema()
+ */
+ public Map<String, XSDSimpleTypeDefinition> getSimpleTypeIdMap();
+
+ /**
+ * Returns the map defined by the xmlns attributes of the underlying XML representation.
+ * When a schema instance is constructed without an underlying DOM,
+ * it is necessary to populate this map with at least a mapping for the
+ * {@link #getSchemaForSchemaQNamePrefix schema for schema namespace prefix}.
+ * Note that the default prefix is represented as <code>null</code> not as a zero length string.
+ * @return the map defined by the xmlns attributes of the underlying XML representation.
+ * @see #getSchemaForSchemaQNamePrefix()
+ * @see #getSchemaForSchemaNamespace()
+ */
+ public Map<String, String> getQNamePrefixToNamespaceMap();
+
+ /**
+ * Returns the QName prefix used to reference the {@link #getSchemaForSchemaNamespace schema for schema namespace}.
+ * It must be a key in {@link #getQNamePrefixToNamespaceMap}.
+ * It is recommended that the prefix '<code>xsd</code>' be used.
+ * @return the QName prefix used to reference the schema for schema namespace.
+ * @see #setSchemaForSchemaQNamePrefix
+ * @see #getQNamePrefixToNamespaceMap
+ */
+ public String getSchemaForSchemaQNamePrefix();
+
+ /**
+ * Sets the QName prefix used to reference the {@link #getSchemaForSchemaNamespace schema for schema namespace}.
+ * It must be a key in {@link #getQNamePrefixToNamespaceMap}
+ * that maps to a {@link org.eclipse.xsd.util.XSDConstants#isSchemaForSchemaNamespace valid} schema for schema namespace.
+ * @param qNamePrefix the new schema for schema QName prefix.
+ * @see #getSchemaForSchemaQNamePrefix
+ * @see #getQNamePrefixToNamespaceMap
+ */
+ public void setSchemaForSchemaQNamePrefix(String qNamePrefix);
+
+ /**
+ * Returns the schema for schema namespace of this schema.
+ * It is equivalent to
+ *<pre>
+ * (String){@link #getQNamePrefixToNamespaceMap()}.get({@link #getSchemaForSchemaQNamePrefix()})
+ *</pre>
+ * so you can't set this directly.
+ * @return the schema for schema namespace.
+ * @see #getQNamePrefixToNamespaceMap()
+ * @see #getSchemaForSchemaQNamePrefix()
+ */
+ public String getSchemaForSchemaNamespace();
+
+ /**
+ * Ensures that the {@link #getDocument document} will be set to an instance that can be used to create a DOM serialization.
+ * @see #updateElement
+ */
+ Document updateDocument();
+
+ /**
+ * Returns whether the schema will incrementally resolve QNames and perform analysis after each edit change.
+ * Since a single incremental update can be very expensive,
+ * when a significant number of edit changes are expected to be made,
+ * performance can be improved by turning off incremental updates.
+ * In that case, QNames will remain unresolved and analysis results will not be updated;
+ * analysis involves things like propagating information from a base type to its derived types.
+ * @return whether the schema will incrementally resolve QNames and perform analysis.
+ * @see #setIncrementalUpdate
+ * @see #update
+ */
+ boolean isIncrementalUpdate();
+
+ /**
+ * Sets whether the schema will incrementally resolve QNames and perform analysis after each edit change.
+ * Setting this to <code>true</code> will also result in an update.
+ * @param isIncrementalUpdate the new value.
+ * @see #isIncrementalUpdate
+ * @see #update
+ */
+ void setIncrementalUpdate(boolean isIncrementalUpdate);
+
+ /**
+ * Resolves QNames and performs analysis.
+ * @see #isIncrementalUpdate
+ * @see #update
+ */
+ void update();
+
+ /**
+ * Resolves QNames and performs analysis.
+ * If <code>force</code> is <code>true</code> even previously resolved QNames are resolved again.
+ * @param force whether previously resolved names should be resolved again.
+ * @see #isIncrementalUpdate
+ * @see #update
+ */
+ void update(boolean force);
+
+ /**
+ * Resets the effects of imports, includes, and redefines so that they will be reprocessed.
+ * @see #update
+ */
+ void reset();
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaCompositor.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaCompositor.java
new file mode 100644
index 0000000..348085a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaCompositor.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Schema Compositor</b></em>'.
+ * It is used to represent aspects common to
+ * '{@link org.eclipse.xsd.XSDInclude <em>Include</em>}' and
+ * '{@link org.eclipse.xsd.XSDRedefine <em>Redefine</em>}'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDSchemaCompositor#getIncorporatedSchema <em>Incorporated Schema</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchemaCompositor()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDSchemaCompositor extends XSDSchemaDirective {
+ /**
+ * Returns the value of the '<em><b>Incorporated Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This reference is {@link org.eclipse.xsd.XSDSchema#getIncorporatedVersions() computed}
+ * from the {@link #getResolvedSchema() resolved schema}
+ * and is typically not set directly.
+ * </p>
+ * @see org.eclipse.xsd.XSDSchema#getIncorporatedVersions
+ * @see #getResolvedSchema
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Incorporated Schema</em>' reference.
+ * @see #setIncorporatedSchema(XSDSchema)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchemaCompositor_IncorporatedSchema()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDSchema getIncorporatedSchema();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchemaCompositor#getIncorporatedSchema <em>Incorporated Schema</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Incorporated Schema</em>' reference.
+ * @see #getIncorporatedSchema()
+ * @generated
+ */
+ void setIncorporatedSchema(XSDSchema value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaContent.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaContent.java
new file mode 100644
index 0000000..4c0f869
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaContent.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Schema Content</b></em>'.
+ * It is used to represent the types of objects returned by
+ * {@link XSDSchema#getContents XSDSchema.getContents()}.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchemaContent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDSchemaContent extends XSDConcreteComponent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaDirective.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaDirective.java
new file mode 100644
index 0000000..ac563e1
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSchemaDirective.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Schema Directive</b></em>'.
+ * It is used to represent aspects common to
+ * '{@link org.eclipse.xsd.XSDImport <em>Import</em>}',
+ * '{@link org.eclipse.xsd.XSDInclude <em>Include</em>}' and
+ * '{@link org.eclipse.xsd.XSDRedefine <em>Redefine</em>}'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation <em>Schema Location</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSchemaDirective#getResolvedSchema <em>Resolved Schema</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchemaDirective()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDSchemaDirective extends XSDSchemaContent
+{
+ /**
+ * Returns the value of the '<em><b>Schema Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * import <a href="http://www.w3.org/TR/xmlschema-1/#element-import">schemaLocation</a>,
+ * include <a href="http://www.w3.org/TR/xmlschema-1/#element-include">schemaLocation</a>, or
+ * redefine <a href="http://www.w3.org/TR/xmlschema-1/#element-redefine">schemaLocation</a> attribute.
+ * It is used in conjunction with the {@link org.eclipse.xsd.XSDSchema#getSchemaLocation schema's location},
+ * to compute the {@link #getResolvedSchema resolved schema}.
+ * </p>
+ * @see org.eclipse.xsd.XSDSchema#getSchemaLocation()
+ * @see #getResolvedSchema()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Schema Location</em>' attribute.
+ * @see #setSchemaLocation(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchemaDirective_SchemaLocation()
+ * @model
+ * @generated
+ */
+ String getSchemaLocation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation <em>Schema Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schema Location</em>' attribute.
+ * @see #getSchemaLocation()
+ * @generated
+ */
+ void setSchemaLocation(String value);
+
+ /**
+ * Returns the value of the '<em><b>Resolved Schema</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the actual schema resolved by the '{@link #getSchemaLocation <em>Schema Location</em>}' attribute.
+ * </p>
+ * @see #getSchemaLocation()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Schema</em>' reference.
+ * @see #setResolvedSchema(XSDSchema)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSchemaDirective_ResolvedSchema()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDSchema getResolvedSchema();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSchemaDirective#getResolvedSchema <em>Resolved Schema</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Schema</em>' reference.
+ * @see #getResolvedSchema()
+ * @generated
+ */
+ void setResolvedSchema(XSDSchema value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDScope.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDScope.java
new file mode 100644
index 0000000..075ffc0
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDScope.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Scope</b></em>'.
+ * This is used to represent the types of object returned by
+ * {@link org.eclipse.xsd.XSDFeature#getScope}, i.e.,
+ * '{@link org.eclipse.xsd.XSDSchema <em>Schema</em>}' and
+ * '{@link org.eclipse.xsd.XSDComplexTypeDefinition <em>Complex Type Definition</em>}'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDScope()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDScope extends XSDComponent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSimpleFinal.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSimpleFinal.java
new file mode 100644
index 0000000..6a7a5ff
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSimpleFinal.java
@@ -0,0 +1,298 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Simple Final</b></em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getFinal()
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleFinal()
+ * @model
+ * @generated
+ */
+public enum XSDSimpleFinal implements Enumerator
+{
+ /**
+ * The '<em><b>List</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LIST
+ * @generated
+ * @ordered
+ */
+ LIST_LITERAL(0, "list", "list"),
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION
+ * @generated
+ * @ordered
+ */
+ RESTRICTION_LITERAL(1, "restriction", "restriction"),
+
+ /**
+ * The '<em><b>Union</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNION
+ * @generated
+ * @ordered
+ */
+ UNION_LITERAL(2, "union", "union"),
+
+ /**
+ * The '<em><b>All</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL
+ * @generated
+ * @ordered
+ */
+ ALL_LITERAL(3, "all", "all");
+
+ /**
+ * The '<em><b>List</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation via list is allowed for a simple type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LIST_LITERAL
+ * @model name="list"
+ * @generated
+ * @ordered
+ */
+ public static final int LIST = 0;
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation via restriction is allowed for a simple type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION_LITERAL
+ * @model name="restriction"
+ * @generated
+ * @ordered
+ */
+ public static final int RESTRICTION = 1;
+
+ /**
+ * The '<em><b>Union</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation via union is allowed for a simple type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNION_LITERAL
+ * @model name="union"
+ * @generated
+ * @ordered
+ */
+ public static final int UNION = 2;
+
+ /**
+ * The '<em><b>All</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that no derivation is allowed for a simple type definition.
+ * It is literally expanded to list, restriction, and union in the infoset model.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_LITERAL
+ * @model name="all"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL = 3;
+
+ /**
+ * An array of all the '<em><b>Simple Final</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDSimpleFinal[] VALUES_ARRAY =
+ new XSDSimpleFinal[]
+ {
+ LIST_LITERAL,
+ RESTRICTION_LITERAL,
+ UNION_LITERAL,
+ ALL_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Simple Final</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDSimpleFinal> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Simple Final</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDSimpleFinal get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDSimpleFinal result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Simple Final</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDSimpleFinal getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDSimpleFinal result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Simple Final</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDSimpleFinal get(int value)
+ {
+ switch (value)
+ {
+ case LIST: return LIST_LITERAL;
+ case RESTRICTION: return RESTRICTION_LITERAL;
+ case UNION: return UNION_LITERAL;
+ case ALL: return ALL_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDSimpleFinal(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSimpleTypeDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSimpleTypeDefinition.java
new file mode 100644
index 0000000..013d7a7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSimpleTypeDefinition.java
@@ -0,0 +1,1204 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Collection;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-defn"><em><b>Simple Type Definition</b></em></a>'.
+ * For the methods named getEffective<b>Xyz</b>Facet,
+ * <em>effective</em> means that the value of the property
+ * is computed based on the direct facets of this type, or,
+ * if the facet is not present,
+ * is computed recursively from the {@link #getBaseTypeDefinition base type}.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety <em>Variety</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFinal <em>Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal <em>Lexical Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getValidFacets <em>Valid Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFacetContents <em>Facet Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFacets <em>Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMemberTypeDefinitions <em>Member Type Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFundamentalFacets <em>Fundamental Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getBaseTypeDefinition <em>Base Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getPrimitiveTypeDefinition <em>Primitive Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getItemTypeDefinition <em>Item Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getRootTypeDefinition <em>Root Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinFacet <em>Min Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxFacet <em>Max Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxInclusiveFacet <em>Max Inclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinInclusiveFacet <em>Min Inclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinExclusiveFacet <em>Min Exclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxExclusiveFacet <em>Max Exclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLengthFacet <em>Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getWhiteSpaceFacet <em>White Space Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEnumerationFacets <em>Enumeration Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getPatternFacets <em>Pattern Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getCardinalityFacet <em>Cardinality Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getNumericFacet <em>Numeric Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMaxLengthFacet <em>Max Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getMinLengthFacet <em>Min Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getTotalDigitsFacet <em>Total Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFractionDigitsFacet <em>Fraction Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getOrderedFacet <em>Ordered Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getBoundedFacet <em>Bounded Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMaxFacet <em>Effective Max Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveWhiteSpaceFacet <em>Effective White Space Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMaxLengthFacet <em>Effective Max Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveFractionDigitsFacet <em>Effective Fraction Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectivePatternFacet <em>Effective Pattern Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveEnumerationFacet <em>Effective Enumeration Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveTotalDigitsFacet <em>Effective Total Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMinLengthFacet <em>Effective Min Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveLengthFacet <em>Effective Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getEffectiveMinFacet <em>Effective Min Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getSyntheticFacets <em>Synthetic Facets</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition()
+ * @model
+ * @generated
+ */
+public interface XSDSimpleTypeDefinition extends XSDTypeDefinition, XSDComplexTypeContent
+{
+ /**
+ * Returns the value of the '<em><b>Variety</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDVariety}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-variety">variety</a>
+ * infoset property.
+ * It is computed based on the presence or absence of
+ * an {@link #getItemTypeDefinition item type}
+ * or of {@link #getMemberTypeDefinitions member types},
+ * and should not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Variety</em>' attribute.
+ * @see org.eclipse.xsd.XSDVariety
+ * @see #isSetVariety()
+ * @see #unsetVariety()
+ * @see #setVariety(XSDVariety)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_Variety()
+ * @model unsettable="true"
+ * @generated
+ */
+ XSDVariety getVariety();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Variety</em>' attribute.
+ * @see org.eclipse.xsd.XSDVariety
+ * @see #isSetVariety()
+ * @see #unsetVariety()
+ * @see #getVariety()
+ * @generated
+ */
+ void setVariety(XSDVariety value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetVariety()
+ * @see #getVariety()
+ * @see #setVariety(XSDVariety)
+ * @generated
+ */
+ void unsetVariety();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety <em>Variety</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Variety</em>' attribute is set.
+ * @see #unsetVariety()
+ * @see #getVariety()
+ * @see #setVariety(XSDVariety)
+ * @generated
+ */
+ boolean isSetVariety();
+
+ /**
+ * Returns the value of the '<em><b>Final</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSimpleFinal}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDSimpleFinal}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-final">final</a>
+ * infoset property.
+ * It is computed from the {@link #getLexicalFinal lexical final} and should not typically be modified directly.
+ * </p>
+ * @see #getStringFinal()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Final</em>' attribute list.
+ * @see org.eclipse.xsd.XSDSimpleFinal
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_Final()
+ * @model
+ * @generated
+ */
+ EList<XSDSimpleFinal> getFinal();
+
+ /**
+ * Returns the String value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getFinal <em>Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Final</em>' attribute list.
+ * @see #getFinal()
+ */
+ String getStringFinal();
+
+ /**
+ * Returns the value of the '<em><b>Lexical Final</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSimpleFinal}.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDSimpleFinal}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute list represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#element-simpleType">final</a> attribute.
+ * </p>
+ * @see #getStringLexicalFinal()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Final</em>' attribute list.
+ * @see org.eclipse.xsd.XSDSimpleFinal
+ * @see #isSetLexicalFinal()
+ * @see #unsetLexicalFinal()
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_LexicalFinal()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<XSDSimpleFinal> getLexicalFinal();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetLexicalFinal()
+ * @see #getLexicalFinal()
+ * @generated
+ */
+ void unsetLexicalFinal();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Lexical Final</em>' attribute list is set.
+ * @see #unsetLexicalFinal()
+ * @see #getLexicalFinal()
+ * @generated
+ */
+ boolean isSetLexicalFinal();
+
+ /**
+ * Returns the String value of the
+ * '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Lexical Final</em>' attribute list.
+ * @see #getLexicalFinal()
+ * @see #setStringLexicalFinal(java.lang.String)
+ */
+ String getStringLexicalFinal();
+
+ /**
+ * Sets the String value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getLexicalFinal <em>Lexical Final</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param lexicalFinal the new value of the '<em>Lexical Final</em>' attribute.
+ * @see #getLexicalFinal()
+ * @see #getStringLexicalFinal()
+ */
+ void setStringLexicalFinal(String lexicalFinal);
+
+ /**
+ * Returns the value of the '<em><b>Valid Facets</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This computed attribute list represents the
+ * {@link org.eclipse.xsd.XSDFacet#getFacetName facet name}
+ * of each type of facet that is valid for this simple type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Valid Facets</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_ValidFacets()
+ * @model
+ * @generated
+ */
+ EList<String> getValidFacets();
+
+ /**
+ * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSimpleTypeDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference list represents the anonymous simple type definition content of a
+ * <a href="http://www.w3.org/TR/xmlschema-2/#element-restriction">restriction</a>,
+ * <a href="http://www.w3.org/TR/xmlschema-2/#element-list">list</a>, or
+ * <a href="http://www.w3.org/TR/xmlschema-2/#element-union">union</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_Contents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDSimpleTypeDefinition> getContents();
+
+ /**
+ * Returns the value of the '<em><b>Facet Contents</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDConstrainingFacet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference list represents the facet contents of a
+ * <a href="http://www.w3.org/TR/xmlschema-2/#element-restriction">restriction</a>.
+ * There are convenience methods named get<b>Xyz</b>Facet that provide direct access to the individual facets.
+ * There are, however, <b>no</b> methods named setXyzFacet;
+ * one should add facets to this list or remove facets from this list in order to effect change.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Facet Contents</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_FacetContents()
+ * @model containment="true"
+ * @generated
+ */
+ EList<XSDConstrainingFacet> getFacetContents();
+
+ /**
+ * Returns the value of the '<em><b>Facets</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDConstrainingFacet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-facets">facets</a>
+ * infoset property.
+ * It is computed from the {@link #getFacetContents() facet contents} and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Facets</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_Facets()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDConstrainingFacet> getFacets();
+
+ /**
+ * Returns the value of the '<em><b>Member Type Definitions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDSimpleTypeDefinition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-memberTypes">member type definitions</a>
+ * infoset property.
+ * When constructing a union type,
+ * each <b>anonymous</b> member type should be added to both this list and to the contents list:
+ *<pre>
+ * xsdSimpleTypeDefinition.getMemberTypeDefinitions().add(anonymousMemberType);
+ * xsdSimpleTypeDefinition.{@link #getContents}().add(anonymousMemberType);
+ * </li>
+ * The {@link #getVariety() variety} is determined automatically by the presence of member type definitions.
+ *</pre>
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Member Type Definitions</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MemberTypeDefinitions()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDSimpleTypeDefinition> getMemberTypeDefinitions();
+
+ /**
+ * Returns the value of the '<em><b>Fundamental Facets</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDFundamentalFacet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-fund-facets">fundamental facets</a>
+ * infoset property.
+ * It is computed and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fundamental Facets</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_FundamentalFacets()
+ * @model containment="true" required="true" transient="true"
+ * @generated
+ */
+ EList<XSDFundamentalFacet> getFundamentalFacets();
+
+ /**
+ * Returns the value of the '<em><b>Base Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-basetype">base type definition</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Type Definition</em>' reference.
+ * @see #setBaseTypeDefinition(XSDSimpleTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_BaseTypeDefinition()
+ * @model resolveProxies="false" required="true"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getBaseTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getBaseTypeDefinition <em>Base Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Type Definition</em>' reference.
+ * @see #getBaseTypeDefinition()
+ * @generated
+ */
+ void setBaseTypeDefinition(XSDSimpleTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Primitive Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-primitive">primitive type definition</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Primitive Type Definition</em>' reference.
+ * @see #setPrimitiveTypeDefinition(XSDSimpleTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_PrimitiveTypeDefinition()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getPrimitiveTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getPrimitiveTypeDefinition <em>Primitive Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Primitive Type Definition</em>' reference.
+ * @see #getPrimitiveTypeDefinition()
+ * @generated
+ */
+ void setPrimitiveTypeDefinition(XSDSimpleTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Item Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-itemType">item type definition</a>
+ * infoset property.
+ * When constructing a list type,
+ * an <b>anonymous</b> item type should be both set using this method and added to the contents list:
+ *<pre>
+ * xsdSimpleTypeDefinition.setItemTypeDefinition().add(itemType);
+ * xsdSimpleTypeDefinition.{@link #getContents}().add(itemType);
+ *</pre>
+ * The {@link #getVariety() variety} is determined automatically by the presence of an item type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Item Type Definition</em>' reference.
+ * @see #setItemTypeDefinition(XSDSimpleTypeDefinition)
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_ItemTypeDefinition()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getItemTypeDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getItemTypeDefinition <em>Item Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Item Type Definition</em>' reference.
+ * @see #getItemTypeDefinition()
+ * @generated
+ */
+ void setItemTypeDefinition(XSDSimpleTypeDefinition value);
+
+ /**
+ * Returns the value of the '<em><b>Root Type Definition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This walks the {@link #getBaseTypeDefinition() base type definitions}
+ * until it hits that one that has the ur-type definition as it's base type definition.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root Type Definition</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_RootTypeDefinition()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getRootTypeDefinition();
+
+ /**
+ * Returns the value of the '<em><b>Min Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMinFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Min Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MinFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMinFacet getMinFacet();
+
+ /**
+ * Returns the value of the '<em><b>Max Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMaxFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Max Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MaxFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMaxFacet getMaxFacet();
+
+ /**
+ * Returns the value of the '<em><b>Max Inclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMaxInclusiveFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Max Inclusive Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MaxInclusiveFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMaxInclusiveFacet getMaxInclusiveFacet();
+
+ /**
+ * Returns the value of the '<em><b>Min Inclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMinInclusiveFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Min Inclusive Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MinInclusiveFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMinInclusiveFacet getMinInclusiveFacet();
+
+ /**
+ * Returns the value of the '<em><b>Min Exclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMinExclusiveFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Min Exclusive Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MinExclusiveFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMinExclusiveFacet getMinExclusiveFacet();
+
+ /**
+ * Returns the value of the '<em><b>Max Exclusive Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMaxExclusiveFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Max Exclusive Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MaxExclusiveFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMaxExclusiveFacet getMaxExclusiveFacet();
+
+ /**
+ * Returns the value of the '<em><b>Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDLengthFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_LengthFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDLengthFacet getLengthFacet();
+
+ /**
+ * Returns the value of the '<em><b>White Space Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDWhiteSpaceFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>White Space Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_WhiteSpaceFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDWhiteSpaceFacet getWhiteSpaceFacet();
+
+ /**
+ * Returns the value of the '<em><b>Enumeration Facets</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDEnumerationFacet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDEnumerationFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Enumeration Facets</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EnumerationFacets()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<XSDEnumerationFacet> getEnumerationFacets();
+
+ /**
+ * Returns the value of the '<em><b>Pattern Facets</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDPatternFacet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDPatternFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Pattern Facets</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_PatternFacets()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<XSDPatternFacet> getPatternFacets();
+
+ /**
+ * Returns the value of the '<em><b>Cardinality Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDCardinalityFacet} of the {@link #getFundamentalFacets fundamental facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cardinality Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_CardinalityFacet()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDCardinalityFacet getCardinalityFacet();
+
+ /**
+ * Returns the value of the '<em><b>Numeric Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDNumericFacet} of the {@link #getFundamentalFacets fundamental facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Numeric Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_NumericFacet()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDNumericFacet getNumericFacet();
+
+ /**
+ * Returns the value of the '<em><b>Max Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMaxLengthFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Max Length Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MaxLengthFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMaxLengthFacet getMaxLengthFacet();
+
+ /**
+ * Returns the value of the '<em><b>Min Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMinLengthFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Min Length Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_MinLengthFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMinLengthFacet getMinLengthFacet();
+
+ /**
+ * Returns the value of the '<em><b>Total Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDTotalDigitsFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Total Digits Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_TotalDigitsFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDTotalDigitsFacet getTotalDigitsFacet();
+
+ /**
+ * Returns the value of the '<em><b>Fraction Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDFractionDigitsFacet} of the {@link #getFacetContents facet contents}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fraction Digits Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_FractionDigitsFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDFractionDigitsFacet getFractionDigitsFacet();
+
+ /**
+ * Returns the value of the '<em><b>Ordered Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDOrderedFacet} of the {@link #getFundamentalFacets fundamental facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ordered Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_OrderedFacet()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDOrderedFacet getOrderedFacet();
+
+ /**
+ * Returns the value of the '<em><b>Bounded Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDBoundedFacet} of the {@link #getFundamentalFacets fundamental facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bounded Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_BoundedFacet()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDBoundedFacet getBoundedFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Max Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMaxFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Max Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveMaxFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMaxFacet getEffectiveMaxFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective White Space Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDWhiteSpaceFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective White Space Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveWhiteSpaceFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDWhiteSpaceFacet getEffectiveWhiteSpaceFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Max Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMaxLengthFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Max Length Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveMaxLengthFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMaxLengthFacet getEffectiveMaxLengthFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Fraction Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDFractionDigitsFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Fraction Digits Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveFractionDigitsFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDFractionDigitsFacet getEffectiveFractionDigitsFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Pattern Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDPatternFacet} of the {@link #getFacets facets}.
+ * To iterate through each pattern that applies for this type,
+ * use the list returned by getEffectivePatternFacet().{@link XSDPatternFacet#getValue getValue}().
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Pattern Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectivePatternFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDPatternFacet getEffectivePatternFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Enumeration Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDEnumerationFacet} of the {@link #getFacets facets}.
+ * To iterate through each enumerator which is a legal value of this type,
+ * use the list returned by getEffectiveEnumerationFacet().{@link XSDEnumerationFacet#getValue getValue}().
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Enumeration Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveEnumerationFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDEnumerationFacet getEffectiveEnumerationFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Total Digits Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDTotalDigitsFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Total Digits Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveTotalDigitsFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDTotalDigitsFacet getEffectiveTotalDigitsFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Min Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMinLengthFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Min Length Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveMinLengthFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMinLengthFacet getEffectiveMinLengthFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Length Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDLengthFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Length Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveLengthFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDLengthFacet getEffectiveLengthFacet();
+
+ /**
+ * Returns the value of the '<em><b>Effective Min Facet</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the {@link org.eclipse.xsd.XSDMinLengthFacet} of the {@link #getFacets facets}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Effective Min Facet</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_EffectiveMinFacet()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDMinFacet getEffectiveMinFacet();
+
+ /**
+ * Returns the value of the '<em><b>Synthetic Facets</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDFacet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#defn-facets">facets</a>
+ * infoset property, if the rules require a synthesized facet.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Synthetic Facets</em>' containment reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDSimpleTypeDefinition_SyntheticFacets()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ EList<XSDFacet> getSyntheticFacets();
+
+ /**
+ * Returns an assessment of the node.
+ * @return an assessment of the node.
+ * @see #assess(Element, Node)
+ */
+ Assessment assess(Node node);
+
+ /**
+ * Returns an assessment of the node.
+ * @return an assessment of the node.
+ * @see #assess(Element, String)
+ * @since 2.4
+ */
+ Assessment assess(Element context, Node node);
+
+ /**
+ * Returns an assessment of the literal.
+ * @return an assessment of the literal.
+ * @see #assess(Element, String)
+ */
+ Assessment assess(String literal);
+
+ /**
+ * Returns an assessment of the literal.
+ * @return an assessment of the literal.
+ * @see #assess(Element, Node)
+ * @since 2.4
+ */
+ Assessment assess(Element context, String literal);
+
+ /**
+ * Information gathered during the assessment a literal
+ * with respect to a '{@link org.eclipse.xsd.XSDSimpleTypeDefinition <em>Simple Type Definition</em>}'.
+ * <p>
+ * You may begin assessment with a {@link #getNode Node}, which handles three cases:
+ * if the node is an attribute, it's value is used to determine the literal;
+ * if the node is a text node, it's data is used to determine the literal;
+ * if the node is an element, it's (one and only) child text node is used to determine the literal as in the preceeding case.
+ * You may also begin assessment with just a {@link #getLiteral literal};
+ * in this case, the returned diagnostics will contain substitution variables.
+ * </p>
+ */
+ public interface Assessment
+ {
+ /**
+ * Returns the type definition against which the literal is assessed.
+ * @return the type definition against which the literal is assessed.
+ */
+ XSDSimpleTypeDefinition getTypeDefinition();
+
+ /**
+ * Returns the element used as the context for this assessment; this is significant only for interpretting the prefix of QNames.
+ * @return the element used as the context for this assessment.
+ * @since 2.4
+ */
+ Element getContext();
+
+ /**
+ * Returns the node whose literal value is assessed.
+ * @return the node whose literal value is assessed.
+ */
+ Node getNode();
+
+ /**
+ * Returns the literal that is assessed.
+ * @return the literal that is assessed.
+ */
+ String getLiteral();
+
+ /**
+ * Returns the normalized value of the literal that is assessed.
+ * @return the normalized value of the literal that is assessed.
+ */
+ String getNormalizedLiteral();
+
+ /**
+ * Return the <b>value</b> of the normalized literal in the Java representation of the value space.
+ * @return the <b>value</b> of the normalized literal.
+ */
+ Object getValue();
+
+ /**
+ * Returns the canonical literal representation of the assessed value.
+ * @return the canonical literal representation of the assessed value.
+ */
+ String getCanonicalLiteral();
+
+ /**
+ * Returns the diagnostics collected for this particular assessment and for any nested assessments.
+ * @return the diagnostics collected for this particular assessment and for any nested assessments.
+ */
+ Collection<XSDDiagnostic> getDiagnostics();
+
+ /**
+ * Returns any nested assessments that were performed.
+ * In the case of a union, there will be an assessment for the member type definition that was chosen to assess the literal.
+ * In the case of a list, there will be an assessment for every item in the list.
+ * @return any nested assessments that were performed.
+ */
+ Collection<Assessment> getAssessments();
+
+ /**
+ * Returns the diagnostics that are collected for just this particular assessment.
+ * @return the diagnostics that are collected for just this particular assessment.
+ */
+ Collection<XSDDiagnostic> getLocalDiagnostics();
+
+ /**
+ * Called with a noun and a proper noun
+ * to perform substitution on the diagnostic messages,
+ * e.g., format("employee", "John Doe").
+ * If an element or attribute was originally specified,
+ * the word "element" or "attribute" and the URI of the element or attribute
+ * will already have been substituted.
+ * @param noun a noun.
+ * @param name a proper noun.
+ */
+ void format(String noun, String name);
+ }
+
+ /**
+ * Returns whether the literal is valid with respect to this simple type definition.
+ * This involves {@link #assess(java.lang.String) assess}ing that the literal has no diagnostics.
+ * @param literal a literal.
+ * @return whether the literal is valid.
+ * @see #isValidLiteral(Element, String)
+ */
+ boolean isValidLiteral(String literal);
+
+ /**
+ * Returns whether the literal is valid with respect to this simple type definition.
+ * This involves {@link #assess(java.lang.String) assess}ing that the literal has no diagnostics.
+ * @param context the context in which to resolve prefixed of QNames.
+ * @param literal a literal.
+ * @return whether the literal is valid.
+ * @since 2.4
+ */
+ boolean isValidLiteral(Element context, String literal);
+
+ /**
+ * Returns the <b>value</b> of the literal in the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#value-space">value space</a> of this simple type definition.
+ * @param literal a literal.
+ * @return the <b>value</b> of the literal.
+ * @see #getValue(Element, String)
+ */
+ Object getValue(String literal);
+
+ /**
+ * Returns the <b>value</b> of the literal in the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#value-space">value space</a> of this simple type definition.
+ * The type of value expected depends the primitive type:
+ * <p>
+ * <table border=true cols=2 width='90%'>
+ * <tr>
+ * <th width=33% valign=top align=left><b>Built-in Primitive Datatype</b></th>
+ * <th width=33% valign=top align=left><b>Corresponding Java Type</b></th>
+ * </tr>
+ *
+ * <tr>
+ * <td><em>anyListType</em></td>
+ * <td>java.util.List</td>
+ * </tr>
+ *
+ * <tr>
+ * <td>anyURI</td>
+ * <td>java.lang.String</td>
+ * </tr>
+ *
+ * <tr>
+ * <td>base64Binary</td>
+ * <td>org.eclipse.xsd.util.XSDUtil.ByteSequence</td>
+ * </tr>
+ *
+ * <td>boolean</td>
+ * <td>java.lang.Boolean</td>
+ * </tr>
+ *
+ * <td>dateTime</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>date</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>decimal</td>
+ * <td>java.math.BigDecimal</td>
+ * </tr>
+ *
+ * <td>double</td>
+ * <td>java.lang.Double</td>
+ * </tr>
+ *
+ * <td>duration</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>float</td>
+ * <td>java.lang.Float</td>
+ * </tr>
+ *
+ * <td>gDay</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>gMonth</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>gMonthDay</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>gYear</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>gYearMonth</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * <td>hexBinary</td>
+ * <td>org.eclipse.xsd.util.XSDUtil.ByteSequence</td>
+ * </tr>
+ *
+ * <td>NOTATION</td>
+ * <td>java.lang.String</td>
+ * </tr>
+ *
+ * <td>QName</td>
+ * <td>java.lang.String</td>
+ * </tr>
+ *
+ * <td>string</td>
+ * <td>java.lang.String</td>
+ * </tr>
+ *
+ * <td>time</td>
+ * <td>int []</td>
+ * </tr>
+ *
+ * </table>
+ * </p>
+ * <p>
+ * All time-based values are represented as in Xerces.
+ * </p>
+ * @param context the context in which to resolve prefixes of QNames.
+ * @param literal a literal.
+ * @return the <b>value</b> of the literal.
+ * @since 2.4
+ */
+ Object getValue(Element context, String literal);
+
+ /**
+ * Returns the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#dt-whiteSpace">normalized value</a> of the literal
+ * with respect to this simple type definition.
+ * @param literal a literal.
+ * @return the <b>normalized value</b> of the literal.
+ */
+ String getNormalizedLiteral(String literal);
+
+ /**
+ * Returns the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#dt-canonical-representation">canonical literal</a> of the literal
+ * with respect to this simple type definition.
+ * @param literal a literal.
+ * @return the <b>canonical literal</b> of the literal.
+ */
+ String getCanonicalLiteral(String literal);
+
+ /**
+ * Returns <code>-1</code>, <code>0</code>, or <code>1</code>,
+ * depending on the {@link #getOrderedFacet order} of the {@link #getValue value} of each of the given literals.
+ * @param literal1 a literal.
+ * @param literal2 another literal.
+ * @return <code>-1</code>, <code>0</code>, or <code>1</code>, depending on the order of the value of each of the given literals.
+ * @see #compareLiterals(Element, String, Element, String)
+ */
+ int compareLiterals(String literal1, String literal2);
+
+ /**
+ * Returns <code>-1</code>, <code>0</code>, or <code>1</code>,
+ * depending on the {@link #getOrderedFacet order} of the {@link #getValue value} of each of the given literals.
+ * @param context1 the context in which to interpret prefixes of QNames in literal1.
+ * @param literal1 a literal.
+ * @param context2 the context in which to interpret prefixes of QNames in literal2.
+ * @param literal2 another literal.
+ * @return <code>-1</code>, <code>0</code>, or <code>1</code>, depending on the order of the value of each of the given literals.
+ * @since 2.4
+ */
+ int compareLiterals(Element context1, String literal1, Element context2, String literal2);
+
+ /**
+ * Returns <code>-1</code>, <code>0</code>, or <code>1</code>,
+ * depending on the {@link #getOrderedFacet order} of the {@link #getValue value}s.
+ * @param value1 a value.
+ * @param value2 another value.
+ * @return <code>-1</code>, <code>0</code>, or <code>1</code>, depending on the order of the values.
+ */
+ int compareValues(Object value1, Object value2);
+
+ /**
+ * Returns whether the {@link #getValue value} of each of the given literals are equal.
+ * @param literal1 a literal.
+ * @param literal2 another literal.
+ * @return whether the {@link #getValue value} of each of the given literals are equal.
+ * @see #equalLiterals(Element, String, Element, String)
+ */
+ boolean equalLiterals(String literal1, String literal2);
+
+ /**
+ * Returns whether the {@link #getValue value} of each of the given literals are equal.
+ * @param context1 the context in which to interpret prefixes of QNames in literal1.
+ * @param literal1 a literal.
+ * @param context2 the context in which to interpret prefixes of QNames in literal2.
+ * @param literal2 another literal.
+ * @return whether the {@link #getValue value} of each of the given literals are equal.
+ * @since 2.4
+ */
+ boolean equalLiterals(Element context1, String literal1, Element context2, String literal2);
+
+ /**
+ * Returns whether the {@link #getValue value}s are equal.
+ * @param value1 a literal.
+ * @param value2 another literal.
+ * @return whether the {@link #getValue value}s are equal.
+ */
+ boolean equalValues(Object value1, Object value2);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSubstitutionGroupExclusions.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSubstitutionGroupExclusions.java
new file mode 100644
index 0000000..0527559
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDSubstitutionGroupExclusions.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Substitution Group Exclusions</b></em>'.
+ * @see org.eclipse.xsd.XSDElementDeclaration#getSubstitutionGroupExclusions()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDSubstitutionGroupExclusions()
+ * @model
+ * @generated
+ */
+public enum XSDSubstitutionGroupExclusions implements Enumerator
+{
+ /**
+ * The '<em><b>Extension</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION
+ * @generated
+ * @ordered
+ */
+ EXTENSION_LITERAL(0, "extension", "extension"),
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION
+ * @generated
+ * @ordered
+ */
+ RESTRICTION_LITERAL(1, "restriction", "restriction");
+
+ /**
+ * The '<em><b>Extension</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an element with a type derived via extension
+ * may not be nominated to an element declaration's substitution group.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTENSION_LITERAL
+ * @model name="extension"
+ * @generated
+ * @ordered
+ */
+ public static final int EXTENSION = 0;
+
+ /**
+ * The '<em><b>Restriction</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that an element with a type derived via restriction
+ * may not be nominated to an element declaration's substitution group.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESTRICTION_LITERAL
+ * @model name="restriction"
+ * @generated
+ * @ordered
+ */
+ public static final int RESTRICTION = 1;
+
+ /**
+ * An array of all the '<em><b>Substitution Group Exclusions</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDSubstitutionGroupExclusions[] VALUES_ARRAY =
+ new XSDSubstitutionGroupExclusions[]
+ {
+ EXTENSION_LITERAL,
+ RESTRICTION_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Substitution Group Exclusions</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDSubstitutionGroupExclusions> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Substitution Group Exclusions</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDSubstitutionGroupExclusions get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDSubstitutionGroupExclusions result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Substitution Group Exclusions</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDSubstitutionGroupExclusions getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDSubstitutionGroupExclusions result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Substitution Group Exclusions</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDSubstitutionGroupExclusions get(int value)
+ {
+ switch (value)
+ {
+ case EXTENSION: return EXTENSION_LITERAL;
+ case RESTRICTION: return RESTRICTION_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDSubstitutionGroupExclusions(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTerm.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTerm.java
new file mode 100644
index 0000000..7b10b0d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTerm.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Term</b></em>'.
+ * It is used to represent the types of object returned by
+ * {@link XSDParticle#getTerm()}.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDTerm()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDTerm extends XSDComponent, XSDParticleContent
+{
+ // No additional methods.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTotalDigitsFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTotalDigitsFacet.java
new file mode 100644
index 0000000..e51f2b3
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTotalDigitsFacet.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-totalDigits"><em><b>Total Digits Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDTotalDigitsFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDTotalDigitsFacet()
+ * @model
+ * @generated
+ */
+public interface XSDTotalDigitsFacet extends XSDFixedFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#totalDigits-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.xsd.XSDPackage#getXSDTotalDigitsFacet_Value()
+ * @model
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDTotalDigitsFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTypeDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTypeDefinition.java
new file mode 100644
index 0000000..bd96853
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDTypeDefinition.java
@@ -0,0 +1,203 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Definition</b></em>'.
+ * It is used to represent aspects common to
+ * '{@link org.eclipse.xsd.XSDSimpleTypeDefinition <em>Simple Type Definitions</em>}' and
+ * '{@link org.eclipse.xsd.XSDComplexTypeDefinition <em>Complex Type Definitions</em>}'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getDerivationAnnotation <em>Derivation Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getAnnotations <em>Annotations</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getRootType <em>Root Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getBaseType <em>Base Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getSimpleType <em>Simple Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDTypeDefinition#getComplexType <em>Complex Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition()
+ * @model abstract="true"
+ * @generated
+ */
+public interface XSDTypeDefinition extends XSDRedefinableComponent, XSDRedefineContent
+{
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the direct annotation content of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-complexType">complexType</a> element or a
+ * <a href="http://www.w3.org/TR/xmlschema-2/#element-simpleType">simpleType</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDTypeDefinition#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Derivation Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the direct annotation content of a
+ * complex content <a href="http://www.w3.org/TR/xmlschema-1/#element-complexContent::extension">extension</a>,
+ * complex content <a href="http://www.w3.org/TR/xmlschema-1/#element-complexContent::restriction">restriction</a>,
+ * simple content <a href="http://www.w3.org/TR/xmlschema-1/#element-simpleContent::extension">extension</a>,
+ * simple content <a href="http://www.w3.org/TR/xmlschema-1/#element-simpleContent::restriction">restriction</a>,
+ * simple type <a href="http://www.w3.org/TR/xmlschema-2/#element-restriction">restriction</a>,
+ * simple type <a href="http://www.w3.org/TR/xmlschema-2/#element-list">list</a>, or
+ * simple type <a href="http://www.w3.org/TR/xmlschema-2/#element-union">union</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Derivation Annotation</em>' containment reference.
+ * @see #setDerivationAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_DerivationAnnotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getDerivationAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDTypeDefinition#getDerivationAnnotation <em>Derivation Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Derivation Annotation</em>' containment reference.
+ * @see #getDerivationAnnotation()
+ * @generated
+ */
+ void setDerivationAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Annotations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAnnotation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * complex type definition <a href="http://www.w3.org/TR/xmlschema-1/#ct-annotations">annotation</a> or
+ * simple type definition <a href="http://www.w3.org/TR/xmlschema-2/#defn-annotation">annotation</a>
+ * infoset property.
+ * It is computed from the
+ * {@link #getAnnotation() annotation},
+ * {@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentAnnotation content annotation},
+ * {@link #getAnnotation() derivationAnnotation}
+ * and should typically not be modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_Annotations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAnnotation> getAnnotations();
+
+ /**
+ * Returns the value of the '<em><b>Root Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This walks the {@link #getBaseType() base types}
+ * until it hits that one that has the ur-type definition as it's base type.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root Type</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_RootType()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDTypeDefinition getRootType();
+
+ /**
+ * Returns the value of the '<em><b>Base Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the same result as either
+ * the simple '{@link org.eclipse.xsd.XSDSimpleTypeDefinition#getBaseTypeDefinition() <em>Base Type Definition</em>}' reference or
+ * the complex '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition() <em>Base Type Definition</em>}' reference.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Type</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_BaseType()
+ * @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDTypeDefinition getBaseType();
+
+ /**
+ * Returns the value of the '<em><b>Simple Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents either
+ * the '{@link org.eclipse.xsd.XSDSimpleTypeDefinition <em>Simple Type Definition</em>}' itself or
+ * the complex '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition() <em>Content Type</em>}' reference,
+ * if it is {@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory() simple}.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Simple Type</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_SimpleType()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDSimpleTypeDefinition getSimpleType();
+
+ /**
+ * Returns the value of the '<em><b>Complex Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents
+ * the complex '{@link org.eclipse.xsd.XSDComplexTypeDefinition#getBaseTypeDefinition() <em>Content Type</em>}' reference,
+ * if it is {@link org.eclipse.xsd.XSDComplexTypeDefinition#getContentTypeCategory() complex},
+ * i.e., if it is a '{@link org.eclipse.xsd.XSDParticle <em>Particle</em>}'.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Complex Type</em>' reference.
+ * @see org.eclipse.xsd.XSDPackage#getXSDTypeDefinition_ComplexType()
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ XSDParticle getComplexType();
+
+ /**
+ * Returns the first type between this and the given one, that derives from it's base in a way not permitted
+ * as constrained by Type Derivation OK
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-ct-derived-ok">Complex</a> and
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-st-derived-ok">Simple</a>.
+ * The result is <code>null</code> if the derivation is valid;
+ * the result is the {@link org.eclipse.xsd.util.XSDConstants#isURType UR-type},
+ * if this type is not related to the given type;
+ * otherwise, the result is the base with the blocked derivation method.
+ * @return the first type between this and the given one, that derives from it's base in a way not permitted.
+ */
+ XSDTypeDefinition getBadTypeDerivation(XSDTypeDefinition xsdTypeDefinition, boolean extension, boolean restriction);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDVariety.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDVariety.java
new file mode 100644
index 0000000..99549b9
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDVariety.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Variety</b></em>'.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition#getVariety()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDVariety()
+ * @model
+ * @generated
+ */
+public enum XSDVariety implements Enumerator
+{
+ /**
+ * The '<em><b>Atomic</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ATOMIC
+ * @generated
+ * @ordered
+ */
+ ATOMIC_LITERAL(0, "atomic", "atomic"),
+
+ /**
+ * The '<em><b>List</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LIST
+ * @generated
+ * @ordered
+ */
+ LIST_LITERAL(1, "list", "list"),
+
+ /**
+ * The '<em><b>Union</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNION
+ * @generated
+ * @ordered
+ */
+ UNION_LITERAL(2, "union", "union");
+
+ /**
+ * The '<em><b>Atomic</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a simple type definition is <a href="http://www.w3.org/TR/xmlschema-2/#dt-atomic">atomic</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ATOMIC_LITERAL
+ * @model name="atomic"
+ * @generated
+ * @ordered
+ */
+ public static final int ATOMIC = 0;
+
+ /**
+ * The '<em><b>List</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a simple type definition is a <a href="http://www.w3.org/TR/xmlschema-2/#dt-list">list</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LIST_LITERAL
+ * @model name="list"
+ * @generated
+ * @ordered
+ */
+ public static final int LIST = 1;
+
+ /**
+ * The '<em><b>Union</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that a simple type definition is a <a href="http://www.w3.org/TR/xmlschema-2/#dt-union">union</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNION_LITERAL
+ * @model name="union"
+ * @generated
+ * @ordered
+ */
+ public static final int UNION = 2;
+
+ /**
+ * An array of all the '<em><b>Variety</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDVariety[] VALUES_ARRAY =
+ new XSDVariety[]
+ {
+ ATOMIC_LITERAL,
+ LIST_LITERAL,
+ UNION_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Variety</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDVariety> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Variety</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDVariety get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDVariety result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Variety</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDVariety getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDVariety result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Variety</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDVariety get(int value)
+ {
+ switch (value)
+ {
+ case ATOMIC: return ATOMIC_LITERAL;
+ case LIST: return LIST_LITERAL;
+ case UNION: return UNION_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDVariety(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWhiteSpace.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWhiteSpace.java
new file mode 100644
index 0000000..47f73ea
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWhiteSpace.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>White Space</b></em>'.
+ * @see org.eclipse.xsd.XSDWhiteSpaceFacet#getValue()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDWhiteSpace()
+ * @model
+ * @generated
+ */
+public enum XSDWhiteSpace implements Enumerator
+{
+ /**
+ * The '<em><b>Preserve</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PRESERVE
+ * @generated
+ * @ordered
+ */
+ PRESERVE_LITERAL(0, "preserve", "preserve"),
+
+ /**
+ * The '<em><b>Replace</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #REPLACE
+ * @generated
+ * @ordered
+ */
+ REPLACE_LITERAL(1, "replace", "replace"),
+
+ /**
+ * The '<em><b>Collapse</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #COLLAPSE
+ * @generated
+ * @ordered
+ */
+ COLLAPSE_LITERAL(2, "collapse", "collapse");
+
+ /**
+ * The '<em><b>Preserve</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate the white space is <a href="http://www.w3.org/TR/xmlschema-2/#dt-whitespace">preserved</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PRESERVE_LITERAL
+ * @model name="preserve"
+ * @generated
+ * @ordered
+ */
+ public static final int PRESERVE = 0;
+
+ /**
+ * The '<em><b>Replace</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate the white space is <a href="http://www.w3.org/TR/xmlschema-2/#dt-whitespace">replaced</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #REPLACE_LITERAL
+ * @model name="replace"
+ * @generated
+ * @ordered
+ */
+ public static final int REPLACE = 1;
+
+ /**
+ * The '<em><b>Collapse</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate the white space is <a href="http://www.w3.org/TR/xmlschema-2/#dt-whitespace">collapsed</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #COLLAPSE_LITERAL
+ * @model name="collapse"
+ * @generated
+ * @ordered
+ */
+ public static final int COLLAPSE = 2;
+
+ /**
+ * An array of all the '<em><b>White Space</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDWhiteSpace[] VALUES_ARRAY =
+ new XSDWhiteSpace[]
+ {
+ PRESERVE_LITERAL,
+ REPLACE_LITERAL,
+ COLLAPSE_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>White Space</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDWhiteSpace> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>White Space</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDWhiteSpace get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDWhiteSpace result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>White Space</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDWhiteSpace getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDWhiteSpace result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>White Space</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDWhiteSpace get(int value)
+ {
+ switch (value)
+ {
+ case PRESERVE: return PRESERVE_LITERAL;
+ case REPLACE: return REPLACE_LITERAL;
+ case COLLAPSE: return COLLAPSE_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDWhiteSpace(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWhiteSpaceFacet.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWhiteSpaceFacet.java
new file mode 100644
index 0000000..5d1ff00
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWhiteSpaceFacet.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-2/#dc-whiteSpace"><em><b>White Space Facet</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDWhiteSpaceFacet#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDWhiteSpaceFacet()
+ * @model
+ * @generated
+ */
+public interface XSDWhiteSpaceFacet extends XSDFixedFacet
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDWhiteSpace}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#whiteSpace-value">value</a>
+ * infoset property.
+ * It is computed from the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute and should typically not be set directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDWhiteSpace
+ * @see #setValue(XSDWhiteSpace)
+ * @see org.eclipse.xsd.XSDPackage#getXSDWhiteSpaceFacet_Value()
+ * @model
+ * @generated
+ */
+ XSDWhiteSpace getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDWhiteSpaceFacet#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see org.eclipse.xsd.XSDWhiteSpace
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(XSDWhiteSpace value);
+
+ /**
+ * This does any
+ */
+ String getNormalizedLiteral(String literal);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWildcard.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWildcard.java
new file mode 100644
index 0000000..b254548
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDWildcard.java
@@ -0,0 +1,302 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object
+ * '<a href="http://www.w3.org/TR/xmlschema-1/#Wildcard"><em><b>Wildcards</b></em></a>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDWildcard#getNamespaceConstraintCategory <em>Namespace Constraint Category</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDWildcard#getNamespaceConstraint <em>Namespace Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDWildcard#getProcessContents <em>Process Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDWildcard#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDWildcard#getAnnotations <em>Annotations</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard()
+ * @model
+ * @generated
+ */
+public interface XSDWildcard extends XSDTerm
+{
+ /**
+ * Returns the value of the '<em><b>Namespace Constraint Category</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDNamespaceConstraintCategory}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the category of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#namespace_constraint">namespace constraint</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Namespace Constraint Category</em>' attribute.
+ * @see org.eclipse.xsd.XSDNamespaceConstraintCategory
+ * @see #setNamespaceConstraintCategory(XSDNamespaceConstraintCategory)
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard_NamespaceConstraintCategory()
+ * @model
+ * @generated
+ */
+ XSDNamespaceConstraintCategory getNamespaceConstraintCategory();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDWildcard#getNamespaceConstraintCategory <em>Namespace Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Namespace Constraint Category</em>' attribute.
+ * @see org.eclipse.xsd.XSDNamespaceConstraintCategory
+ * @see #getNamespaceConstraintCategory()
+ * @generated
+ */
+ void setNamespaceConstraintCategory(XSDNamespaceConstraintCategory value);
+
+ /**
+ * Returns the value of the '<em><b>Namespace Constraint</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the value of the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#namespace_constraint">namespace constraint</a>
+ * infoset property.
+ * It is computed from the {@link #getLexicalNamespaceConstraint() lexical namespace constraint}
+ * and should typically not be modified directly.
+ * </p>
+ * @see #getStringNamespaceConstraint()
+ * @<!-- end-user-doc -->
+ * @return the value of the '<em>Namespace Constraint</em>' attribute list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard_NamespaceConstraint()
+ * @model
+ * @generated
+ */
+ EList<String> getNamespaceConstraint();
+
+ /**
+ * Returns the String value of the '{@link org.eclipse.xsd.XSDWildcard#getNamespaceConstraint <em>Namespace Constraint</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Namespace Constraint</em>' attribute list.
+ * @see #getNamespaceConstraint()
+ */
+ public String getStringNamespaceConstraint();
+
+ /**
+ * Returns the value of the '<em><b>Process Contents</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDProcessContents}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#process_contents">process contents</a>
+ * infoset property.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Process Contents</em>' attribute.
+ * @see org.eclipse.xsd.XSDProcessContents
+ * @see #isSetProcessContents()
+ * @see #unsetProcessContents()
+ * @see #setProcessContents(XSDProcessContents)
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard_ProcessContents()
+ * @model unsettable="true"
+ * @generated
+ */
+ XSDProcessContents getProcessContents();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDWildcard#getProcessContents <em>Process Contents</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Process Contents</em>' attribute.
+ * @see org.eclipse.xsd.XSDProcessContents
+ * @see #isSetProcessContents()
+ * @see #unsetProcessContents()
+ * @see #getProcessContents()
+ * @generated
+ */
+ void setProcessContents(XSDProcessContents value);
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDWildcard#getProcessContents <em>Process Contents</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetProcessContents()
+ * @see #getProcessContents()
+ * @see #setProcessContents(XSDProcessContents)
+ * @generated
+ */
+ void unsetProcessContents();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDWildcard#getProcessContents <em>Process Contents</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Process Contents</em>' attribute is set.
+ * @see #unsetProcessContents()
+ * @see #getProcessContents()
+ * @see #setProcessContents(XSDProcessContents)
+ * @generated
+ */
+ boolean isSetProcessContents();
+
+ /**
+ * Returns the value of the '<em><b>Lexical Namespace Constraint</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * any <a href="http://www.w3.org/TR/xmlschema-1/#element-any">namespace</a> or
+ * anyAttribute <a href="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute">namespace</a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lexical Namespace Constraint</em>' attribute list.
+ * @see #isSetLexicalNamespaceConstraint()
+ * @see #unsetLexicalNamespaceConstraint()
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard_LexicalNamespaceConstraint()
+ * @model unsettable="true"
+ * @generated
+ */
+ EList<String> getLexicalNamespaceConstraint();
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetLexicalNamespaceConstraint()
+ * @see #getLexicalNamespaceConstraint()
+ * @generated
+ */
+ void unsetLexicalNamespaceConstraint();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}' attribute list is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Lexical Namespace Constraint</em>' attribute list is set.
+ * @see #unsetLexicalNamespaceConstraint()
+ * @see #getLexicalNamespaceConstraint()
+ * @generated
+ */
+ boolean isSetLexicalNamespaceConstraint();
+
+ /**
+ * Returns the String value of the '{@link org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the String value of the '<em>Lexical Namespace Constraint</em>' attribute list.
+ * @see #getLexicalNamespaceConstraint()
+ * @see #setStringLexicalNamespaceConstraint(java.lang.String)
+ */
+ public String getStringLexicalNamespaceConstraint();
+
+ /**
+ * Sets the String value of the '{@link org.eclipse.xsd.XSDWildcard#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param lexicalNamespaceConstraint the new value of the '<em>Lexical Namespace Constraint</em>' attribute.
+ * @see #getLexicalNamespaceConstraint()
+ * @see #getStringLexicalNamespaceConstraint()
+ */
+ public void setStringLexicalNamespaceConstraint(String lexicalNamespaceConstraint);
+
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the annotation content of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-any">any</a> or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute">anyAttribute</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDWildcard#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+ /**
+ * Returns the value of the '<em><b>Annotations</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xsd.XSDAnnotation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This represents the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#w-annotation">annotation</a>
+ * infoset property.
+ * It is computed from the {@link #getAnnotation annotation} and should typically not modified directly.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotations</em>' reference list.
+ * @see org.eclipse.xsd.XSDPackage#getXSDWildcard_Annotations()
+ * @model resolveProxies="false"
+ * @generated
+ */
+ EList<XSDAnnotation> getAnnotations();
+
+ /**
+ * Returns whether this wildcard is a <a href="http://www.w3.org/TR/xmlschema-1/#cos-ns-subset">subset</a> of the given wildcard.
+ * @param superSetWildcard the other wildcard.
+ * @return whether this wildcard is a subset.
+ * @see #attributeWildcardUnion
+ * @see #attributeWildcardIntersection
+ */
+ boolean isWildcardSubset(XSDWildcard superSetWildcard);
+
+ /**
+ * Returns a wildcard that is the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-aw-union">attribute wildcard union</a>
+ * of this wildcard and the given wildcard.
+ * @param otherWildcard another wildcard.
+ * @return a wildcard that is the attribute wildcard union of this wildcard and the given wildcard.
+ * @see #isWildcardSubset
+ * @see #attributeWildcardIntersection
+ */
+ XSDWildcard attributeWildcardUnion(XSDWildcard otherWildcard);
+
+ /**
+ * Returns a wildcard that is the
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cos-aw-intersect">attribute wildcard interection</a>
+ * of this wildcard and the given wildcard.
+ * @param otherWildcard another wildcard.
+ * @return a wildcard that is the attribute wildcard interection of this wildcard and the given wildcard.
+ * @see #isWildcardSubset
+ * @see #attributeWildcardUnion
+ */
+ XSDWildcard attributeWildcardIntersection(XSDWildcard otherWildcard);
+
+
+ /**
+ * Returns whether the namespace is
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cvc-wildcard-namespace">allowed</a>
+ * by the wildcard.
+ * @return whether the namespace is allowed by the wildcard.
+ */
+ boolean allows(String namespace);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDXPathDefinition.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDXPathDefinition.java
new file mode 100644
index 0000000..eb7b59b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDXPathDefinition.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>XPath Definition</b></em>'.
+ * It represents a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-field">field</a> or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-selector">selector</a> of an
+ * <a href="http://www.w3.org/TR/xmlschema-1/#cIdentity-constraint_Definitions">Identity-constraint Definition</a>.
+ * It defines a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#coss-identity-constraint">restricted</a>
+ * <a href="http://www.w3.org/TR/xmlschema-1/#bib-xpath">XPath</a>.
+ * It is used to represent the types of object returned by
+ * the '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getFields() <em>Fields</em>}' reference list and
+ * the '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition#getSelector() <em>Selector</em>}' reference.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.XSDXPathDefinition#getVariety <em>Variety</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDXPathDefinition#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.XSDXPathDefinition#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.xsd.XSDPackage#getXSDXPathDefinition()
+ * @model
+ * @generated
+ */
+public interface XSDXPathDefinition extends XSDComponent
+{
+ /**
+ * Returns the value of the '<em><b>Variety</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.xsd.XSDXPathVariety}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This attribute represents whether this is
+ * a <a href="http://www.w3.org/TR/xmlschema-1/#element-field">field</a> or
+ * a <a href="http://www.w3.org/TR/xmlschema-1/#element-selector">selector</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Variety</em>' attribute.
+ * @see org.eclipse.xsd.XSDXPathVariety
+ * @see #setVariety(XSDXPathVariety)
+ * @see org.eclipse.xsd.XSDPackage#getXSDXPathDefinition_Variety()
+ * @model
+ * @generated
+ */
+ XSDXPathVariety getVariety();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDXPathDefinition#getVariety <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Variety</em>' attribute.
+ * @see org.eclipse.xsd.XSDXPathVariety
+ * @see #getVariety()
+ * @generated
+ */
+ void setVariety(XSDXPathVariety value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete attribute represents the value of the
+ * selector <a href="http://www.w3.org/TR/xmlschema-1/#element-selector">xpath<a> or
+ * field <a href="http://www.w3.org/TR/xmlschema-1/#element-selector">xpath<a> attribute.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.xsd.XSDPackage#getXSDXPathDefinition_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDXPathDefinition#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This concrete reference represents the annotation contents defined within the body of a
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-field">field</a> or
+ * <a href="http://www.w3.org/TR/xmlschema-1/#element-selector">selector</a> element.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Annotation</em>' containment reference.
+ * @see #setAnnotation(XSDAnnotation)
+ * @see org.eclipse.xsd.XSDPackage#getXSDXPathDefinition_Annotation()
+ * @model containment="true"
+ * @generated
+ */
+ XSDAnnotation getAnnotation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xsd.XSDXPathDefinition#getAnnotation <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Annotation</em>' containment reference.
+ * @see #getAnnotation()
+ * @generated
+ */
+ void setAnnotation(XSDAnnotation value);
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDXPathVariety.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDXPathVariety.java
new file mode 100644
index 0000000..ee2140c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/XSDXPathVariety.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd;
+
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>XPath Variety</b></em>'.
+ * @see org.eclipse.xsd.XSDXPathDefinition#getVariety()
+ * @<!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage#getXSDXPathVariety()
+ * @model
+ * @generated
+ */
+public enum XSDXPathVariety implements Enumerator
+{
+ /**
+ * The '<em><b>Selector</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SELECTOR
+ * @generated
+ * @ordered
+ */
+ SELECTOR_LITERAL(0, "selector", "selector"),
+
+ /**
+ * The '<em><b>Field</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <p>
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FIELD
+ * @generated
+ * @ordered
+ */
+ FIELD_LITERAL(1, "field", "field");
+
+ /**
+ * The '<em><b>Selector</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the XPath definition is a <a href="http://www.w3.org/TR/xmlschema-1/#element-selector">selector</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SELECTOR_LITERAL
+ * @model name="selector"
+ * @generated
+ * @ordered
+ */
+ public static final int SELECTOR = 0;
+
+ /**
+ * The '<em><b>Field</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * This is used to indicate that the XPath definition is a <a href="http://www.w3.org/TR/xmlschema-1/#element-field">field</a>.
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FIELD_LITERAL
+ * @model name="field"
+ * @generated
+ * @ordered
+ */
+ public static final int FIELD = 1;
+
+ /**
+ * An array of all the '<em><b>XPath Variety</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final XSDXPathVariety[] VALUES_ARRAY =
+ new XSDXPathVariety[]
+ {
+ SELECTOR_LITERAL,
+ FIELD_LITERAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>XPath Variety</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<XSDXPathVariety> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>XPath Variety</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal the literal.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDXPathVariety get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDXPathVariety result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>XPath Variety</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param name the name.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDXPathVariety getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ XSDXPathVariety result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>XPath Variety</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the integer value.
+ * @return the matching enumerator or <code>null</code>.
+ * @generated
+ */
+ public static XSDXPathVariety get(int value)
+ {
+ switch (value)
+ {
+ case SELECTOR: return SELECTOR_LITERAL;
+ case FIELD: return FIELD_LITERAL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private XSDXPathVariety(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/Annotations.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/Annotations.gif
new file mode 100644
index 0000000..d3ea175
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/Annotations.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentAttributes.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentAttributes.gif
new file mode 100644
index 0000000..044dce4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentAttributes.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentHierarchy.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentHierarchy.gif
new file mode 100644
index 0000000..52e2f3c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentHierarchy.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentHierarchyPart2.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentHierarchyPart2.gif
new file mode 100644
index 0000000..419197d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentHierarchyPart2.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentRelations.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentRelations.gif
new file mode 100644
index 0000000..b5d7873
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ComponentRelations.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteAttributes.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteAttributes.gif
new file mode 100644
index 0000000..ffcf32a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteAttributes.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteComponents.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteComponents.gif
new file mode 100644
index 0000000..37ba4a9
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteComponents.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteContainment.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteContainment.gif
new file mode 100644
index 0000000..e418ce7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteContainment.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteResolution.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteResolution.gif
new file mode 100644
index 0000000..161fb19
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteResolution.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteSupplemental.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteSupplemental.gif
new file mode 100644
index 0000000..015461b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/ConcreteSupplemental.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/Diagnostics.gif b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/Diagnostics.gif
new file mode 100644
index 0000000..36213c5
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/doc-files/Diagnostics.gif
Binary files differ
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreSchemaBuilder.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreSchemaBuilder.java
new file mode 100644
index 0000000..538b02a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreSchemaBuilder.java
@@ -0,0 +1,2072 @@
+/**
+ * Copyright (c) 2005-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore;
+
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.ETypeParameter;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDParser;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * This class produces an XSDSchema given an Ecore EPackage.
+ */
+public class EcoreSchemaBuilder extends MapBuilder
+{
+ /**
+ * The schema for schema namespace version to be used for new schemas.
+ */
+ protected String defaultXMLSchemaNamespace = XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001;
+
+ /**
+ * The prefix to be used for the schema for schema namespace version in new schemas.
+ */
+ protected String defaultXMLSchemaNamespacePrefix = "xsd";
+
+ /**
+ * The extended meta data used to determine the schema structure.
+ */
+ protected ExtendedMetaData extendedMetaData;
+
+ /**
+ * Store the reverse map too.
+ */
+ protected Map<EModelElement, XSDComponent> eModelElementToXSDComponentMap = new HashMap<EModelElement, XSDComponent>();
+
+ public EcoreSchemaBuilder(ExtendedMetaData extendedMetaData)
+ {
+ this.extendedMetaData = extendedMetaData;
+ }
+
+ @Override
+ protected void map(XSDComponent xsdComponent, EModelElement eModelElement)
+ {
+ super.map(xsdComponent, eModelElement);
+
+ // Store the reverse map as well.
+ //
+ eModelElementToXSDComponentMap.put(eModelElement, xsdComponent);
+ }
+
+ /*
+ public Collection generate(EPackage ePackage)
+ {
+ XSDSchema xsdSchema = getSchema(ePackage);
+
+ Collection result = new ArrayList();
+ result.add(xsdSchema);
+ if (mapper != null)
+ {
+ result.add(mapper.getRoot());
+ }
+
+ return result;
+ }
+ */
+
+ public XSDSchema getSchema(EPackage ePackage)
+ {
+ XSDSchema xsdSchema = (XSDSchema)eModelElementToXSDComponentMap.get(ePackage);
+ if (xsdSchema == null)
+ {
+ xsdSchema = buildSchema(ePackage);
+ }
+ return xsdSchema;
+ }
+
+ protected String getQualifiedPackageName(EPackage ePackage)
+ {
+ return ePackage.getName();
+ }
+
+ protected XSDSchema buildSchema(EPackage ePackage)
+ {
+ XSDSchema xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ addInput(ePackage);
+ addOutput(xsdSchema);
+ map(xsdSchema, ePackage);
+
+ // Set the namespace.
+ //
+ String targetNamespace = extendedMetaData.getNamespace(ePackage);
+ xsdSchema.setTargetNamespace(targetNamespace);
+
+ // Choose the schema for schema namespace and prefix.
+ //
+ Map<String, String> namespaces = xsdSchema.getQNamePrefixToNamespaceMap();
+ xsdSchema.setSchemaForSchemaQNamePrefix(defaultXMLSchemaNamespacePrefix);
+ namespaces.put(defaultXMLSchemaNamespacePrefix, defaultXMLSchemaNamespace);
+
+ // Ensure that a prefix is assigned for the target namespace.
+ //
+ handlePrefix(namespaces, ePackage.getNsPrefix(), targetNamespace);
+
+ // Create the node so that annotations can be added to the DOM.
+ //
+ xsdSchema.updateElement();
+
+ buildAnnotations(xsdSchema, ePackage);
+
+ // Remember the package name and prefix.
+ //
+ createEcoreAnnotation(xsdSchema, "package", getQualifiedPackageName(ePackage));
+ createEcoreAnnotation(xsdSchema, "nsPrefix", ePackage.getNsPrefix());
+
+ // Generate the global elements and attributes.
+ //
+ EClass documentRootEClass = extendedMetaData.getDocumentRoot(ePackage);
+ if (documentRootEClass == null)
+ {
+ for (EClassifier eClassifier : ePackage.getEClassifiers())
+ {
+ if (eClassifier instanceof EClass)
+ {
+ EClass eClass = (EClass)eClassifier;
+ if (extendedMetaData.getContentKind(eClass) == ExtendedMetaData.UNSPECIFIED_CONTENT)
+ {
+ buildGlobalElement(xsdSchema, eClass);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (!"DocumentRoot".equals(documentRootEClass.getName()))
+ {
+ createEcoreAnnotation(xsdSchema, "documentRoot", documentRootEClass.getName());
+ }
+
+ for (int i = 0, size = documentRootEClass.getFeatureCount(); i < size; ++i)
+ {
+ EStructuralFeature eStructuralFeature = documentRootEClass.getEStructuralFeature(i);
+ if (extendedMetaData.getName(eStructuralFeature).indexOf(':') == -1)
+ {
+ buildGlobalFeature(xsdSchema, eStructuralFeature);
+ }
+ }
+ }
+
+ // Generate the type definitions.
+ //
+ for (EClassifier eClassifier : ePackage.getEClassifiers())
+ {
+ if (eClassifier != documentRootEClass)
+ {
+ buildTypeDefinition(xsdSchema, eClassifier);
+ }
+ }
+
+ return xsdSchema;
+ }
+
+ protected XSDElementDeclaration buildGlobalElement(XSDSchema xsdSchema, EClass eClass)
+ {
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setName(extendedMetaData.getName(eClass));
+
+ XSDTypeDefinition xsdTypeDefinition = xsdSchema.resolveTypeDefinitionURI(getURI(eClass));
+ handleImport(xsdSchema, xsdTypeDefinition);
+ xsdElementDeclaration.setTypeDefinition(xsdTypeDefinition);
+
+ xsdSchema.getContents().add(xsdElementDeclaration);
+ map(xsdElementDeclaration, eClass);
+
+ createEcoreAnnotation(xsdElementDeclaration, "ignore", "true");
+
+ return xsdElementDeclaration;
+ }
+
+ protected XSDFeature buildGlobalFeature(XSDSchema xsdSchema, EStructuralFeature eStructuralFeature)
+ {
+ switch (extendedMetaData.getFeatureKind(eStructuralFeature))
+ {
+ case ExtendedMetaData.ELEMENT_FEATURE:
+ {
+ XSDElementDeclaration xsdElementDeclaration = buildGlobalElement(xsdSchema, eStructuralFeature);
+ return xsdElementDeclaration;
+ }
+ case ExtendedMetaData.ATTRIBUTE_FEATURE:
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = buildGlobalAttribute(xsdSchema, eStructuralFeature);
+ return xsdAttributeDeclaration;
+ }
+ case ExtendedMetaData.ELEMENT_WILDCARD_FEATURE:
+ case ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE:
+ case ExtendedMetaData.SIMPLE_FEATURE:
+ case ExtendedMetaData.GROUP_FEATURE:
+ default:
+ {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * Handle difference lexical representations for default values,
+ * in particular, positive and negative infinity for float and double.
+ * @since 2.8
+ */
+ protected String transformDefaultValue(XSDSimpleTypeDefinition xsdSimpleTypeDefinition, String defaultValue)
+ {
+ XSDSimpleTypeDefinition primitiveTypeDefinition = xsdSimpleTypeDefinition.getPrimitiveTypeDefinition();
+ if (primitiveTypeDefinition != null &&
+ (primitiveTypeDefinition.hasNameAndTargetNamespace("float", defaultXMLSchemaNamespace) ||
+ primitiveTypeDefinition.hasNameAndTargetNamespace("double", defaultXMLSchemaNamespace)))
+ {
+ if ("Infinity".equals(defaultValue))
+ {
+ return "INF";
+ }
+ else if ("-Infinity".equals(defaultValue))
+ {
+ return "-INF";
+ }
+ }
+ return defaultValue;
+ }
+
+ protected XSDElementDeclaration buildGlobalElement(XSDSchema xsdSchema, EStructuralFeature eStructuralFeature)
+ {
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setName(extendedMetaData.getName(eStructuralFeature));
+
+ if (!eStructuralFeature.isChangeable())
+ {
+ xsdElementDeclaration.setAbstract(true);
+ }
+
+ EStructuralFeature affiliation = extendedMetaData.getAffiliation(eStructuralFeature);
+ if (affiliation != null)
+ {
+ XSDElementDeclaration xsdAffiliation = xsdSchema.resolveElementDeclarationURI(getURI(affiliation));
+ handleImport(xsdSchema, xsdAffiliation);
+ xsdElementDeclaration.setSubstitutionGroupAffiliation(xsdAffiliation);
+ }
+
+ EClassifier eType = eStructuralFeature.getEType();
+ XSDTypeDefinition xsdTypeDefinition = xsdSchema.resolveTypeDefinitionURI(getURI(eType));
+ handleImport(xsdSchema, xsdTypeDefinition);
+ xsdElementDeclaration.setTypeDefinition(xsdTypeDefinition);
+
+ if (isWrapperType(eType))
+ {
+ xsdElementDeclaration.setNillable(true);
+ }
+
+ String defaultValue = eStructuralFeature.getDefaultValueLiteral();
+ if (defaultValue != null)
+ {
+ xsdElementDeclaration.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ xsdElementDeclaration.setLexicalValue(transformDefaultValue((XSDSimpleTypeDefinition)xsdElementDeclaration.getTypeDefinition(), defaultValue));
+ }
+
+ xsdSchema.getContents().add(xsdElementDeclaration);
+ map(xsdElementDeclaration, eStructuralFeature);
+
+ if (eStructuralFeature.eIsSet(EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE))
+ {
+ createEcoreAnnotation(xsdElementDeclaration, "type", getGenericType(xsdSchema, eStructuralFeature.getEGenericType()));
+ }
+
+ buildAnnotations(xsdElementDeclaration, eStructuralFeature);
+
+ return xsdElementDeclaration;
+ }
+
+ protected XSDAttributeDeclaration buildGlobalAttribute(XSDSchema xsdSchema, EStructuralFeature eStructuralFeature)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ xsdAttributeDeclaration.setName(extendedMetaData.getName(eStructuralFeature));
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdSchema.resolveSimpleTypeDefinitionURI(getURI(eStructuralFeature.getEType()));
+ handleImport(xsdSchema, xsdSimpleTypeDefinition);
+ xsdAttributeDeclaration.setTypeDefinition(xsdSimpleTypeDefinition);
+
+ String defaultValue = eStructuralFeature.getDefaultValueLiteral();
+ if (defaultValue != null)
+ {
+ xsdAttributeDeclaration.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ xsdAttributeDeclaration.setLexicalValue(transformDefaultValue(xsdAttributeDeclaration.getTypeDefinition(), defaultValue));
+ }
+
+ xsdSchema.getContents().add(xsdAttributeDeclaration);
+ map(xsdAttributeDeclaration, eStructuralFeature);
+
+ if (eStructuralFeature.eIsSet(EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE))
+ {
+ createEcoreAnnotation(xsdAttributeDeclaration, "type", getGenericType(xsdSchema, eStructuralFeature.getEGenericType()));
+ }
+
+ buildAnnotations(xsdAttributeDeclaration, eStructuralFeature);
+
+ return xsdAttributeDeclaration;
+ }
+
+ protected XSDTypeDefinition buildTypeDefinition(XSDSchema xsdSchema, EClassifier eClassifier)
+ {
+ if (eClassifier instanceof EClass)
+ {
+ return buildComplexTypeDefinition(xsdSchema, (EClass)eClassifier);
+ }
+ else
+ {
+ return buildSimpleTypeDefinition(xsdSchema, (EDataType)eClassifier);
+ }
+ }
+
+ protected XSDSimpleTypeDefinition buildSimpleTypeDefinition(XSDSchema xsdSchema, EDataType eDataType)
+ {
+ String name = extendedMetaData.getName(eDataType);
+ boolean isAnonymousWrapperType = name.endsWith(":Object");
+ if (isAnonymousWrapperType && EcorePackage.eNS_URI.equals(xsdSchema.getTargetNamespace()))
+ {
+ name = eDataType.getName();
+ isAnonymousWrapperType = false;
+ }
+ if (!isAnonymousWrapperType)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+
+ xsdSimpleTypeDefinition.setName(name);
+
+ String instanceClass = null;
+ EDataType baseType = extendedMetaData.getBaseType(eDataType);
+ if (baseType != null)
+ {
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSchema.resolveSimpleTypeDefinitionURI(getURI(baseType));
+ handleImport(xsdSchema, baseTypeDefinition);
+ xsdSimpleTypeDefinition.setBaseTypeDefinition(baseTypeDefinition);
+
+ // Produce an instance class declaration if the type is different from that of the base.
+ //
+ instanceClass = eDataType.getInstanceTypeName();
+ if (instanceClass != null && instanceClass.equals(baseType.getInstanceTypeName()))
+ {
+ instanceClass = null;
+ }
+ }
+ else
+ {
+ EDataType itemType = extendedMetaData.getItemType(eDataType);
+ if (itemType != null)
+ {
+ XSDSimpleTypeDefinition itemTypeDefinition = xsdSchema.resolveSimpleTypeDefinitionURI(getURI(itemType));
+ handleImport(xsdSchema, itemTypeDefinition);
+ xsdSimpleTypeDefinition.setItemTypeDefinition(itemTypeDefinition);
+ }
+ else
+ {
+ List<EDataType> memberTypes = extendedMetaData.getMemberTypes(eDataType);
+ if (!memberTypes.isEmpty())
+ {
+ for (EDataType memberType : memberTypes)
+ {
+ XSDSimpleTypeDefinition memberTypeDefinition = xsdSchema.resolveSimpleTypeDefinitionURI(getURI(memberType));
+ handleImport(xsdSchema, memberTypeDefinition);
+ xsdSimpleTypeDefinition.getMemberTypeDefinitions().add(memberTypeDefinition);
+ }
+ }
+ else
+ {
+ xsdSimpleTypeDefinition.setBaseTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ if (!(eDataType instanceof EEnum))
+ {
+ instanceClass = eDataType.getInstanceTypeName();
+ }
+ }
+ }
+ }
+
+ xsdSchema.getContents().add(xsdSimpleTypeDefinition);
+ map(xsdSimpleTypeDefinition, eDataType);
+
+ buildTypeParameters(xsdSimpleTypeDefinition, eDataType.getETypeParameters());
+
+ if (instanceClass != null)
+ {
+ createEcoreAnnotation(xsdSimpleTypeDefinition, "instanceClass", instanceClass.replace('<', '{').replace('>', '}'));
+ }
+
+ String minInclusive = extendedMetaData.getMinInclusiveFacet(eDataType);
+ if (minInclusive != null)
+ {
+ XSDMinInclusiveFacet xsdMinInclusiveFacet = XSDFactory.eINSTANCE.createXSDMinInclusiveFacet();
+ xsdMinInclusiveFacet.setLexicalValue(minInclusive);
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdMinInclusiveFacet);
+ }
+
+ String maxInclusive = extendedMetaData.getMaxInclusiveFacet(eDataType);
+ if (maxInclusive != null)
+ {
+ XSDMaxInclusiveFacet xsdMaxInclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxInclusiveFacet();
+ xsdMaxInclusiveFacet.setLexicalValue(maxInclusive);
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdMaxInclusiveFacet);
+ }
+
+ String minExclusive = extendedMetaData.getMinExclusiveFacet(eDataType);
+ if (minExclusive != null)
+ {
+ XSDMinExclusiveFacet xsdMinExclusiveFacet = XSDFactory.eINSTANCE.createXSDMinExclusiveFacet();
+ xsdMinExclusiveFacet.setLexicalValue(minExclusive);
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdMinExclusiveFacet);
+ }
+
+ String maxExclusive = extendedMetaData.getMaxExclusiveFacet(eDataType);
+ if (maxExclusive != null)
+ {
+ XSDMaxExclusiveFacet xsdMaxExclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxExclusiveFacet();
+ xsdMaxExclusiveFacet.setLexicalValue(maxExclusive);
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdMaxExclusiveFacet);
+ }
+
+ int length = extendedMetaData.getLengthFacet(eDataType);
+ if (length != -1)
+ {
+ XSDLengthFacet xsdLengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ xsdLengthFacet.setLexicalValue(Integer.toString(length));
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdLengthFacet);
+ }
+
+ int maxLength = extendedMetaData.getMaxLengthFacet(eDataType);
+ if (maxLength != -1)
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ xsdMaxLengthFacet.setLexicalValue(Integer.toString(maxLength));
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdMaxLengthFacet);
+ }
+
+ int minLength = extendedMetaData.getMinLengthFacet(eDataType);
+ if (minLength != -1)
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ xsdMinLengthFacet.setLexicalValue(Integer.toString(minLength));
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdMinLengthFacet);
+ }
+
+ int totalDigits = extendedMetaData.getTotalDigitsFacet(eDataType);
+ if (totalDigits != -1)
+ {
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = XSDFactory.eINSTANCE.createXSDTotalDigitsFacet();
+ xsdTotalDigitsFacet.setLexicalValue(Integer.toString(totalDigits));
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdTotalDigitsFacet);
+ }
+
+ int fractionDigits = extendedMetaData.getFractionDigitsFacet(eDataType);
+ if (fractionDigits != -1)
+ {
+ XSDFractionDigitsFacet xsdFractionDigitsFacet = XSDFactory.eINSTANCE.createXSDFractionDigitsFacet();
+ xsdFractionDigitsFacet.setLexicalValue(Integer.toString(fractionDigits));
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdFractionDigitsFacet);
+ }
+
+ int whiteSpace = extendedMetaData.getWhiteSpaceFacet(eDataType);
+ if (whiteSpace != ExtendedMetaData.UNSPECIFIED_WHITE_SPACE)
+ {
+ XSDWhiteSpaceFacet xsdWhiteSpaceFacet = XSDFactory.eINSTANCE.createXSDWhiteSpaceFacet();
+ xsdWhiteSpaceFacet.setLexicalValue(XSDWhiteSpace.get(whiteSpace - 1).toString());
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdWhiteSpaceFacet);
+ }
+
+ for (String pattern : extendedMetaData.getPatternFacet(eDataType))
+ {
+ XSDPatternFacet xsdPatternFacet = XSDFactory.eINSTANCE.createXSDPatternFacet();
+ xsdPatternFacet.setLexicalValue(pattern);
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdPatternFacet);
+ }
+
+ for (String enumeration : extendedMetaData.getEnumerationFacet(eDataType))
+ {
+ XSDEnumerationFacet xsdEnumerationFacet = XSDFactory.eINSTANCE.createXSDEnumerationFacet();
+ xsdEnumerationFacet.setLexicalValue(enumeration);
+ xsdSimpleTypeDefinition.getFacetContents().add(xsdEnumerationFacet);
+ }
+
+ String ecoreName = eDataType.getName();
+ if (!name.equals(ecoreName) || Character.isLowerCase(ecoreName.charAt(0)) || ecoreName.indexOf('_') != -1)
+ {
+ createEcoreAnnotation(xsdSimpleTypeDefinition, "name", ecoreName);
+ }
+
+ String constraints = EcoreUtil.getAnnotation(eDataType, EcorePackage.eNS_URI, "constraints");
+ if (constraints != null)
+ {
+ createEcoreAnnotation(xsdSimpleTypeDefinition, "constraints", constraints);
+ }
+
+ if (!eDataType.isSerializable())
+ {
+ createEcoreAnnotation(xsdSimpleTypeDefinition, "serializable", "false");
+ }
+
+ if (eDataType instanceof EEnum)
+ {
+ EEnum eEnum = (EEnum)eDataType;
+
+ for (ListIterator<EEnumLiteral> literals = eEnum.getELiterals().listIterator(); literals.hasNext();)
+ {
+ EEnumLiteral literal = literals.next();
+ XSDEnumerationFacet facet = XSDFactory.eINSTANCE.createXSDEnumerationFacet();
+ facet.setLexicalValue(literal.getLiteral());
+ xsdSimpleTypeDefinition.getFacetContents().add(facet);
+ map(facet, literal);
+
+ if (!literal.getLiteral().equals(literal.getName()))
+ {
+ createEcoreAnnotation(facet, "name", literal.getName());
+ }
+
+ if (literal.getValue() != literals.previousIndex())
+ {
+ createEcoreAnnotation(facet, "value", Integer.toString(literal.getValue()));
+ }
+
+ buildAnnotations(facet, literal);
+ }
+ }
+
+ buildAnnotations(xsdSimpleTypeDefinition, eDataType);
+
+ return xsdSimpleTypeDefinition;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected XSDComplexTypeDefinition buildComplexTypeDefinition(XSDSchema xsdSchema, EClass eClass)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+
+ String name = extendedMetaData.getName(eClass);
+ xsdComplexTypeDefinition.setName(name);
+
+ if (eClass.isAbstract())
+ {
+ xsdComplexTypeDefinition.setAbstract(true);
+ }
+
+ List<EGenericType> genericTypeTypes = eClass.getEGenericSuperTypes();
+ if (!genericTypeTypes.isEmpty())
+ {
+ Iterator<EGenericType> i = genericTypeTypes.iterator();
+ EGenericType genericSuperType = i.next();
+ XSDTypeDefinition baseType = xsdSchema.resolveTypeDefinitionURI(getURI(genericSuperType.getERawType()));
+ if (!XSDConstants.isURType(baseType))
+ {
+ handleImport(xsdSchema, baseType);
+ xsdComplexTypeDefinition.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
+ xsdComplexTypeDefinition.setBaseTypeDefinition(baseType);
+ }
+
+ xsdSchema.getContents().add(xsdComplexTypeDefinition);
+
+ if (!genericSuperType.getETypeArguments().isEmpty())
+ {
+ createEcoreAnnotation(xsdComplexTypeDefinition, "extends", getGenericType(xsdSchema, genericSuperType));
+ }
+
+ if (i.hasNext())
+ {
+ StringBuilder additionalSuperTypes = new StringBuilder();
+ do
+ {
+ additionalSuperTypes.append(getGenericType(xsdSchema, i.next()));
+ additionalSuperTypes.append(' ');
+ }
+ while (i.hasNext());
+ createEcoreAnnotation(xsdComplexTypeDefinition, "implements", additionalSuperTypes.toString().trim());
+ }
+ }
+ else
+ {
+ xsdSchema.getContents().add(xsdComplexTypeDefinition);
+ }
+
+ buildTypeParameters(xsdComplexTypeDefinition, eClass.getETypeParameters());
+
+ map(xsdComplexTypeDefinition, eClass);
+
+ String instanceClass = eClass.getInstanceTypeName();
+ if (instanceClass != null)
+ {
+ createEcoreAnnotation(xsdComplexTypeDefinition, "instanceClass", instanceClass.replace('<', '{').replace('>', '}'));
+ }
+
+ String ecoreName = eClass.getName();
+ if (!name.equals(ecoreName) || Character.isLowerCase(ecoreName.charAt(0)) || ecoreName.indexOf('_') != -1)
+ {
+ createEcoreAnnotation(xsdComplexTypeDefinition, "name", ecoreName);
+ }
+
+ if (eClass.isInterface())
+ {
+ createEcoreAnnotation(xsdComplexTypeDefinition, "interface", "true");
+ }
+
+ String constraints = EcoreUtil.getAnnotation(eClass, EcorePackage.eNS_URI, "constraints");
+ if (constraints != null)
+ {
+ createEcoreAnnotation(xsdComplexTypeDefinition, "constraints", constraints);
+ }
+
+ for (Iterator<EStructuralFeature> i = eClass.getEStructuralFeatures().iterator(); i.hasNext(); )
+ {
+ EStructuralFeature eStructuralFeature = i.next();
+ buildContentFeature(xsdComplexTypeDefinition, eStructuralFeature);
+ }
+
+ List<EOperation> eOperations = eClass.getEOperations();
+ if (!eOperations.isEmpty())
+ {
+ XSDAnnotation xsdAnnotation = xsdComplexTypeDefinition.getAnnotation();
+ if (xsdAnnotation == null)
+ {
+ xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation();
+ xsdComplexTypeDefinition.setAnnotation(xsdAnnotation);
+ }
+ Element applicationInformation = xsdAnnotation.createApplicationInformation(EcorePackage.eNS_URI);
+ xsdAnnotation.getElement().appendChild(applicationInformation);
+ createEcoreAnnotation(xsdSchema.getQNamePrefixToNamespaceMap(), applicationInformation, "key", "operations");
+ Document document = xsdSchema.getDocument();
+ for (EOperation eOperation : eOperations)
+ {
+ Element operation = document.createElementNS(null, "operation");
+ operation.setAttributeNS(null, "name", eOperation.getName());
+ applicationInformation.appendChild(operation);
+ buildAnnotation(eOperation, operation);
+ buildTypeParameters(xsdAnnotation, eOperation.getETypeParameters());
+ EGenericType returnEGenericType = eOperation.getEGenericType();
+ if (returnEGenericType != null)
+ {
+ operation.setAttributeNS(null, "type", getGenericType(xsdSchema, returnEGenericType));
+ }
+ List<EClassifier> exceptions = eOperation.getEExceptions();
+ if (!exceptions.isEmpty())
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (EGenericType eGenericType : eOperation.getEGenericExceptions())
+ {
+ stringBuilder.append(getGenericType(xsdSchema, eGenericType));
+ stringBuilder.append(' ');
+ }
+
+ operation.setAttributeNS(null, "exceptions", stringBuilder.substring(0, stringBuilder.length() - 1));
+ }
+
+ for (EParameter eParameter : eOperation.getEParameters())
+ {
+ Element parameter = document.createElementNS(null, "parameter");
+ parameter.setAttributeNS(null, "name", eParameter.getName());
+ operation.appendChild(parameter);
+ buildAnnotation(eParameter, parameter);
+ parameter.setAttributeNS(null, "type", getGenericType(xsdSchema, eParameter.getEGenericType()));
+
+ if (eParameter.getLowerBound() != 0)
+ {
+ parameter.setAttributeNS(null, "lowerBound", Integer.toString(eParameter.getLowerBound()));
+ }
+ if (eParameter.getUpperBound() != 1)
+ {
+ parameter.setAttributeNS(null, "upperBound", Integer.toString(eParameter.getUpperBound()));
+ }
+ if (!eParameter.isOrdered())
+ {
+ parameter.setAttributeNS(null, "ordered", "false");
+ }
+ if (!eParameter.isUnique())
+ {
+ parameter.setAttributeNS(null, "unique", "false");
+ }
+ }
+
+ if (eOperation.getLowerBound() != 0)
+ {
+ operation.setAttributeNS(null, "lowerBound", Integer.toString(eOperation.getLowerBound()));
+ }
+ if (eOperation.getUpperBound() != 1)
+ {
+ operation.setAttributeNS(null, "upperBound", Integer.toString(eOperation.getUpperBound()));
+ }
+ if (!eOperation.isOrdered())
+ {
+ operation.setAttributeNS(null, "ordered", "false");
+ }
+ if (!eOperation.isUnique())
+ {
+ operation.setAttributeNS(null, "unique", "false");
+ }
+
+ String body = EcoreUtil.getAnnotation(eOperation, GEN_MODEL_PACKAGE_NS_URI, "body");
+ if (body != null)
+ {
+ Element bodyElement = document.createElementNS(null, "body");
+ bodyElement.appendChild(document.createTextNode(body));
+ operation.appendChild(bodyElement);
+ }
+ }
+ }
+
+ buildAnnotations(xsdComplexTypeDefinition, eClass);
+
+ return xsdComplexTypeDefinition;
+ }
+
+ protected void buildTypeParameters(XSDComponent xsdComponent, List<ETypeParameter> eTypeParameters)
+ {
+ if (!eTypeParameters.isEmpty())
+ {
+ XSDSchema xsdSchema = xsdComponent.getSchema();
+ XSDAnnotation xsdAnnotation;
+ Element applicationInformation;
+ if (xsdComponent instanceof XSDTypeDefinition)
+ {
+ xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation();
+ ((XSDTypeDefinition)xsdComponent).setAnnotation(xsdAnnotation);
+ applicationInformation = xsdAnnotation.createApplicationInformation(EcorePackage.eNS_URI);
+ xsdAnnotation.getElement().appendChild(applicationInformation);
+ createEcoreAnnotation(xsdSchema.getQNamePrefixToNamespaceMap(), applicationInformation, "key", "typeParameters");
+ }
+ else
+ {
+ xsdAnnotation = (XSDAnnotation)xsdComponent;
+ applicationInformation = (Element)xsdAnnotation.getApplicationInformation().get(xsdAnnotation.getApplicationInformation().size() - 1).getLastChild();
+ }
+ Document document = xsdSchema.getDocument();
+ for (ETypeParameter eTypeParameter : eTypeParameters)
+ {
+ Element typeParameter = document.createElementNS(null, "typeParameter");
+ typeParameter.setAttributeNS(null, "name", eTypeParameter.getName());
+ applicationInformation.appendChild(typeParameter);
+ buildAnnotation(eTypeParameter, typeParameter);
+ List<EGenericType> eBounds = eTypeParameter.getEBounds();
+ if (!eBounds.isEmpty())
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (Iterator<EGenericType> i = eBounds.iterator(); i.hasNext(); )
+ {
+ String bound = getGenericType(xsdSchema, i.next());
+ stringBuilder.append(bound);
+ if (i.hasNext())
+ {
+ stringBuilder.append(' ');
+ }
+ }
+
+ typeParameter.setAttributeNS(null, "bounds", stringBuilder.toString());
+ }
+ }
+ }
+ }
+
+ protected XSDComponent buildContentFeature(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ switch (extendedMetaData.getFeatureKind(eStructuralFeature))
+ {
+ case ExtendedMetaData.ELEMENT_FEATURE:
+ {
+ XSDParticle xsdParticle = buildElementParticle(xsdComplexTypeDefinition, eStructuralFeature);
+ return xsdParticle;
+ }
+ case ExtendedMetaData.ATTRIBUTE_FEATURE:
+ {
+ XSDAttributeUse xsdAttributeUse = buildAttributeUse(xsdComplexTypeDefinition, eStructuralFeature);
+ return xsdAttributeUse;
+ }
+ case ExtendedMetaData.GROUP_FEATURE:
+ {
+ XSDParticle xsdParticle = buildModelGroupParticle(xsdComplexTypeDefinition, eStructuralFeature);
+ return xsdParticle;
+ }
+ case ExtendedMetaData.ELEMENT_WILDCARD_FEATURE:
+ {
+ XSDWildcard xsdWildcard = buildElementWildcard(xsdComplexTypeDefinition, eStructuralFeature);
+ return xsdWildcard;
+ }
+ case ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE:
+ {
+ XSDWildcard xsdWildcard = buildAttributeWildcard(xsdComplexTypeDefinition, eStructuralFeature);
+ return xsdWildcard;
+ }
+ case ExtendedMetaData.SIMPLE_FEATURE:
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = buildSimpleContent(xsdComplexTypeDefinition, eStructuralFeature);
+ return xsdSimpleTypeDefinition;
+ }
+ default:
+ {
+ if (eStructuralFeature instanceof EAttribute)
+ {
+ EAttribute eAttribute = (EAttribute)eStructuralFeature;
+ if (eAttribute.isMany())
+ {
+ return buildElementParticle(xsdComplexTypeDefinition, eAttribute);
+ }
+ else
+ {
+ return buildAttributeUse(xsdComplexTypeDefinition, eAttribute);
+ }
+ }
+ else
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ if (eReference.isContainment())
+ {
+ return buildElementParticle(xsdComplexTypeDefinition, eReference);
+ }
+ else if (eReference.isContainer() && eReference.isTransient())
+ {
+ return null;
+ }
+ else
+ {
+ return buildAttributeUse(xsdComplexTypeDefinition, eReference);
+ }
+ }
+ }
+ }
+ }
+
+ protected XSDParticle buildModelGroupParticle(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ XSDModelGroup xsdModelGroup = findOrCreateModelGroup(xsdComplexTypeDefinition);
+
+ XSDModelGroup modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ XSDParticle xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setContent(modelGroup);
+
+ if (eStructuralFeature.getUpperBound() != 1)
+ {
+ xsdParticle.setMaxOccurs(eStructuralFeature.getUpperBound());
+ }
+
+ xsdModelGroup.getContents().add(xsdParticle);
+ map(xsdParticle, eStructuralFeature);
+
+ createEcoreAnnotation(xsdParticle, "featureMap", eStructuralFeature.getName());
+
+ buildAnnotations(xsdModelGroup, eStructuralFeature);
+
+ return xsdParticle;
+ }
+
+ protected XSDWildcard buildElementWildcard(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ String name = extendedMetaData.getName(eStructuralFeature);
+ if (":mixed".equals(name))
+ {
+ xsdComplexTypeDefinition.setMixed(true);
+ return null;
+ }
+ else
+ {
+ XSDWildcard xsdWildcard = XSDFactory.eINSTANCE.createXSDWildcard();
+ xsdWildcard.setStringLexicalNamespaceConstraint
+ (BasicExtendedMetaData.getEncodedWildcards
+ (extendedMetaData.getNamespace(eStructuralFeature.getEContainingClass()),
+ extendedMetaData.getWildcards(eStructuralFeature)));
+ XSDModelGroup xsdModelGroup = findOrCreateModelGroup(xsdComplexTypeDefinition);
+ XSDParticle xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setContent(xsdWildcard);
+ xsdModelGroup.getContents().add(xsdParticle);
+ map(xsdParticle, eStructuralFeature);
+
+ if (eStructuralFeature.getLowerBound() != 1)
+ {
+ xsdParticle.setMinOccurs(eStructuralFeature.getLowerBound());
+ }
+
+ if (eStructuralFeature.getUpperBound() != 1)
+ {
+ xsdParticle.setMaxOccurs(eStructuralFeature.getUpperBound());
+ }
+ createEcoreAnnotation(xsdWildcard, "name", eStructuralFeature.getName());
+
+ buildAnnotations(xsdWildcard, eStructuralFeature);
+
+ return xsdWildcard;
+ }
+ }
+
+ protected XSDWildcard buildAttributeWildcard(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ XSDWildcard xsdWildcard = XSDFactory.eINSTANCE.createXSDWildcard();
+ xsdWildcard.setStringLexicalNamespaceConstraint
+ (BasicExtendedMetaData.getEncodedWildcards
+ (extendedMetaData.getNamespace(eStructuralFeature.getEContainingClass()),
+ extendedMetaData.getWildcards(eStructuralFeature)));
+ xsdComplexTypeDefinition.setAttributeWildcardContent(xsdWildcard);
+
+ map(xsdWildcard, eStructuralFeature);
+
+ createEcoreAnnotation(xsdWildcard, "name", eStructuralFeature.getName());
+
+ buildAnnotations(xsdWildcard, eStructuralFeature);
+
+ return xsdWildcard;
+ }
+
+ protected XSDSimpleTypeDefinition buildSimpleContent(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ XSDSchema xsdSchema = xsdComplexTypeDefinition.getSchema();
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ EClassifier eType = eStructuralFeature.getEType();
+ EClassifier referenceType = null;
+ XSDSimpleTypeDefinition baseType;
+ if (eStructuralFeature instanceof EReference)
+ {
+ referenceType = eType;
+ baseType =
+ xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition
+ (((EReference)eStructuralFeature).isResolveProxies() ? "anyURI" : "IDREF");
+ handleMultiplicity(xsdSchema, eStructuralFeature, xsdSimpleTypeDefinition, baseType);
+ }
+ else
+ {
+ baseType = xsdComplexTypeDefinition.resolveSimpleTypeDefinitionURI(getURI(eType));
+ handleImport(xsdSchema, baseType);
+ handleMultiplicity(xsdSchema, eStructuralFeature, xsdSimpleTypeDefinition, baseType);
+ }
+ xsdComplexTypeDefinition.setBaseTypeDefinition(xsdSimpleTypeDefinition.getBaseType());
+ xsdComplexTypeDefinition.setDerivationMethod(xsdSimpleTypeDefinition.getContents().isEmpty() ? XSDDerivationMethod.EXTENSION_LITERAL : XSDDerivationMethod.RESTRICTION_LITERAL);
+ xsdComplexTypeDefinition.setContent(xsdSimpleTypeDefinition);
+
+ map(xsdSimpleTypeDefinition, eStructuralFeature);
+
+ buildAttributeInformation(xsdComplexTypeDefinition, "value", false, referenceType, xsdSimpleTypeDefinition, eStructuralFeature);
+
+ if (eStructuralFeature instanceof EAttribute &&
+ ((EAttribute)eStructuralFeature).isID() &&
+ !XSDConstants.isOrIsDerivedFromID(xsdSimpleTypeDefinition))
+ {
+ createEcoreAnnotation(xsdSimpleTypeDefinition, "id", "true");
+ }
+
+ if (eStructuralFeature.eIsSet(EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE))
+ {
+ createEcoreAnnotation(xsdSimpleTypeDefinition, referenceType == null ? "type" : "reference", getGenericType(xsdSchema, eStructuralFeature.getEGenericType()));
+ }
+
+ return xsdSimpleTypeDefinition;
+ }
+
+ protected XSDAttributeUse buildAttributeUse(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ XSDSchema xsdSchema = xsdComplexTypeDefinition.getSchema();
+ String namespace = extendedMetaData.getNamespace(eStructuralFeature);
+ String name = extendedMetaData.getName(eStructuralFeature);
+
+ // It must be a ref if it refers to another namespace.
+ // If it refers to this namespace,
+ // it's treated as a ref,
+ // if this feature has the same type as the feature for matching global attribute.
+ //
+ String typeNamespace = extendedMetaData.getNamespace(eStructuralFeature.getEContainingClass());
+ boolean isRef = namespace != null && !namespace.equals(typeNamespace);
+ if (namespace == null ? typeNamespace == null : namespace.equals(typeNamespace))
+ {
+ EStructuralFeature globalFeature = extendedMetaData.getAttribute(namespace, name);
+ isRef = globalFeature != null && EcoreUtil.equals(globalFeature.getEGenericType(), eStructuralFeature.getEGenericType());
+ }
+
+ XSDAttributeUse xsdAttributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ XSDAttributeDeclaration xsdAttributeDeclaration = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+
+ EClassifier referenceType = null;
+ if (isRef)
+ {
+ XSDAttributeDeclaration referencedXSDAttributeDeclaration = xsdComplexTypeDefinition.resolveAttributeDeclaration(namespace, name);
+ handleImport(xsdSchema, referencedXSDAttributeDeclaration);
+ xsdAttributeDeclaration.setResolvedAttributeDeclaration(referencedXSDAttributeDeclaration);
+ }
+ else
+ {
+ xsdAttributeDeclaration.setName(name);
+
+ if (namespace != null)
+ {
+ xsdAttributeDeclaration.setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+
+ EClassifier eType = eStructuralFeature.getEType();
+ if (eStructuralFeature instanceof EReference)
+ {
+ referenceType = eType;
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition =
+ xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition
+ (((EReference)eStructuralFeature).isResolveProxies() ? "anyURI" : "IDREF");
+ handleMultiplicity(xsdSchema, eStructuralFeature, xsdAttributeDeclaration, xsdSimpleTypeDefinition);
+ }
+ else
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdComplexTypeDefinition.resolveSimpleTypeDefinitionURI(getURI(eType));
+ handleImport(xsdSchema, xsdSimpleTypeDefinition);
+ handleMultiplicity(xsdSchema, eStructuralFeature, xsdAttributeDeclaration, xsdSimpleTypeDefinition);
+ }
+ }
+
+ xsdAttributeUse.setContent(xsdAttributeDeclaration);
+ xsdComplexTypeDefinition.getAttributeContents().add(xsdAttributeUse);
+ map(xsdAttributeUse, eStructuralFeature);
+
+ buildAttributeInformation(xsdComplexTypeDefinition, name, isRef, referenceType, xsdAttributeUse, eStructuralFeature);
+
+ if (eStructuralFeature instanceof EAttribute &&
+ ((EAttribute)eStructuralFeature).isID() &&
+ !XSDConstants.isOrIsDerivedFromID(xsdAttributeDeclaration.getTypeDefinition()))
+ {
+ createEcoreAnnotation(xsdAttributeUse, "id", "true");
+ }
+
+ if (eStructuralFeature.eIsSet(EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE))
+ {
+ createEcoreAnnotation(xsdAttributeUse, referenceType == null ? "type" : "reference", getGenericType(xsdSchema, eStructuralFeature.getEGenericType()));
+ }
+
+ return xsdAttributeUse;
+ }
+
+ protected void buildAttributeInformation
+ (XSDComplexTypeDefinition xsdComplexTypeDefinition,
+ String name,
+ boolean isRef,
+ EClassifier referenceType,
+ XSDComponent xsdComponent,
+ EStructuralFeature eStructuralFeature)
+ {
+ List<EAttribute> eKeys = null;
+
+ if (referenceType == null && eStructuralFeature.isMany())
+ {
+ createEcoreAnnotation(xsdComponent, "many", "true");
+ }
+
+ if (eStructuralFeature instanceof EReference)
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ EReference eOpposite = eReference.getEOpposite();
+ if (eOpposite != null)
+ {
+ createEcoreAnnotation(xsdComponent, "opposite", eOpposite.getName());
+ }
+ eKeys = eReference.getEKeys();
+ }
+
+ if (eKeys != null && !eKeys.isEmpty())
+ {
+ StringBuilder keys = new StringBuilder();
+ for (EAttribute eKey : eKeys)
+ {
+ keys.append(eKey.getName());
+ keys.append(' ');
+ }
+ createEcoreAnnotation(xsdComponent, "keys", keys.toString().trim());
+ }
+
+ XSDAttributeUse xsdAttriuteUse = xsdComponent instanceof XSDAttributeUse ? (XSDAttributeUse)xsdComponent : null;
+
+ boolean canHaveDefault = xsdAttriuteUse != null;
+ if (eStructuralFeature.isRequired())
+ {
+ if (eStructuralFeature.isTransient() || xsdAttriuteUse == null)
+ {
+ createEcoreAnnotation(xsdComponent, "lowerBound", Integer.toString(eStructuralFeature.getLowerBound()));
+ }
+ else
+ {
+ xsdAttriuteUse.setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ canHaveDefault = false;
+ }
+ }
+
+ String defaultValue = eStructuralFeature.getDefaultValueLiteral();
+ if (defaultValue != null)
+ {
+ if (canHaveDefault && xsdAttriuteUse != null)
+ {
+ if (isRef)
+ {
+ xsdAttriuteUse.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ xsdAttriuteUse.setLexicalValue(transformDefaultValue(xsdAttriuteUse.getAttributeDeclaration().getTypeDefinition(), defaultValue));
+ }
+ else
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttriuteUse.getAttributeDeclaration();
+ xsdAttributeDeclaration.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ xsdAttributeDeclaration.setLexicalValue(transformDefaultValue(xsdAttributeDeclaration.getTypeDefinition(), defaultValue));
+ }
+ }
+ else
+ {
+ createEcoreAnnotation(xsdComponent, "default", defaultValue);
+ }
+ }
+
+ if (eStructuralFeature.isMany())
+ {
+ if (eStructuralFeature.isUnsettable())
+ {
+ createEcoreAnnotation(xsdComponent, "unsettable", "true");
+ }
+ }
+ else if ((eStructuralFeature.getEType().getDefaultValue() != null || eStructuralFeature.getDefaultValueLiteral() != null) !=
+ eStructuralFeature.isUnsettable())
+ {
+ createEcoreAnnotation(xsdComponent, "unsettable", Boolean.toString(eStructuralFeature.isUnsettable()));
+ }
+
+ String ecoreName = eStructuralFeature.getName();
+ if (!name.equals(ecoreName) || Character.isUpperCase(ecoreName.charAt(0)) || ecoreName.indexOf('_') != -1)
+ {
+ createEcoreAnnotation(xsdComponent, "name", ecoreName);
+ }
+
+ if (eStructuralFeature.isMany() && !eStructuralFeature.isOrdered())
+ {
+ createEcoreAnnotation(xsdComponent, "ordered", "false");
+ }
+
+ if (eStructuralFeature.isMany() && eStructuralFeature.isUnique() && eStructuralFeature instanceof EAttribute)
+ {
+ createEcoreAnnotation(xsdComponent, "unique", "true");
+ }
+
+ if (!eStructuralFeature.isChangeable())
+ {
+ createEcoreAnnotation(xsdComponent, "changeable", "false");
+ }
+
+ if (extendedMetaData.getGroup(eStructuralFeature) == null)
+ {
+ if (eStructuralFeature.isDerived())
+ {
+ createEcoreAnnotation(xsdComponent, "derived", "true");
+ }
+
+ if (eStructuralFeature.isTransient())
+ {
+ createEcoreAnnotation(xsdComponent, "transient", "true");
+ }
+
+ if (eStructuralFeature.isVolatile())
+ {
+ createEcoreAnnotation(xsdComponent, "volatile", "true");
+ }
+ }
+
+ if (referenceType != null)
+ {
+ XSDTypeDefinition xsdTypeDefinition = xsdComplexTypeDefinition.resolveTypeDefinitionURI(getURI(referenceType));
+ handleImport(xsdComplexTypeDefinition.getSchema(), xsdTypeDefinition);
+ String prefix =
+ handlePrefix
+ (xsdComplexTypeDefinition.getSchema().getQNamePrefixToNamespaceMap(),
+ referenceType.getEPackage().getNsPrefix(),
+ xsdTypeDefinition.getTargetNamespace());
+ createEcoreAnnotation(xsdComponent, "reference", prefix + ":" + xsdTypeDefinition.getName());
+ }
+
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.GET))
+ {
+ createEcoreAnnotation(xsdComponent, "suppressedGetVisibility", "true");
+ }
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.SET))
+ {
+ createEcoreAnnotation(xsdComponent, "suppressedSetVisibility", "true");
+ }
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.IS_SET))
+ {
+ createEcoreAnnotation(xsdComponent, "suppressedIsSetVisibility", "true");
+ }
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.UNSET))
+ {
+ createEcoreAnnotation(xsdComponent, "suppressedUnsetVisibility", "true");
+ }
+
+ buildAnnotations(xsdComponent, eStructuralFeature);
+ }
+
+ protected void handleMultiplicity
+ (XSDSchema xsdSchema,
+ EStructuralFeature eStructuralFeature,
+ XSDAttributeDeclaration xsdAttributeDeclaration,
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ handleMultiplicity(xsdSchema, eStructuralFeature, (XSDComponent)xsdAttributeDeclaration, xsdSimpleTypeDefinition);
+ }
+
+ protected void handleMultiplicity
+ (XSDSchema xsdSchema,
+ EStructuralFeature eStructuralFeature,
+ XSDComponent xsdComponent,
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ if (eStructuralFeature.isMany())
+ {
+ XSDSimpleTypeDefinition xsdListTypeDefinition;
+ if (xsdSimpleTypeDefinition.hasNameAndTargetNamespace("IDREF", defaultXMLSchemaNamespace))
+ {
+ xsdListTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("IDREFS");
+ }
+ else
+ {
+ xsdListTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ xsdListTypeDefinition.setItemTypeDefinition(xsdSimpleTypeDefinition);
+ }
+ if (eStructuralFeature.getLowerBound() > 1 || eStructuralFeature.getUpperBound() > 1)
+ {
+ XSDSimpleTypeDefinition xsdRestrictedTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ if (xsdListTypeDefinition.getContainer() == null)
+ {
+ xsdRestrictedTypeDefinition.getContents().add(xsdListTypeDefinition);
+ }
+ else
+ {
+ xsdRestrictedTypeDefinition.setBaseTypeDefinition(xsdListTypeDefinition);
+ }
+ if (eStructuralFeature.getLowerBound() == eStructuralFeature.getUpperBound())
+ {
+ XSDLengthFacet xsdLengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ xsdLengthFacet.setLexicalValue(Integer.toString(eStructuralFeature.getLowerBound()));
+ xsdRestrictedTypeDefinition.getFacetContents().add(xsdLengthFacet);
+ }
+ else
+ {
+ if (eStructuralFeature.getLowerBound() > 1)
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ xsdMinLengthFacet.setLexicalValue(Integer.toString(eStructuralFeature.getLowerBound()));
+ xsdRestrictedTypeDefinition.getFacetContents().add(xsdMinLengthFacet);
+ }
+ if (eStructuralFeature.getUpperBound() > 1)
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ xsdMaxLengthFacet.setLexicalValue(Integer.toString(eStructuralFeature.getUpperBound()));
+ xsdRestrictedTypeDefinition.getFacetContents().add(xsdMaxLengthFacet);
+ }
+ }
+ if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)xsdComponent).setAnonymousTypeDefinition(xsdRestrictedTypeDefinition);
+ }
+ else
+ {
+ ((XSDSimpleTypeDefinition)xsdComponent).getContents().add(xsdRestrictedTypeDefinition);
+ }
+ }
+ else
+ {
+ if (xsdListTypeDefinition.getContainer() == null)
+ {
+ if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)xsdComponent).setAnonymousTypeDefinition(xsdListTypeDefinition);
+ }
+ else
+ {
+ ((XSDSimpleTypeDefinition)xsdComponent).getContents().add(xsdListTypeDefinition);
+ }
+ }
+ else
+ {
+ if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)xsdComponent).setTypeDefinition(xsdListTypeDefinition);
+ }
+ else
+ {
+ ((XSDSimpleTypeDefinition)xsdComponent).setBaseTypeDefinition(xsdListTypeDefinition);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)xsdComponent).setTypeDefinition(xsdSimpleTypeDefinition);
+ }
+ else
+ {
+ ((XSDSimpleTypeDefinition)xsdComponent).setBaseTypeDefinition(xsdSimpleTypeDefinition);
+ }
+ }
+ }
+
+ protected XSDParticle buildElementParticle(XSDComplexTypeDefinition xsdComplexTypeDefinition, EStructuralFeature eStructuralFeature)
+ {
+ String namespace = extendedMetaData.getNamespace(eStructuralFeature);
+ String name = extendedMetaData.getName(eStructuralFeature);
+
+ // It must be a ref if it refers to another namespace.
+ // If it refers to this namespace,
+ // it's treated as a ref,
+ // if this feature has the same type as the feature for matching global element.
+ //
+ String typeNamespace = extendedMetaData.getNamespace(eStructuralFeature.getEContainingClass());
+ boolean isRef = namespace != null && !namespace.equals(typeNamespace);
+ if (namespace == null ? typeNamespace == null : namespace.equals(typeNamespace))
+ {
+ EStructuralFeature globalFeature = extendedMetaData.getElement(namespace, name);
+ isRef = globalFeature != null && EcoreUtil.equals(globalFeature.getEGenericType(), eStructuralFeature.getEGenericType());
+ }
+
+ XSDModelGroup xsdModelGroup = findOrCreateModelGroup(xsdComplexTypeDefinition);
+
+ EStructuralFeature group = extendedMetaData.getGroup(eStructuralFeature);
+ if (group != null)
+ {
+ XSDParticle xsdParticle = (XSDParticle)eModelElementToXSDComponentMap.get(group);
+ if (xsdParticle != null)
+ {
+ xsdModelGroup = (XSDModelGroup)xsdParticle.getContent();
+ }
+ }
+
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+ EClassifier referenceType = null;
+ EReference eOpposite = null;
+ List<EAttribute> eKeys = null;
+ EClassifier eType = eStructuralFeature.getEType();
+ if (isRef)
+ {
+ XSDElementDeclaration referencedXSDElementDeclaration = xsdComplexTypeDefinition.resolveElementDeclaration(namespace, name);
+ handleImport(xsdComplexTypeDefinition.getSchema(), referencedXSDElementDeclaration);
+ xsdElementDeclaration.setResolvedElementDeclaration(referencedXSDElementDeclaration);
+
+ if (eStructuralFeature instanceof EReference)
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ eOpposite = eReference.getEOpposite();
+ eKeys = eReference.getEKeys();
+ }
+ }
+ else
+ {
+ xsdElementDeclaration.setName(name);
+ if (namespace != null)
+ {
+ xsdElementDeclaration.setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+
+ XSDTypeDefinition xsdTypeDefinition =
+ xsdComplexTypeDefinition.resolveTypeDefinitionURI(getURI(eType));
+
+ String defaultValue = eStructuralFeature.getDefaultValueLiteral();
+ if (defaultValue != null)
+ {
+ xsdElementDeclaration.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ xsdElementDeclaration.setLexicalValue(transformDefaultValue((XSDSimpleTypeDefinition)xsdTypeDefinition, defaultValue));
+ }
+
+ if (eStructuralFeature instanceof EReference)
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ eOpposite = eReference.getEOpposite();
+ eKeys = eReference.getEKeys();
+ if (!eReference.isContainment() && !eReference.isContainer())
+ {
+ referenceType = eType;
+ xsdTypeDefinition =
+ xsdComplexTypeDefinition.getSchema().getSchemaForSchema().resolveTypeDefinition
+ (eReference.isResolveProxies() ? "anyURI" : "IDREF");
+ }
+ }
+
+ handleImport(xsdComplexTypeDefinition.getSchema(), xsdTypeDefinition);
+ xsdElementDeclaration.setTypeDefinition(xsdTypeDefinition);
+
+ // If the attribute can have a null value (primitives and enums can't), and
+ // if the attribute can hold many nulls or
+ // it can hold only a single value that is allowed to be null
+ // and it can be considered set when it has the null value...
+ //
+ if (isWrapperType(eType) ||
+ (eStructuralFeature instanceof EAttribute &&
+ eType.getDefaultValue() == null &&
+ (eStructuralFeature.isMany() ||
+ (!eStructuralFeature.isRequired() &&
+ (eStructuralFeature.getDefaultValueLiteral() != null || eStructuralFeature.isUnsettable())))))
+ {
+ xsdElementDeclaration.setNillable(true);
+ }
+ }
+
+ XSDParticle xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setContent(xsdElementDeclaration);
+
+ xsdModelGroup.getContents().add(xsdParticle);
+ map(xsdParticle, eStructuralFeature);
+
+ if (eStructuralFeature.isMany())
+ {
+ if (eStructuralFeature.isUnsettable())
+ {
+ createEcoreAnnotation(xsdParticle, "unsettable", "true");
+ }
+ }
+ else if (xsdElementDeclaration.isNillable() ?
+ !eStructuralFeature.isUnsettable() :
+ (eType.getDefaultValue() != null || eStructuralFeature.getDefaultValueLiteral() != null) !=
+ eStructuralFeature.isUnsettable())
+ {
+ createEcoreAnnotation(xsdParticle, "unsettable", Boolean.toString(eStructuralFeature.isUnsettable()));
+ }
+
+ if (eOpposite != null)
+ {
+ createEcoreAnnotation(xsdParticle, "opposite", eOpposite.getName());
+ }
+
+ if (eKeys != null && !eKeys.isEmpty())
+ {
+ StringBuilder keys = new StringBuilder();
+ for (EAttribute eKey : eKeys)
+ {
+ keys.append(eKey.getName());
+ keys.append(' ');
+ }
+ createEcoreAnnotation(xsdParticle, "keys", keys.toString().trim());
+ }
+
+ if (group == null)
+ {
+ if (eStructuralFeature.isTransient() && !xsdComplexTypeDefinition.isMixed())
+ {
+ xsdParticle.setMinOccurs(0);
+ if (eStructuralFeature.getLowerBound() != 0)
+ {
+ createEcoreAnnotation(xsdParticle, "lowerBound", Integer.toString(eStructuralFeature.getLowerBound()));
+ }
+ }
+ else if (eStructuralFeature.getLowerBound() != 1)
+ {
+ xsdParticle.setMinOccurs(eStructuralFeature.getLowerBound());
+ }
+
+ if (eStructuralFeature.getUpperBound() != 1)
+ {
+ xsdParticle.setMaxOccurs(eStructuralFeature.getUpperBound());
+ }
+ }
+ else
+ {
+ if (eStructuralFeature.isTransient() && !xsdComplexTypeDefinition.isMixed())
+ {
+ xsdParticle.setMinOccurs(0);
+ if (eStructuralFeature.getLowerBound() != 0)
+ {
+ createEcoreAnnotation(xsdParticle, "lowerBound", Integer.toString(eStructuralFeature.getLowerBound()));
+ }
+ }
+ else if (eStructuralFeature.getLowerBound() != 1)
+ {
+ createEcoreAnnotation(xsdParticle, "lowerBound", Integer.toString(eStructuralFeature.getLowerBound()));
+ }
+
+ if (eStructuralFeature.getUpperBound() != 1)
+ {
+ createEcoreAnnotation(xsdParticle, "upperBound", Integer.toString(eStructuralFeature.getUpperBound()));
+ }
+ }
+
+ String ecoreName = eStructuralFeature.getName();
+ if (!name.equals(ecoreName) || Character.isUpperCase(ecoreName.charAt(0)) || ecoreName.indexOf('_') != -1)
+ {
+ createEcoreAnnotation(xsdParticle, "name", ecoreName);
+ }
+
+ if (eStructuralFeature.isMany() && !eStructuralFeature.isOrdered())
+ {
+ createEcoreAnnotation(xsdParticle, "ordered", "false");
+ }
+
+ if (eStructuralFeature.isMany() && eStructuralFeature.isUnique() && eStructuralFeature instanceof EAttribute)
+ {
+ createEcoreAnnotation(xsdParticle, "unique", "true");
+ }
+
+ if (!eStructuralFeature.isChangeable())
+ {
+ createEcoreAnnotation(xsdParticle, "changeable", "false");
+ }
+
+ if (extendedMetaData.getContentKind(eStructuralFeature.getEContainingClass()) != ExtendedMetaData.MIXED_CONTENT &&
+ extendedMetaData.getGroup(eStructuralFeature) == null)
+ {
+ if (eStructuralFeature.isDerived())
+ {
+ createEcoreAnnotation(xsdParticle, "derived", "true");
+ }
+
+ if (eStructuralFeature.isTransient())
+ {
+ createEcoreAnnotation(xsdParticle, "transient", "true");
+ }
+
+ if (eStructuralFeature.isVolatile())
+ {
+ createEcoreAnnotation(xsdParticle, "volatile", "true");
+ }
+ }
+
+ if (eStructuralFeature instanceof EReference &&
+ ((EReference)eStructuralFeature).isResolveProxies() &&
+ ((EReference)eStructuralFeature).isContainment())
+ {
+ createEcoreAnnotation(xsdParticle, "resolveProxies", "true");
+ }
+
+ if (eStructuralFeature.eIsSet(EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE))
+ {
+ createEcoreAnnotation(xsdParticle, referenceType == null ? "type" : "reference", getGenericType(xsdComplexTypeDefinition.getSchema(), eStructuralFeature.getEGenericType()));
+ }
+ else if (referenceType != null)
+ {
+ XSDTypeDefinition xsdTypeDefinition = xsdComplexTypeDefinition.resolveTypeDefinitionURI(getURI(referenceType));
+ handleImport(xsdComplexTypeDefinition.getSchema(), xsdTypeDefinition);
+ String prefix =
+ handlePrefix
+ (xsdComplexTypeDefinition.getSchema().getQNamePrefixToNamespaceMap(),
+ referenceType.getEPackage().getNsPrefix(),
+ xsdTypeDefinition.getTargetNamespace());
+ createEcoreAnnotation(xsdElementDeclaration, "reference", prefix + ":" + xsdTypeDefinition.getName());
+ }
+
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.GET))
+ {
+ createEcoreAnnotation(xsdElementDeclaration, "suppressedGetVisibility", "true");
+ }
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.SET))
+ {
+ createEcoreAnnotation(xsdElementDeclaration, "suppressedSetVisibility", "true");
+ }
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.IS_SET))
+ {
+ createEcoreAnnotation(xsdElementDeclaration, "suppressedIsSetVisibility", "true");
+ }
+ if (EcoreUtil.isSuppressedVisibility(eStructuralFeature, EcoreUtil.UNSET))
+ {
+ createEcoreAnnotation(xsdElementDeclaration, "suppressedUnsetVisibility", "true");
+ }
+
+ if (eStructuralFeature instanceof EAttribute &&
+ ((EAttribute)eStructuralFeature).isID() &&
+ xsdElementDeclaration.getTypeDefinition() instanceof XSDSimpleTypeDefinition &&
+ !XSDConstants.isOrIsDerivedFromID((XSDSimpleTypeDefinition)xsdElementDeclaration.getTypeDefinition()))
+ {
+ createEcoreAnnotation(xsdParticle, "id", "true");
+ }
+
+ buildAnnotations(xsdParticle, eStructuralFeature);
+
+ return xsdParticle;
+ }
+
+ protected XSDModelGroup findOrCreateModelGroup(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (xsdComplexTypeDefinition.getContent() == null)
+ {
+ return buildModelGroup(xsdComplexTypeDefinition);
+ }
+ else
+ {
+ XSDParticle xsdParticle = (XSDParticle)xsdComplexTypeDefinition.getContent();
+ return (XSDModelGroup)xsdParticle.getContent();
+ }
+ }
+
+ protected XSDModelGroup buildModelGroup(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDModelGroup xsdModelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ XSDParticle xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setContent(xsdModelGroup);
+ xsdComplexTypeDefinition.setContent(xsdParticle);
+ return xsdModelGroup;
+ }
+
+ protected boolean isWrapperType(EClassifier eClassifier)
+ {
+ String name = extendedMetaData.getName(eClassifier);
+ return name.endsWith(":Object") && !EcorePackage.eNS_URI.equals(extendedMetaData.getNamespace(eClassifier));
+ }
+
+ protected String getURI(EClassifier eClassifier)
+ {
+ String namespace = extendedMetaData.getNamespace(eClassifier);
+ String name = extendedMetaData.getName(eClassifier);
+ if (XMLTypePackage.eNS_URI.equals(namespace))
+ {
+ namespace = defaultXMLSchemaNamespace;
+ if (name.endsWith(":Object"))
+ {
+ name = name.substring(0, name.length() - 7);
+ }
+ }
+ else if (EcorePackage.eNS_URI.equals(namespace))
+ {
+ if ("EObject".equals(name))
+ {
+ namespace = defaultXMLSchemaNamespace;
+ name = "anyType";
+ }
+ else if (name.endsWith(":Object"))
+ {
+ name = eClassifier.getName();
+ }
+ }
+ else if (name.endsWith(":Object"))
+ {
+ name = name.substring(0, name.length() - 7);
+ }
+ String result =
+ namespace == null ?
+ name :
+ namespace + "#" + name;
+ return result;
+ }
+
+ protected String getURI(EStructuralFeature eStructuralFeature)
+ {
+ String namespace = extendedMetaData.getNamespace(eStructuralFeature);
+ String name = extendedMetaData.getName(eStructuralFeature);
+ if (XMLTypePackage.eNS_URI.equals(namespace))
+ {
+ namespace = defaultXMLSchemaNamespace;
+ }
+ String result =
+ namespace == null ?
+ name :
+ namespace + "#" + name;
+ return result;
+ }
+
+ protected String getGenericType(XSDSchema xsdSchema, EGenericType eGenericType)
+ {
+ Map<String, String> qNamePrefixToNamespaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
+ StringBuilder result = new StringBuilder();
+ EClassifier eClassifier = eGenericType.getEClassifier();
+ if (eClassifier != null)
+ {
+ XSDTypeDefinition type = xsdSchema.resolveTypeDefinitionURI(getURI(eClassifier));
+ handleImport(xsdSchema, type);
+ String prefix =
+ handlePrefix
+ (qNamePrefixToNamespaceMap,
+ eClassifier.getEPackage().getNsPrefix(),
+ type.getTargetNamespace());
+ result.append(prefix);
+ result.append(':');
+ result.append(type.getName());
+ List<EGenericType> eTypeArguments = eGenericType.getETypeArguments();
+ if (!eTypeArguments.isEmpty())
+ {
+ result.append('{');
+ for (Iterator<EGenericType> i = eTypeArguments.iterator(); i.hasNext(); )
+ {
+ result.append(getGenericType(xsdSchema, i.next()));
+ if (i.hasNext())
+ {
+ result.append(", ");
+ }
+ }
+ result.append('}');
+ }
+ }
+ else
+ {
+ ETypeParameter eTypeParameter = eGenericType.getETypeParameter();
+ if (eTypeParameter != null)
+ {
+ result.append(eTypeParameter.getName());
+ }
+ else
+ {
+ result.append('?');
+ EGenericType eUpperBound = eGenericType.getEUpperBound();
+ if (eUpperBound != null)
+ {
+ result.append(" extends ");
+ result.append(getGenericType(xsdSchema, eUpperBound));
+ }
+ else
+ {
+ EGenericType eLowerBound = eGenericType.getELowerBound();
+ if (eLowerBound != null)
+ {
+ result.append(" super ");
+ result.append(getGenericType(xsdSchema, eLowerBound));
+ }
+ }
+ }
+ }
+ return result.toString();
+ }
+
+ protected void createEcoreAnnotation(XSDComponent xsdComponent, String key, String value)
+ {
+ Element element = xsdComponent.getElement();
+ if (element != null)
+ {
+ createEcoreAnnotation(xsdComponent.getSchema().getQNamePrefixToNamespaceMap(), element, key, value);
+ }
+ }
+
+ protected void createEcoreAnnotation(Map<String, String> qNamePrefixToNamespaceMap, Element element, String key, String value)
+ {
+ String ecorePrefix = handlePrefix(qNamePrefixToNamespaceMap, "ecore", EcorePackage.eNS_URI);
+ element.setAttributeNS(EcorePackage.eNS_URI, ecorePrefix + ':' + key, value);
+ }
+
+ protected void createAnnotation(XSDComponent xsdComponent, String namespace, String key, String value)
+ {
+ Element element = xsdComponent.getElement();
+ if (element != null)
+ {
+ createAnnotation(xsdComponent.getSchema().getQNamePrefixToNamespaceMap(), element, namespace, key, value);
+ }
+ }
+
+ protected void createAnnotation(Map<String, String> qNamePrefixToNamespaceMap, Element element, String namespace, String key, String value)
+ {
+ String prefix = handlePrefix(qNamePrefixToNamespaceMap, qualifiedPackageName(namespace), namespace);
+ element.setAttributeNS(namespace, prefix + ':' + key, value);
+ }
+
+ protected void handleImport(XSDSchema xsdSchema, XSDNamedComponent xsdNamedComponent)
+ {
+ String namespace = xsdNamedComponent.getTargetNamespace();
+
+ if (!defaultXMLSchemaNamespace.equals(namespace) &&
+ (namespace == null ? xsdSchema.getTargetNamespace() != null : !namespace.equals(xsdSchema.getTargetNamespace())))
+ {
+ for (Object content : xsdSchema.getContents())
+ {
+ if (content instanceof XSDImport)
+ {
+ XSDImport xsdImport = (XSDImport)content;
+ if (namespace == null ? xsdImport.getNamespace() == null : namespace.equals(xsdImport.getNamespace()))
+ {
+ return;
+ }
+ }
+ else if (!(content instanceof XSDAnnotation))
+ {
+ break;
+ }
+ }
+
+ XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+ xsdImport.setNamespace(namespace);
+
+ EPackage ePackage = extendedMetaData.getPackage(namespace);
+ if (ePackage != null)
+ {
+ handlePrefix(xsdSchema.getQNamePrefixToNamespaceMap(), ePackage.getNsPrefix(), namespace);
+ //xsdImport.setSchemaLocation(ePackage.eResource().getURI().trimFileExtension().appendFileExtension("xsd").toString());
+ xsdImport.setSchemaLocation(ePackage.getNsURI());
+ }
+
+ xsdSchema.getContents().add(0, xsdImport);
+ }
+ }
+
+ protected String handlePrefix(Map<String, String> namespaces, String preferredPrefix, String namespace)
+ {
+ if (XMLNamespacePackage.eNS_URI.equals(namespace))
+ {
+ return "xml";
+ }
+
+ String value = namespaces.get(preferredPrefix);
+ if (namespace == null ? value == null : namespace.equals(value))
+ {
+ return preferredPrefix;
+ }
+
+ // If there is a non-null value, i.e., if the prefix is in use, see if there is already a prefix chosen.
+ //
+ if (value != null || defaultXMLSchemaNamespace.equals(namespace))
+ {
+ for (Map.Entry<String, String> entry : namespaces.entrySet())
+ {
+ if (namespace == null ? entry.getValue() == null : namespace.equals(entry.getValue()))
+ {
+ // Return the previously assigned prefix; it may not match the preferred one.
+ //
+ return entry.getKey();
+ }
+ }
+ }
+
+ String uniquePrefix = preferredPrefix;
+ for (int i = 0; namespaces.containsKey(uniquePrefix); ++i)
+ {
+ uniquePrefix = preferredPrefix + "_" + i;
+ }
+ namespaces.put("".equals(uniquePrefix) ? null : uniquePrefix, namespace);
+ return uniquePrefix;
+ }
+
+ protected static final String GEN_MODEL_PACKAGE_NS_URI = "http://www.eclipse.org/emf/2002/GenModel";
+
+ protected boolean isIgnoredAnnotationSource(String sourceURI)
+ {
+ return
+ EcorePackage.eNS_URI.equals(sourceURI) ||
+ ExtendedMetaData.ANNOTATION_URI.equals(sourceURI) ||
+ GEN_MODEL_PACKAGE_NS_URI.equals(sourceURI);
+ }
+
+ protected void buildAnnotations(XSDComponent xsdComponent, EModelElement eModelElement)
+ {
+ for (EAnnotation eAnnotation : eModelElement.getEAnnotations())
+ {
+ String source = eAnnotation.getSource();
+ if (!isIgnoredAnnotationSource(source))
+ {
+ XSDAnnotation xsdAnnotation = null;
+ for (Map.Entry<String, String> entry : eAnnotation.getDetails().entrySet())
+ {
+ String key = entry.getKey();
+ String value = entry.getValue();
+ if (key != null && value.indexOf('\n') == -1 && value.indexOf('\r') == -1)
+ {
+ createAnnotation(xsdComponent, source, key, value);
+ }
+ else
+ {
+ if (xsdAnnotation == null)
+ {
+ xsdAnnotation = buildAnnotation(xsdComponent, eModelElement);
+ }
+ if (xsdAnnotation != null)
+ {
+ Element applicationInformation = xsdAnnotation.createApplicationInformation(source);
+ if (key != null)
+ {
+ createEcoreAnnotation(xsdComponent.getSchema().getQNamePrefixToNamespaceMap(), applicationInformation, "key", key);
+ }
+ if (value != null)
+ {
+ applicationInformation.appendChild(xsdAnnotation.getSchema().getDocument().createTextNode(value));
+ }
+ xsdAnnotation.getElement().appendChild(applicationInformation);
+ }
+ }
+ }
+ }
+ }
+
+ String documentation = EcoreUtil.getDocumentation(eModelElement);
+ if (documentation != null)
+ {
+ XSDAnnotation xsdAnnotation = buildAnnotation(xsdComponent, eModelElement);
+ if (xsdAnnotation != null)
+ {
+ createUserInfo(xsdAnnotation, documentation);
+ }
+ }
+ }
+
+ protected XSDAnnotation buildAnnotation(XSDConcreteComponent xsdComponent, EModelElement eModelElement)
+ {
+ XSDAnnotation xsdAnnotation = null;
+ if (xsdComponent instanceof XSDAttributeUse)
+ {
+ xsdComponent = ((XSDAttributeUse)xsdComponent).getContent();
+ }
+ else if (xsdComponent instanceof XSDParticle)
+ {
+ xsdComponent = ((XSDParticle)xsdComponent).getContent();
+ }
+
+ if (xsdComponent instanceof XSDSchema)
+ {
+ ((XSDSchema)xsdComponent).getContents().add(0, xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ else if (xsdComponent instanceof XSDTypeDefinition)
+ {
+ XSDTypeDefinition xsdTypeDefinition = ((XSDTypeDefinition)xsdComponent);
+ if ((xsdAnnotation = xsdTypeDefinition.getAnnotation()) == null)
+ {
+ xsdTypeDefinition.setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ }
+ else if (xsdComponent instanceof XSDFacet)
+ {
+ XSDFacet xsdFacet = ((XSDFacet)xsdComponent);
+ if ((xsdAnnotation = xsdFacet.getAnnotation()) == null)
+ {
+ xsdFacet.setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ }
+ else if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)xsdComponent);
+ if ((xsdAnnotation = xsdElementDeclaration.getAnnotation()) == null)
+ {
+ xsdElementDeclaration.setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ }
+ else if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)xsdComponent);
+ if ((xsdAnnotation = xsdAttributeDeclaration.getAnnotation()) == null)
+ {
+ xsdAttributeDeclaration.setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ }
+
+ return xsdAnnotation;
+ }
+
+ protected void createUserInfo(XSDAnnotation xsdAnnotation, String documentation)
+ {
+ Element userInformation = xsdAnnotation.createUserInformation(null);
+
+ // Try to parse the documentation and use the parsed version if it's successful.
+ //
+ XSDParser xsdParser = new XSDParser(null);
+ xsdParser.parseString("<documentation>" + documentation + "</documentation>");
+ Document document = xsdParser.getDocument();
+ if (xsdParser.getDiagnostics().isEmpty() && document.getDocumentElement().getFirstChild() != null)
+ {
+ Document xsdDocument = xsdAnnotation.getSchema().getDocument();
+ for (Node node = document.getDocumentElement().getFirstChild(); node != null; node = node.getNextSibling())
+ {
+ userInformation.appendChild(xsdDocument.importNode(node, true));
+ }
+ }
+ else
+ {
+ userInformation.appendChild(xsdAnnotation.getSchema().getDocument().createTextNode(documentation));
+ }
+
+ xsdAnnotation.getElement().appendChild(userInformation);
+ }
+
+ protected void buildAnnotation(EModelElement eModelElement, Element parent)
+ {
+ Document document = parent.getOwnerDocument();
+ for (EAnnotation eAnnotation : eModelElement.getEAnnotations())
+ {
+ String source = eAnnotation.getSource();
+ if (!isIgnoredAnnotationSource(source))
+ {
+ Element annotation = document.createElementNS(null, "annotation");
+ if (source != null)
+ {
+ annotation.setAttributeNS(null, "source", source);
+ }
+ for (Map.Entry<String, String> entry : eAnnotation.getDetails())
+ {
+ String key = entry.getKey();
+ String value = entry.getValue();
+ Element detail = document.createElementNS(null, "detail");
+ if (key != null)
+ {
+ detail.setAttributeNS(null, "key", key);
+ }
+ if (value != null)
+ {
+ detail.appendChild(document.createTextNode(value));
+ }
+ annotation.appendChild(detail);
+ }
+ parent.appendChild(annotation);
+ }
+ else if (GEN_MODEL_PACKAGE_NS_URI.equals(source) && eAnnotation.getDetails().containsKey("documentation"))
+ {
+ String documentation = EcoreUtil.getDocumentation(eModelElement);
+ if (documentation != null)
+ {
+ Element annotation = document.createElementNS(null, "annotation");
+ annotation.setAttributeNS(null, "source", GEN_MODEL_PACKAGE_NS_URI);
+ Element detail = document.createElementNS(null, "detail");
+ detail.setAttributeNS(null, "key", "documentation");
+ detail.appendChild(document.createTextNode(documentation));
+ annotation.appendChild(detail);
+ parent.appendChild(annotation);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreXMISchemaBuilder.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreXMISchemaBuilder.java
new file mode 100644
index 0000000..3020e70
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreXMISchemaBuilder.java
@@ -0,0 +1,675 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDProcessContents;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+
+/**
+ * This class produces an XSDSchema given an Ecore EPackage.
+ * The XSDSchema is an XMI schema.
+ */
+public class EcoreXMISchemaBuilder extends EcoreXMLSchemaBuilder
+{
+ protected static final String XMI_PREFIX = "xmi";
+ protected static final String XMI_URI = "http://www.omg.org/XMI";
+ protected static final String XMI_SCHEMA_LOCATION = "XMI.xsd";
+
+ public EcoreXMISchemaBuilder()
+ {
+ super();
+ }
+
+ public Collection<EObject> generate(EPackage ePackage, QNameMap qNameMap, boolean minimized, List<EClass> rootList, Map<?, ?> options)
+ {
+ minimizedXMI = minimized;
+ rootClasses = rootList;
+ if (options != null)
+ {
+ useEncodedAttributeStyle = Boolean.TRUE.equals(options.get(EcoreXMLSchemaBuilder.OPTION_USE_ENCODED_ATTRIBUTE_STYLE));
+ enforceLowerBound = Boolean.TRUE.equals(options.get(EcoreXMLSchemaBuilder.OPTION_TO_ENFORCE_LOWERBOUND));
+ }
+
+ if (rootList != null && !rootList.isEmpty())
+ {
+ for (EClass root : rootList)
+ {
+ if (root.getEPackage() != ePackage)
+ {
+ throw new IllegalArgumentException("Inappropriate root class " + root.getName());
+ }
+ }
+ }
+
+ return generate(ePackage, qNameMap);
+ }
+
+ @Override
+ public Collection<EObject> generate(EPackage ePackage, QNameMap qNameMap)
+ {
+ List<EObject> result = new ArrayList<EObject>(super.generate(ePackage, qNameMap));
+ result.add(1, createXMISchema());
+ return result;
+ }
+
+ protected XSDSchema createXMISchema()
+ {
+ XSDSchema xmiSchema = XSDFactory.eINSTANCE.createXSDSchema();
+ xmiSchema.setTargetNamespace(XMI_URI);
+ xmiSchema.setSchemaForSchemaQNamePrefix("xsd");
+
+ Map<String, String> namespaces = xmiSchema.getQNamePrefixToNamespaceMap();
+ namespaces.put(XMI_PREFIX, XMI_URI);
+ namespaces.put("xsd", XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+
+ // <xsd:attribute name="id" type="xsd:ID"/>
+ XSDAttributeDeclaration xmiIdAttribute = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ xmiIdAttribute.setName("id");
+ xmiIdAttribute.setTypeDefinition(xmiSchema.getSchemaForSchema().resolveSimpleTypeDefinition("ID"));
+ xmiSchema.getContents().add(xmiIdAttribute);
+
+ // <xsd:attributeGroup name="IdentityAttribs">
+ // <xsd:attribute name="label" type="xsd:string" use="optional" form="qualified"/>
+ // <xsd:attribute name="uuid" type="xsd:string" use="optional" form="qualified"/>
+ // </xsd:attributeGroup>
+ XSDAttributeGroupDefinition xmiIdentityAttribs = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ xmiIdentityAttribs.setName("IdentityAttribs");
+ List<XSDAttributeGroupContent> contents = xmiIdentityAttribs.getContents();
+ contents.add(createAttributeUse(xmiSchema, "label", "string", "optional", "qualified", null));
+ contents.add(createAttributeUse(xmiSchema, "uuid", "string", "optional", "qualified", null));
+ xmiSchema.getContents().add(xmiIdentityAttribs);
+
+ // <xsd:attributeGroup name="LinkAttribs">
+ // <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="idref" type="xsd:IDREF" use="optional" form="qualified"/>
+ // </xsd:attributeGroup>
+ XSDAttributeGroupDefinition xmiLinkAttribs = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ xmiLinkAttribs.setName("LinkAttribs");
+ contents = xmiLinkAttribs.getContents();
+ contents.add(createAttributeUse(xmiSchema, "href", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "idref", "IDREF", "optional", "qualified", null));
+ xmiSchema.getContents().add(xmiLinkAttribs);
+
+ // <xsd:attributeGroup name="ObjectAttribs">
+ // <xsd:attributeGroup ref="IdentityAttribs"/>
+ // <xsd:attributeGroup ref="LinkAttribs"/>
+ // <xsd:attribute name="version" type="xsd:string" use="optional" fixed="2.0" form="qualified"/>
+ // <xsd:attribute name="type" type="xsd:QName" use="optional" form="qualified"/>
+ // </xsd:attributeGroup>
+ XSDAttributeGroupDefinition xmiObjectAttribs = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ xmiObjectAttribs.setName("ObjectAttribs");
+ contents = xmiObjectAttribs.getContents();
+ contents.add(createAttributeGroupReference(xmiSchema, "IdentityAttribs"));
+ contents.add(createAttributeGroupReference(xmiSchema, "LinkAttribs"));
+ contents.add(createAttributeUse(xmiSchema, "version", "string", "optional", "qualified", "2.0"));
+ contents.add(createAttributeUse(xmiSchema, "type", "QName", "optional", "qualified", null));
+ xmiSchema.getContents().add(xmiObjectAttribs);
+
+ // <xsd:complexType name="XMI">
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:any processContents="strict"/>
+ // </xsd:choice>
+ // <xsd:attribute ref="id"/>
+ // <xsd:attributeGroup ref="IdentityAttribs"/>
+ // <xsd:attributeGroup ref="LinkAttribs"/>
+ // <xsd:attribute name="type" type="xsd:QName" use="optional" form="qualified"/>
+ // <xsd:attribute name="version" type="xsd:string" use="required" fixed="2.0" form="qualified"/>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition xmiComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ xmiComplexTypeDefinition.setName("XMI");
+ // choice model group
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ XSDModelGroup modelGroup = createAnyModelGroup("strict");
+ particle.setContent(modelGroup);
+ xmiComplexTypeDefinition.setContent(particle);
+ contents = xmiComplexTypeDefinition.getAttributeContents();
+ contents.add(createAttributeGroupReference(xmiSchema, "IdentityAttribs"));
+ contents.add(createAttributeGroupReference(xmiSchema, "LinkAttribs"));
+ contents.add(createAttributeUse(xmiSchema, "type", "QName", "optional", "qualified", null));
+ contents.add(createAttributeUse(xmiSchema, "version", "string", "required", "qualified", "2.0"));
+ xmiSchema.getContents().add(xmiComplexTypeDefinition);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "XMI", "XMI", false));
+
+ // <xsd:complexType name="PackageReference">
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:element name="name" type="xsd:string"/>
+ // <xsd:element name="version" type="xsd:string"/>
+ // <xsd:element ref="Extension"/>
+ // </xsd:choice>
+ // <xsd:attribute ref="id"/>
+ // <xsd:attributeGroup ref="ObjectAttribs"/>
+ // <xsd:attribute name="name" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="version" type="xsd:string" use="optional"/>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition prComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ prComplexTypeDefinition.setName("PackageReference");
+ // choice model group
+ particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ addElementDeclaration(xmiSchema, modelGroup, "name", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "version", "string");
+ particle.setContent(modelGroup);
+ prComplexTypeDefinition.setContent(particle);
+ contents = prComplexTypeDefinition.getAttributeContents();
+ contents.add(createAttributeGroupReference(xmiSchema, "ObjectAttribs"));
+ contents.add(createAttributeUse(xmiSchema, "name", "string", "optional", null, null));
+ // EATM contents.add(createAttributeUse(xmiSchema, "version", "string", "optional", null, null));
+ xmiSchema.getContents().add(prComplexTypeDefinition);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "PackageReference", "PackageReference", false));
+
+ // <xsd:complexType name="Model">
+ // <xsd:complexContent>
+ // <xsd:extension base="PackageReference"/>
+ // </xsd:complexContent>
+ // </xsd:complexType>
+ xmiSchema.getContents().add(createExtendedComplexTypeDefinition(xmiSchema, "Model", "PackageReference"));
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Model", "Model", false));
+
+ // <xsd:complexType name="Import">
+ // <xsd:complexContent>
+ // <xsd:extension base="PackageReference"/>
+ // </xsd:complexContent>
+ // </xsd:complexType>
+ xmiSchema.getContents().add(createExtendedComplexTypeDefinition(xmiSchema, "Import", "PackageReference"));
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Import", "Import", false));
+
+ // <xsd:complexType name="MetaModel">
+ // <xsd:complexContent>
+ // <xsd:extension base="PackageReference"/>
+ // </xsd:complexContent>
+ // </xsd:complexType>
+ xmiSchema.getContents().add(createExtendedComplexTypeDefinition(xmiSchema, "MetaModel", "PackageReference"));
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "MetaModel", "MetaModel", false));
+
+ // <xsd:complexType name="Documentation">
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:element name="contact" type="xsd:string"/>
+ // <xsd:element name="exporter" type="xsd:string"/>
+ // <xsd:element name="exporterVersion" type="xsd:string"/>
+ // <xsd:element name="longDescription" type="xsd:string"/>
+ // <xsd:element name="shortDescription" type="xsd:string"/>
+ // <xsd:element name="notice" type="xsd:string"/>
+ // <xsd:element name="owner" type="xsd:string"/>
+ // <xsd:element ref="Extension"/>
+ // </xsd:choice>
+ // <xsd:attribute ref="id"/>
+ // <xsd:attributeGroup ref="ObjectAttribs"/>
+ // <xsd:attribute name="contact" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="exporter" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="exporterVersion" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="longDescription" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="shortDescription" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="notice" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="owner" type="xsd:string" use="optional"/>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition documentationComplexType = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ documentationComplexType.setName("Documentation");
+ // choice model group
+ particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ addElementDeclaration(xmiSchema, modelGroup, "contact", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "exporter", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "exporterVersion", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "longDescription", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "shortDescription", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "notice", "string");
+ addElementDeclaration(xmiSchema, modelGroup, "owner", "string");
+ particle.setContent(modelGroup);
+ documentationComplexType.setContent(particle);
+ contents = documentationComplexType.getAttributeContents();
+ contents.add(createAttributeGroupReference(xmiSchema, "ObjectAttribs"));
+ contents.add(createAttributeUse(xmiSchema, "contact", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "exporter", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "exporterVersion", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "longDescription", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "shortDescription", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "notice", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "owner", "string", "optional", null, null));
+ xmiSchema.getContents().add(documentationComplexType);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Documentation", "Documentation", false));
+
+ // <xsd:complexType name="Extension">
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:any processContents="lax"/>
+ // </xsd:choice>
+ // <xsd:attribute ref="id"/>
+ // <xsd:attributeGroup ref="ObjectAttribs"/>
+ // <xsd:attribute name="extender" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="extenderID" type="xsd:string" use="optional"/>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition extensionComplexType = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ extensionComplexType.setName("Extension");
+ // choice model group
+ particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ modelGroup = createAnyModelGroup("lax");
+ particle.setContent(modelGroup);
+ extensionComplexType.setContent(particle);
+ contents = extensionComplexType.getAttributeContents();
+ contents.add(createAttributeGroupReference(xmiSchema, "ObjectAttribs"));
+ contents.add(createAttributeUse(xmiSchema, "extender", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "extenderID", "string", "optional", null, null));
+ xmiSchema.getContents().add(extensionComplexType);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Extension", "Extension", false));
+
+ // <xsd:complexType name="Difference">
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:element name="target">
+ // <xsd:complexType>
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:any processContents="skip"/>
+ // </xsd:choice>
+ // <xsd:anyAttribute processContents="skip"/>
+ // </xsd:complexType>
+ // </xsd:element>
+ // <xsd:element name="difference" type="Difference"/>
+ // <xsd:element name="container" type="Difference"/>
+ // <xsd:element ref="Extension"/>
+ // </xsd:choice>
+ // <xsd:attribute ref="id"/>
+ // <xsd:attributeGroup ref="ObjectAttribs"/>
+ // <xsd:attribute name="target" type="xsd:IDREFS" use="optional"/>
+ // <xsd:attribute name="container" type="xsd:IDREFS" use="optional"/>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition differenceComplexType = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ differenceComplexType.setName("Difference");
+ particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ XSDParticle particle2 = XSDFactory.eINSTANCE.createXSDParticle();
+ XSDElementDeclaration target = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ target.setName("target");
+ XSDComplexTypeDefinition anonymous = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ XSDParticle particle3 = XSDFactory.eINSTANCE.createXSDParticle();
+ particle3.setMinOccurs(0);
+ particle3.setMaxOccurs(-1);
+ particle3.setContent(createAnyModelGroup("skip"));
+ anonymous.setContent(particle3);
+ anonymous.setAttributeWildcardContent(createAny("skip"));
+ target.setAnonymousTypeDefinition(anonymous);
+ particle2.setContent(target);
+ modelGroup.getContents().add(particle2);
+ addElementDeclaration(xmiSchema, modelGroup, "difference", "Difference", false);
+ addElementDeclaration(xmiSchema, modelGroup, "container", "Difference", false);
+ particle.setContent(modelGroup);
+ differenceComplexType.setContent(particle);
+ contents = differenceComplexType.getAttributeContents();
+ contents.add(createAttributeGroupReference(xmiSchema, "ObjectAttribs"));
+ contents.add(createAttributeUse(xmiSchema, "target", "IDREFS", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "container", "IDREFS", "optional", null, null));
+ xmiSchema.getContents().add(differenceComplexType);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Difference", "Difference", false));
+
+ // <xsd:complexType name="Add">
+ // <xsd:complexContent>
+ // <xsd:extension base="Difference">
+ // <xsd:attribute name="position" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="addition" type="xsd:IDREFS" use="optional"/>
+ // </xsd:extension>
+ // </xsd:complexContent>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition addComplexType = createExtendedComplexTypeDefinition(xmiSchema, "Add", "Difference");
+ contents = addComplexType.getAttributeContents();
+ contents.add(createAttributeUse(xmiSchema, "position", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "addition", "IDREFS", "optional", null, null));
+ xmiSchema.getContents().add(addComplexType);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Add", "Add", false));
+
+ // <xsd:complexType name="Replace">
+ // <xsd:complexContent>
+ // <xsd:extension base="Difference">
+ // <xsd:attribute name="position" type="xsd:string" use="optional"/>
+ // <xsd:attribute name="replacement" type="xsd:IDREFS" use="optional"/>
+ // </xsd:extension>
+ // </xsd:complexContent>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition replaceComplexType = createExtendedComplexTypeDefinition(xmiSchema, "Replace", "Difference");
+ contents = replaceComplexType.getAttributeContents();
+ contents.add(createAttributeUse(xmiSchema, "position", "string", "optional", null, null));
+ contents.add(createAttributeUse(xmiSchema, "replacement", "IDREFS", "optional", null, null));
+ xmiSchema.getContents().add(replaceComplexType);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Replace", "Replace", false));
+
+ // <xsd:complexType name="Delete">
+ // <xsd:complexContent>
+ // <xsd:extension base="Difference"/>
+ // </xsd:complexContent>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition deleteComplexType = createExtendedComplexTypeDefinition(xmiSchema, "Delete", "Difference");
+ xmiSchema.getContents().add(deleteComplexType);
+
+ xmiSchema.getContents().add(createElementDeclaration(xmiSchema, "Delete", "Delete", false));
+
+ // <xsd:complexType name="Any">
+ // <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ // <xsd:any processContents="skip"/>
+ // </xsd:choice>
+ // <xsd:anyAttribute processContents="skip"/>
+ // </xsd:complexType>
+ XSDComplexTypeDefinition xmiAny = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ xmiAny.setName("Any");
+ particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ particle.setContent(createAnyModelGroup("skip"));
+ xmiAny.setContent(particle);
+ xmiAny.setAttributeWildcardContent(createAny("skip"));
+ xmiSchema.getContents().add(xmiAny);
+
+ return xmiSchema;
+ }
+
+ protected XSDModelGroup createAnyModelGroup(String processContents)
+ {
+ XSDModelGroup modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(createAny(processContents));
+ modelGroup.getContents().add(particle);
+ return modelGroup;
+ }
+
+ protected XSDWildcard createAny(String processContents)
+ {
+ XSDWildcard any = XSDFactory.eINSTANCE.createXSDWildcard();
+
+ if ("strict".equals(processContents))
+ {
+ any.setProcessContents(XSDProcessContents.STRICT_LITERAL);
+ }
+ else
+ if ("skip".equals(processContents))
+ {
+ any.setProcessContents(XSDProcessContents.SKIP_LITERAL);
+ }
+ else
+ if ("lax".equals(processContents))
+ {
+ any.setProcessContents(XSDProcessContents.LAX_LITERAL);
+ }
+
+ return any;
+ }
+
+ protected XSDComplexTypeDefinition createExtendedComplexTypeDefinition(XSDSchema schema, String name, String extension)
+ {
+ XSDComplexTypeDefinition complexType = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ complexType.setName(name);
+ complexType.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
+ complexType.setBaseTypeDefinition(schema.resolveTypeDefinition(extension));
+ return complexType;
+ }
+
+ protected XSDAttributeGroupDefinition createAttributeGroupReference(XSDSchema schema, String name)
+ {
+ XSDAttributeGroupDefinition reference = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ reference.setResolvedAttributeGroupDefinition(schema.resolveAttributeGroupDefinition(name));
+ return reference;
+ }
+
+ protected XSDElementDeclaration createElementDeclaration(XSDSchema schema, String name, String type, boolean schemaType)
+ {
+ XSDElementDeclaration elementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ elementDeclaration.setName(name);
+
+ if (schemaType)
+ {
+ elementDeclaration.setTypeDefinition(schema.getSchemaForSchema().resolveSimpleTypeDefinition(type));
+ }
+ else
+ {
+ elementDeclaration.setTypeDefinition(schema.resolveSimpleTypeDefinition(type));
+ }
+
+ return elementDeclaration;
+ }
+
+ protected void addElementDeclaration(XSDSchema schema, XSDModelGroup modelGroup, String name, String type)
+ {
+ addElementDeclaration(schema, modelGroup, name, type, true);
+ }
+
+ protected void addElementDeclaration(XSDSchema schema, XSDModelGroup modelGroup, String name, String type, boolean schemaType)
+ {
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(createElementDeclaration(schema, name, type, schemaType));
+ modelGroup.getContents().add(particle);
+ }
+
+ protected void addElementDeclarationReference(XSDSchema schema, XSDModelGroup modelGroup, String reference)
+ {
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ XSDElementDeclaration elementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ elementDeclaration.setResolvedElementDeclaration(schema.resolveElementDeclaration(reference));
+ particle.setContent(elementDeclaration);
+ modelGroup.getContents().add(particle);
+ }
+
+ protected XSDAttributeUse createAttributeReference(XSDSchema schema, String name)
+ {
+ XSDAttributeDeclaration attributeDeclaration = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ attributeDeclaration.setResolvedAttributeDeclaration(schema.resolveAttributeDeclaration(name));
+ XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ attributeUse.setContent(attributeDeclaration);
+ return attributeUse;
+ }
+
+ protected XSDAttributeUse createAttributeUse(XSDSchema schema, String name, String type, String use, String form, String fixed)
+ {
+ XSDAttributeDeclaration attributeDeclaration = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ attributeDeclaration.setName(name);
+ attributeDeclaration.setTypeDefinition(schema.getSchemaForSchema().resolveSimpleTypeDefinition(type));
+
+ if ("qualified".equals(form))
+ {
+ attributeDeclaration.setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+
+ XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ attributeUse.setContent(attributeDeclaration);
+
+ if ("optional".equals(use))
+ {
+ attributeUse.setUse(XSDAttributeUseCategory.OPTIONAL_LITERAL);
+ }
+
+ if ("required".equals(use))
+ {
+ attributeUse.setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ }
+
+ if (fixed != null)
+ {
+ attributeUse.setConstraint(XSDConstraint.FIXED_LITERAL);
+ attributeUse.setLexicalValue("2.0");
+ }
+
+ return attributeUse;
+ }
+
+ @Override
+ protected boolean makeClassElementDeclaration(EClass eClass)
+ {
+ // if rootList == null, then generate all classes
+ // if rootList.isEmpty, then generate no classes
+ // if rootList.contains(), then generate only those contained classes
+
+ return rootClasses == null || (!rootClasses.isEmpty() && rootClasses.contains(eClass));
+ }
+
+ @Override
+ protected XSDModelGroup createModelGroup(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDModelGroup modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setMinOccurs(0);
+ particle.setMaxOccurs(-1);
+ particle.setContent(modelGroup);
+ xsdComplexTypeDefinition.setContent(particle);
+ return modelGroup;
+ }
+
+ @Override
+ protected void setAttributeElementMultiplicity(EAttribute attribute, XSDParticle particle)
+ {
+ // Do nothing
+ }
+
+ @Override
+ protected void additionalProcessing(EClass eClass, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (eClass.getESuperTypes().size() == 0)
+ {
+ addXMIExtension(getModelGroup(xsdComplexTypeDefinition));
+ addXMIAttributes(xsdComplexTypeDefinition);
+ }
+ }
+
+ protected void addXMIExtension(XSDModelGroup modelGroup)
+ {
+ if (!minimizedXMI)
+ {
+ importXMI();
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setResolvedElementDeclaration(xsdElementDeclaration.resolveElementDeclaration(XMI_URI, "Extension"));
+ particle.setContent(xsdElementDeclaration);
+ modelGroup.getContents().add(particle);
+ }
+ }
+
+ protected void addXMIAttributes(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+
+ if (!minimizedXMI)
+ {
+ importXMI();
+ XSDAttributeGroupDefinition objAttribs = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ objAttribs.setResolvedAttributeGroupDefinition(objAttribs.resolveAttributeGroupDefinition(XMI_URI, "ObjectAttribs"));
+ xsdComplexTypeDefinition.getAttributeContents().add(0, objAttribs);
+ }
+ else
+ {
+ if (!useEncodedAttributeStyle)
+ {
+ importXMI();
+ XSDAttributeGroupDefinition linkAttribs = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ linkAttribs.setResolvedAttributeGroupDefinition(linkAttribs.resolveAttributeGroupDefinition(XMI_URI, "LinkAttribs"));
+ xsdComplexTypeDefinition.getAttributeContents().add(0, linkAttribs);
+ }
+ }
+
+ if (!minimizedXMI)
+ {
+ importXMI();
+ XSDAttributeDeclaration attrDecl = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ attrDecl.setResolvedAttributeDeclaration(attrDecl.resolveAttributeDeclaration(XMI_URI, "id"));
+ XSDAttributeUse attrUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ attrUse.setContent(attrDecl);
+ xsdComplexTypeDefinition.getAttributeContents().add(0, attrUse);
+ }
+ }
+
+ @Override
+ protected void setDefaultValue(EAttribute attribute, XSDAttributeDeclaration attrDecl)
+ {
+ // Do nothing
+ }
+
+ @Override
+ protected boolean makeReferenceElement(EReference reference)
+ {
+ return (reference.isContainment() && !reference.isContainer()) || !useEncodedAttributeStyle;
+ }
+
+ @Override
+ protected void setReferenceElementType(EReference reference, XSDElementDeclaration xsdElementDeclaration)
+ {
+ if (reference.getEType() != null)
+ {
+ super.setReferenceElementType(reference, xsdElementDeclaration);
+ }
+ else
+ {
+ importXMI();
+ xsdElementDeclaration.setTypeDefinition(xsdElementDeclaration.resolveSimpleTypeDefinition(XMI_URI, "Any"));
+ }
+ }
+
+ @Override
+ protected void setReferenceElementMultiplicity(EReference reference, XSDParticle particle)
+ {
+ // Do nothing
+ }
+
+ protected void importXMI()
+ {
+ Map<String, String> namespaces = this.xsdSchema.getQNamePrefixToNamespaceMap();
+ if (namespaces.put(XMI_PREFIX, XMI_URI) == null)
+ {
+ XSDImport xmiImport = XSDFactory.eINSTANCE.createXSDImport();
+ xmiImport.setNamespace(XMI_URI);
+ xmiImport.setSchemaLocation(EcorePackage.eNS_URI.equals(xsdSchema.getTargetNamespace()) ? XMI_SCHEMA_LOCATION : "platform:/plugin/org.eclipse.emf.ecore/model/" + XMI_SCHEMA_LOCATION);
+ this.xsdSchema.getContents().add(0, xmiImport);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreXMLSchemaBuilder.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreXMLSchemaBuilder.java
new file mode 100644
index 0000000..6942eda
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/EcoreXMLSchemaBuilder.java
@@ -0,0 +1,853 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDParser;
+
+
+/**
+ * This class produces an XSDSchema given an Ecore EPackage.
+ * The XSDSchema is an XML schema.
+ */
+public class EcoreXMLSchemaBuilder extends MapBuilder
+{
+ public interface QNameMap
+ {
+ String getName(ENamedElement element);
+ }
+ public static final String OPTION_TO_ENFORCE_LOWERBOUND = "ENFORCE_LOWERBOUND";
+ public static final String OPTION_USE_ENCODED_ATTRIBUTE_STYLE = "USE_ENCODE_ATTRIBUTE_STYLE";
+
+ protected static final String EMF_SCHEMA_URI = "http://org.eclipse.emf/xsd";
+ protected static final String EMF_SCHEMA_PREFIX = "emf";
+ protected static final String EMF_SCHEMA_NAME = "EMF.xsd";
+ protected static final String REFERENCE_TYPE_NAME = "string";
+
+ protected XSDSchema xsdSchema;
+ protected XSDSchema emfSchema;
+ protected EPackage ePackage;
+ protected Map<String, String> ecoreToSchemaName;
+ protected Map<EPackage, XSDSchema> ePackageToXSDSchemaMap = new HashMap<EPackage, XSDSchema>();
+ protected Map<EPackage, String> ePackageToNsPrefixMap = new HashMap<EPackage, String>();
+ protected QNameMap qNameMap;
+
+ protected boolean minimizedXMI;
+ protected boolean useEncodedAttributeStyle;
+ protected boolean enforceLowerBound;
+ protected List<EClass> rootClasses;
+ protected XSDParser xsdParser;
+
+ public EcoreXMLSchemaBuilder()
+ {
+ // Make sure the xsd prefix isn't used by a package.
+ //
+ ePackageToNsPrefixMap.put(null, "xsd");
+ }
+
+ public Collection<EObject> generate(EPackage ePackage)
+ {
+ return generate(ePackage, null);
+ }
+
+ public Collection<EObject> generate(EPackage ePackage, QNameMap qNameMap)
+ {
+ this.qNameMap = qNameMap;
+
+ addInput(ePackage);
+
+ this.ePackage = ePackage;
+ createSchema();
+ processEnums();
+ processClasses();
+ Collection<EObject> result = new ArrayList<EObject>();
+ result.add(xsdSchema);
+ if (emfSchema != null)
+ {
+ result.add(emfSchema);
+ }
+ if (mapper != null)
+ {
+ result.add(mapper.getRoot());
+ }
+
+ // Add model documentation.
+ //
+ for (Map.Entry<XSDComponent, EModelElement> entry : xsdComponentToEModelElementMap.entrySet())
+ {
+ addDocumentation(entry.getKey(), entry.getValue());
+ }
+
+ return result;
+ }
+
+ protected String getUniqueNsPrefix(EPackage ePackage)
+ {
+ if (ePackageToNsPrefixMap.containsKey(ePackage))
+ {
+ return ePackageToNsPrefixMap.get(ePackage);
+ }
+ else
+ {
+ String nsPrefix = ePackage.getNsPrefix();
+ String uniqueNsPrefix = nsPrefix;
+ for (int i = 1; ePackageToNsPrefixMap.values().contains(uniqueNsPrefix); ++i)
+ {
+ uniqueNsPrefix = nsPrefix + "_" + i;
+ }
+ ePackageToNsPrefixMap.put(ePackage, uniqueNsPrefix);
+ return uniqueNsPrefix;
+ }
+ }
+
+ protected void createSchema()
+ {
+ xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+ addOutput(xsdSchema);
+ // addInput(xsdSchema);
+
+ xsdSchema.setTargetNamespace(ePackage.getNsURI());
+ xsdSchema.setSchemaForSchemaQNamePrefix("xsd");
+
+ Map<String, String> namespaces = xsdSchema.getQNamePrefixToNamespaceMap();
+ namespaces.put(getUniqueNsPrefix(ePackage), xsdSchema.getTargetNamespace());
+ namespaces.put(xsdSchema.getSchemaForSchemaQNamePrefix(), XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+
+ map(xsdSchema, ePackage);
+ }
+
+ protected void createEMFSchema()
+ {
+ emfSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ emfSchema.setTargetNamespace(EMF_SCHEMA_URI);
+ emfSchema.setSchemaForSchemaQNamePrefix("xsd");
+
+ Map<String, String> namespaces = emfSchema.getQNamePrefixToNamespaceMap();
+ namespaces.put(EMF_SCHEMA_PREFIX, emfSchema.getTargetNamespace());
+ namespaces.put(emfSchema.getSchemaForSchemaQNamePrefix(), XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+
+ XSDSimpleTypeDefinition list = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ list.setName(REFERENCE_TYPE_NAME);
+
+ XSDSimpleTypeDefinition union = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ union.getMemberTypeDefinitions().add(emfSchema.getSchemaForSchema().resolveSimpleTypeDefinition("IDREF"));
+ union.getMemberTypeDefinitions().add(emfSchema.getSchemaForSchema().resolveSimpleTypeDefinition("QName"));
+ union.getMemberTypeDefinitions().add(emfSchema.getSchemaForSchema().resolveSimpleTypeDefinition("anyURI"));
+
+ list.setItemTypeDefinition(union);
+ list.getContents().add(union);
+
+ emfSchema.getContents().add(list);
+ }
+
+ protected void addEMFSchema()
+ {
+ // Do nothing.
+ }
+
+ protected XSDTypeDefinition typeInOtherSchema(EClassifier classifier)
+ {
+ EPackage typePkg = classifier.getEPackage();
+ Map<String, String> namespaces = xsdSchema.getQNamePrefixToNamespaceMap();
+
+ String nsPrefix = getUniqueNsPrefix(typePkg);
+ if (namespaces.get(nsPrefix) == null)
+ {
+ namespaces.put(nsPrefix, typePkg.getNsURI());
+ addImport(typePkg.getNsURI(), getName(typePkg) + ".xsd");
+ createOtherSchema(typePkg);
+ }
+
+ XSDSchema otherXSDSchema = ePackageToXSDSchemaMap.get(typePkg);
+ return otherXSDSchema.resolveTypeDefinition(getName(classifier));
+ }
+
+ protected void addImport(String namespace, String schemaLocation)
+ {
+ XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+ xsdImport.setNamespace(namespace);
+ xsdImport.setSchemaLocation(schemaLocation);
+ xsdSchema.getContents().add(0, xsdImport);
+ }
+
+ protected void createOtherSchema(EPackage ePackage)
+ {
+ XSDSchema otherSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ otherSchema.setTargetNamespace(ePackage.getNsURI());
+ otherSchema.setSchemaForSchemaQNamePrefix("xsd");
+
+ Map<String, String> namespaces = otherSchema.getQNamePrefixToNamespaceMap();
+ namespaces.put(getUniqueNsPrefix(ePackage), otherSchema.getTargetNamespace());
+ namespaces.put(otherSchema.getSchemaForSchemaQNamePrefix(), XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+
+ ePackageToXSDSchemaMap.put(ePackage, otherSchema);
+
+ // map(otherSchema, ePackage);
+ }
+
+ protected void processClasses()
+ {
+ for (EClassifier classifier : ePackage.getEClassifiers())
+ {
+ if (classifier instanceof EClass)
+ {
+ processClass((EClass)classifier);
+ }
+ }
+ }
+
+ protected void processEnums()
+ {
+ for (EClassifier classifier : ePackage.getEClassifiers())
+ {
+ if (classifier instanceof EEnum)
+ {
+ processEnum((EEnum)classifier);
+ }
+ }
+ }
+
+ /**
+ * Return the given name, or the name from the XMLMap, if there is one.
+ */
+ protected String getName(ENamedElement element)
+ {
+ if (qNameMap == null)
+ {
+ return element.getName();
+ }
+ else
+ {
+ return qNameMap.getName(element);
+ }
+ }
+
+ /**
+ * Each EEnum is mapped to a schema simple type that restricts the string simple type;
+ * the schema type has an enumeration facet for each EEnumLiteral.
+ */
+ protected void processEnum(EEnum eEnum)
+ {
+ XSDSimpleTypeDefinition enumType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ enumType.setName(getName(eEnum));
+ enumType.setBaseTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("NCName"));
+ xsdSchema.getContents().add(enumType);
+
+ map(enumType, eEnum);
+
+ for (EEnumLiteral literal : eEnum.getELiterals())
+ {
+ XSDEnumerationFacet facet = XSDFactory.eINSTANCE.createXSDEnumerationFacet();
+ facet.setLexicalValue(getName(literal));
+ enumType.getFacetContents().add(facet);
+
+ map(facet, literal);
+ }
+ }
+
+ /**
+ * Map each EClass to a schema complex type and an element declaration of that type;
+ * the names of the complex type and element declaration are the name of the class.
+ * If the class is abstract, only a complex type is created from it; there is no
+ * corresponding element declaration.
+ */
+ protected void processClass(EClass eClass)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ xsdComplexTypeDefinition.setName(getName(eClass));
+ if (eClass.isAbstract())
+ {
+ xsdComplexTypeDefinition.setAbstract(true);
+ }
+ List<EClass> superClasses = eClass.getESuperTypes();
+
+ if (superClasses.size() > 0)
+ {
+ xsdComplexTypeDefinition.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
+ EClass superClass = superClasses.get(0);
+
+ if (superClass.getEPackage() == ePackage)
+ {
+ xsdComplexTypeDefinition.setBaseTypeDefinition(xsdSchema.resolveTypeDefinition(getName(superClass)));
+ }
+ else
+ {
+ xsdComplexTypeDefinition.setBaseTypeDefinition(typeInOtherSchema(superClass));
+ }
+ }
+
+ xsdSchema.getContents().add(xsdComplexTypeDefinition);
+ map(xsdComplexTypeDefinition, eClass);
+
+ List<EStructuralFeature> features = getFeatures(eClass, superClasses);
+ for (EStructuralFeature f : features)
+ {
+ if (f instanceof EAttribute)
+ {
+ processAttribute((EAttribute)f, xsdComplexTypeDefinition);
+ }
+ else if (f instanceof EReference)
+ {
+ processReference((EReference)f, xsdComplexTypeDefinition);
+ }
+ }
+
+ if (makeClassElementDeclaration(eClass))
+ {
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setName(getName(eClass));
+ xsdElementDeclaration.setTypeDefinition(xsdComplexTypeDefinition);
+ xsdSchema.getContents().add(xsdElementDeclaration);
+
+ map(xsdElementDeclaration, eClass);
+ }
+
+ additionalProcessing(eClass, xsdComplexTypeDefinition);
+ }
+
+ protected boolean makeClassElementDeclaration(EClass eClass)
+ {
+ return !eClass.isAbstract();
+ }
+
+ protected void additionalProcessing(EClass cls, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ // Do nothing
+ }
+
+ /**
+ * Return the inherited features from the super classes (except the first one, which
+ * is the base type for the generated schema type for the class), and the local
+ * features.
+ */
+ protected List<EStructuralFeature> getFeatures(EClass eClass, List<EClass> superClasses)
+ {
+ List<EStructuralFeature> features = new ArrayList<EStructuralFeature>();
+
+ if (superClasses.size() > 0)
+ {
+ List<EClass> allSupers = superClasses.get(0).getEAllSuperTypes();
+ Set<EClass> allSuperClasses = new HashSet<EClass>();
+ allSuperClasses.addAll(allSupers);
+ allSuperClasses.add(superClasses.get(0));
+
+ for (int i = 1; i < superClasses.size(); i++)
+ {
+ EClass superClass = superClasses.get(i);
+ if (!allSuperClasses.contains(superClass))
+ {
+ features.addAll(getAllFeatures(superClass, allSuperClasses));
+ }
+ }
+ }
+
+ features.addAll(eClass.getEAttributes());
+ features.addAll(eClass.getEReferences());
+ return features;
+ }
+
+ /**
+ * This method returns the list of features for the given class and all inherited
+ * features; ignoring features from classes in the classesToIgnore set.
+ */
+ protected List<EStructuralFeature> getAllFeatures(EClass eClass, Set<EClass> classesToIgnore)
+ {
+ List<EStructuralFeature> features = new ArrayList<EStructuralFeature>();
+ List<EClass> superClasses = eClass.getESuperTypes();
+
+ for (int i = 0; i < superClasses.size(); i++)
+ {
+ if (!classesToIgnore.contains(superClasses.get(i)))
+ {
+ features.addAll(getAllFeatures(superClasses.get(i), classesToIgnore));
+ }
+ }
+
+ features.addAll(eClass.getEAttributes());
+ features.addAll(eClass.getEReferences());
+
+ // the class has been processed and should be ignored if seen again in the hierarchy
+ classesToIgnore.add(eClass);
+ return features;
+ }
+
+ /**
+ * Map each EAttribute to an XML attribute declaration in the complex type
+ * corresponding to the class, or an XML element declaration, depending on
+ * the multiplicity of the EAttribute.
+ * <p>
+ * The types are mapped as follows:
+ * Ecore type Schema type
+ * ------------ -------------
+ * EBoolean boolean
+ * EBooleanObject boolean
+ * EInt int
+ * EIntegerObject int
+ * ELong long
+ * ELongObject long
+ * EFloat float
+ * EFloatObject float
+ * EDouble double
+ * EDoubleObject double
+ * EString string
+ * <p>
+ * If the attribute has no type or if the type is an EDataType that is not
+ * an EEnum, the schema string type is used.
+ * <p>
+ * If the EAttribute is required, the attribute declaration includes
+ * use="required".
+ * <p>
+ * If the EAttribute has a defaultValueLiteral, the attribute declaration
+ * has a default attribute whose value is the defaultValueLiteral.
+ * <p>
+ * If the EAttribute is transient, or its type is not serializable, an
+ * attribute declaration is not generated.
+ * <p>
+ * If the EAttribute can have many values, an element declaration is created
+ * rather than an attribute declaration. The lower bound of the attribute is set
+ * to the minOccurs value of the element declaration. The upper bound of the
+ * attribute is set to the maxOccurs value of the element declaration (converting
+ * -1 to unbounded as appropriate). The type of the element is set as above for
+ * attribute declarations.
+ */
+ protected void processAttribute(EAttribute attribute, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (processAttribute(attribute))
+ {
+ if (makeAttributeDeclaration(attribute))
+ {
+ createAttributeDeclaration(attribute, xsdComplexTypeDefinition);
+ }
+
+ if (makeAttributeElementDeclaration(attribute))
+ {
+ createAttributeElementDeclaration(attribute, xsdComplexTypeDefinition);
+ }
+ }
+ }
+
+ protected void createAttributeDeclaration(EAttribute attribute, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDAttributeDeclaration attrDecl = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ attrDecl.setName(getName(attribute));
+ setAttributeType(attribute, attrDecl);
+ setDefaultValue(attribute, attrDecl);
+
+ XSDAttributeUse attrUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ setUseToRequired(attribute, attrUse);
+ attrUse.setContent(attrDecl);
+ xsdComplexTypeDefinition.getAttributeContents().add(attrUse);
+
+ map(attrUse, attribute);
+ }
+
+ protected void createAttributeElementDeclaration(EAttribute attribute, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDModelGroup modelGroup = getModelGroup(xsdComplexTypeDefinition);
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setName(getName(attribute));
+
+ // If the attribute can have a null value (primitives and enums can't), and
+ // if the attribute can hold many nulls or
+ // it can hold only a single value that is allowed to be null
+ // and it can be considered set when it has the null value...
+ //
+ if (attribute.getEType().getDefaultValue() == null
+ && (attribute.isMany() || (!attribute.isRequired() && (attribute.getDefaultValueLiteral() != null || attribute.isUnsettable()))))
+ {
+ xsdElementDeclaration.setNillable(true);
+ }
+
+ if (xsdElementDeclaration.isNillable() || attribute.isMany() || !minimizedXMI)
+ {
+ XSDSimpleTypeDefinition attrType = getType(attribute.getEAttributeType());
+
+ if (attrType != null)
+ {
+ xsdElementDeclaration.setTypeDefinition(attrType);
+ }
+
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(xsdElementDeclaration);
+ setAttributeElementMultiplicity(attribute, particle);
+ modelGroup.getContents().add(particle);
+ map(particle, attribute);
+ }
+ }
+
+ protected void setAttributeElementMultiplicity(EAttribute attribute, XSDParticle particle)
+ {
+ if (enforceLowerBound)
+ {
+ particle.setMinOccurs(attribute.getLowerBound());
+ }
+ else
+ {
+ particle.setMinOccurs(0);
+ }
+
+ particle.setMaxOccurs(attribute.getUpperBound());
+ }
+
+ protected boolean processAttribute(EAttribute attribute)
+ {
+ if (attribute.isTransient())
+ {
+ return false;
+ }
+
+ EDataType type = attribute.getEAttributeType();
+
+ if (type != null && !type.isSerializable())
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ protected boolean makeAttributeDeclaration(EAttribute attribute)
+ {
+ return !attribute.isMany();
+ }
+
+ protected boolean makeAttributeElementDeclaration(EAttribute attribute)
+ {
+ return attribute.isMany();
+ }
+
+ /**
+ * Returns the model group for the given complex type definition. If there
+ * is no model group, a model group is created and added to the complex
+ * type definition.
+ */
+ protected XSDModelGroup getModelGroup(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (xsdComplexTypeDefinition.getContent() == null)
+ {
+ return createModelGroup(xsdComplexTypeDefinition);
+ }
+ else
+ {
+ XSDParticle particle = (XSDParticle)xsdComplexTypeDefinition.getContent();
+ return (XSDModelGroup)particle.getContent();
+ }
+ }
+
+ protected XSDModelGroup createModelGroup(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDModelGroup modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(modelGroup);
+ xsdComplexTypeDefinition.setContent(particle);
+ return modelGroup;
+ }
+
+ protected void setAttributeType(EAttribute attribute, XSDAttributeDeclaration attrDecl)
+ {
+ XSDSimpleTypeDefinition attrType = getType(attribute.getEAttributeType());
+
+ if (attrType != null)
+ {
+ attrDecl.setTypeDefinition(attrType);
+ }
+ }
+
+ protected void setUseToRequired(EAttribute attribute, XSDAttributeUse attrUse)
+ {
+ if (attribute.isRequired())
+ {
+ attrUse.setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ }
+ }
+
+ protected void setDefaultValue(EAttribute attribute, XSDAttributeDeclaration attrDecl)
+ {
+ if (attribute.getDefaultValueLiteral() != null)
+ {
+ attrDecl.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ attrDecl.setLexicalValue(attribute.getDefaultValueLiteral());
+ }
+ }
+
+ protected void processReference(EReference reference, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (!skipReference(reference))
+ {
+ if (makeReferenceAttribute(reference))
+ {
+ makeReferenceAttribute(reference, xsdComplexTypeDefinition);
+ }
+
+ if (makeReferenceElement(reference))
+ {
+ makeReferenceElement(reference, xsdComplexTypeDefinition);
+ }
+ }
+ }
+
+ protected boolean makeReferenceAttribute(EReference reference)
+ {
+ return !reference.isContainment();
+ }
+
+ protected boolean makeReferenceElement(EReference reference)
+ {
+ return reference.isContainment() && !reference.isContainer();
+ }
+
+ protected boolean skipReference(EReference reference)
+ {
+ return reference.isTransient();
+ }
+
+ protected void makeReferenceAttribute(EReference reference, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDAttributeDeclaration attrDecl = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ attrDecl.setName(getName(reference));
+ setReferenceAttribType(attrDecl);
+ XSDAttributeUse attrUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ attrUse.setContent(attrDecl);
+ xsdComplexTypeDefinition.getAttributeContents().add(attrUse);
+
+ map(attrUse, reference);
+ }
+
+ protected void setReferenceAttribType(XSDAttributeDeclaration xsdAttributeDeclaration)
+ {
+ addEMFSchema();
+ xsdAttributeDeclaration.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition(REFERENCE_TYPE_NAME));
+ }
+
+ protected void makeReferenceElement(EReference reference, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDModelGroup modelGroup = getModelGroup(xsdComplexTypeDefinition);
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setName(getName(reference));
+
+ if (reference.isUnsettable() && !reference.isMany())
+ {
+ xsdElementDeclaration.setNillable(true);
+ }
+
+ setReferenceElementType(reference, xsdElementDeclaration);
+
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(xsdElementDeclaration);
+
+ setReferenceElementMultiplicity(reference, particle);
+
+ modelGroup.getContents().add(particle);
+ map(particle, reference);
+ }
+
+ protected void setReferenceElementType(EReference reference, XSDElementDeclaration xsdElementDeclaration)
+ {
+ if (reference.getEType() != null)
+ {
+ XSDTypeDefinition type;
+
+ if (reference.getEType().getEPackage() == ePackage)
+ {
+ type = xsdSchema.resolveTypeDefinition(getName(reference.getEType()));
+ }
+ else
+ {
+ type = typeInOtherSchema(reference.getEType());
+ }
+
+ if (type != null)
+ {
+ xsdElementDeclaration.setTypeDefinition(type);
+ }
+ }
+ }
+
+ protected void setReferenceElementMultiplicity(EReference reference, XSDParticle particle)
+ {
+ particle.setMinOccurs(reference.getLowerBound());
+ particle.setMaxOccurs(reference.getUpperBound());
+ }
+
+ protected XSDSimpleTypeDefinition getType(EDataType dataType)
+ {
+ if (dataType instanceof EEnum)
+ {
+ EPackage typePkg = dataType.getEPackage();
+
+ if (typePkg == ePackage)
+ {
+ return xsdSchema.resolveSimpleTypeDefinition(getName(dataType));
+ }
+ else
+ {
+ return (XSDSimpleTypeDefinition)typeInOtherSchema(dataType);
+ }
+ }
+
+ String name = null;
+
+ if (dataType != null)
+ {
+ name = getName(dataType);
+ }
+
+ return xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition(getSchemaName(name));
+ }
+
+ private String getSchemaName(String name)
+ {
+ if (ecoreToSchemaName == null)
+ {
+ ecoreToSchemaName = new HashMap<String, String>();
+ ecoreToSchemaName.put("EBoolean", "boolean");
+ ecoreToSchemaName.put("EBooleanObject", "boolean");
+ ecoreToSchemaName.put("EInt", "int");
+ ecoreToSchemaName.put("EIntegerObject", "int");
+ ecoreToSchemaName.put("ELong", "long");
+ ecoreToSchemaName.put("ELongObject", "long");
+ ecoreToSchemaName.put("EFloat", "float");
+ ecoreToSchemaName.put("EFloatObject", "float");
+ ecoreToSchemaName.put("EDouble", "double");
+ ecoreToSchemaName.put("EDoubleObject", "double");
+ ecoreToSchemaName.put("EString", "string");
+ }
+
+ String schemaName = ecoreToSchemaName.get(name);
+
+ if (schemaName != null)
+ {
+ return schemaName;
+ }
+ else
+ {
+ return "string";
+ }
+ }
+
+ protected void addDocumentation(XSDConcreteComponent xsdComponent, EModelElement eModelElement)
+ {
+ if (EcoreUtil.isAncestor(ePackage, eModelElement))
+ {
+ String documentation = EcoreUtil.getDocumentation(eModelElement);
+ if (documentation != null)
+ {
+ XSDAnnotation xsdAnnotation = null;
+ if (xsdComponent instanceof XSDAttributeUse)
+ {
+ xsdComponent = ((XSDAttributeUse)xsdComponent).getContent();
+ }
+ else if (xsdComponent instanceof XSDParticle)
+ {
+ xsdComponent = ((XSDParticle)xsdComponent).getContent();
+ }
+
+ if (xsdComponent instanceof XSDSchema)
+ {
+ ((XSDSchema)xsdComponent).getContents().add(0, xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ else if (xsdComponent instanceof XSDTypeDefinition)
+ {
+ ((XSDTypeDefinition)xsdComponent).setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ else if (xsdComponent instanceof XSDFacet)
+ {
+ ((XSDFacet)xsdComponent).setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ else if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ ((XSDElementDeclaration)xsdComponent).setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+ else if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)xsdComponent).setAnnotation(xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation());
+ }
+
+ if (xsdAnnotation != null)
+ {
+ Element userInformation = xsdAnnotation.createUserInformation(null);
+
+ // Try to parse the documentation and use the parsed version if it's successful.
+ //
+ if (xsdParser == null)
+ {
+ xsdParser = new XSDParser(null);
+ }
+ xsdParser.parseString("<documentation>" + documentation + "</documentation>");
+ Document document = xsdParser.getDocument();
+ Document xsdDocument = userInformation.getOwnerDocument();
+ if (xsdParser.getDiagnostics().isEmpty() && document.getDocumentElement().getFirstChild() != null)
+ {
+ for (Node node = document.getDocumentElement().getFirstChild(); node != null; node = node.getNextSibling())
+ {
+ userInformation.appendChild(xsdDocument.importNode(node, true));
+ }
+ }
+ else
+ {
+ userInformation.appendChild(xsdDocument.createTextNode(documentation));
+ }
+
+ xsdAnnotation.getElement().appendChild(userInformation);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/MapBuilder.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/MapBuilder.java
new file mode 100644
index 0000000..01d6bc2
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/MapBuilder.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore;
+
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xsd.XSDComponent;
+
+
+public class MapBuilder extends NameMangler
+{
+ public interface Mapper
+ {
+ EObject getRoot();
+
+ void addInput(EObject eObject);
+
+ void addOutput(EObject eObject);
+
+ void map(Collection<? extends EObject> inputs, Collection<? extends EObject> outputs);
+ }
+
+ protected Mapper mapper;
+ protected Map<XSDComponent, EModelElement> xsdComponentToEModelElementMap = new HashMap<XSDComponent, EModelElement>();
+
+ public MapBuilder()
+ {
+ super();
+ }
+
+ public void setMapper(Mapper mapper)
+ {
+ this.mapper = mapper;
+ }
+
+ protected void map(XSDComponent xsdComponent, EModelElement eModelElement)
+ {
+ if (mapper != null)
+ {
+ mapper.map(Collections.singleton(xsdComponent), Collections.singleton(eModelElement));
+ }
+
+ xsdComponentToEModelElementMap.put(xsdComponent, eModelElement);
+ }
+
+ protected void addInput(EObject eObject)
+ {
+ if (mapper != null)
+ {
+ mapper.addInput(eObject);
+ }
+ }
+
+ protected void addOutput(EObject eObject)
+ {
+ if (mapper != null)
+ {
+ mapper.addOutput(eObject);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/NameMangler.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/NameMangler.java
new file mode 100644
index 0000000..f05ca7f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/NameMangler.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+
+
+public class NameMangler
+{
+ public NameMangler()
+ {
+ super();
+ }
+
+ // This behaves like CodeGenUtil.uncapPrefixedName(), which isn't available here,
+ // except without the forceDifferent option.
+ // The two methods should be kept in synch.
+ //
+ public String uncapName(String name)
+ {
+ if (name.length() == 0)
+ {
+ return name;
+ }
+ else
+ {
+ String lowerName = name.toLowerCase();
+ int i;
+ for (i = 0; i < name.length(); i++)
+ {
+ if (name.charAt(i) == lowerName.charAt(i))
+ {
+ break;
+ }
+ }
+ if (i > 1 && i < name.length() && !Character.isDigit(name.charAt(i)))
+ {
+ --i;
+ }
+ return name.substring(0, i).toLowerCase() + name.substring(i);
+ }
+ }
+
+ protected static final List<String> DOMAINS = Arrays.asList(new String [] { "COM", "com", "ORG", "org" });
+
+ public String qualifiedPackageName(String namespace)
+ {
+ URI uri = URI.createURI(namespace);
+ List<String> parsedName;
+ if (uri.isHierarchical())
+ {
+ String host = uri.host();
+ if (host != null && host.startsWith("www."))
+ {
+ host = host.substring(4);
+ }
+ parsedName = parseName(host, '.');
+ Collections.reverse(parsedName);
+ if (!parsedName.isEmpty())
+ {
+ parsedName.set(0, parsedName.get(0).toLowerCase());
+ }
+
+ parsedName.addAll(parseName(uri.trimFileExtension().path(), '/'));
+ }
+ else
+ {
+ String opaquePart = uri.opaquePart();
+ int index = opaquePart.indexOf(":");
+ if (index != -1 && "urn".equalsIgnoreCase(uri.scheme()))
+ {
+ parsedName = parseName(opaquePart.substring(0, index), '-');
+ if (parsedName.size() > 0 && DOMAINS.contains(parsedName.get(parsedName.size() - 1)))
+ {
+ Collections.reverse(parsedName);
+ parsedName.set(0, parsedName.get(0).toLowerCase());
+ }
+ parsedName.addAll(parseName(opaquePart.substring(index + 1), '/'));
+ }
+ else
+ {
+ parsedName = parseName(opaquePart, '/');
+ }
+ }
+
+ StringBuffer qualifiedPackageName = new StringBuffer();
+ for (String packageName : parsedName)
+ {
+ if (packageName.length() > 0)
+ {
+ if (qualifiedPackageName.length() > 0)
+ {
+ qualifiedPackageName.append('.');
+ }
+ qualifiedPackageName.append(validName(packageName, false));
+ }
+ }
+ return qualifiedPackageName.toString();
+ }
+
+ protected String validName(String name, boolean isUpperCase)
+ {
+ return validName(name, isUpperCase, "_");
+ }
+
+ protected String validName(String name, boolean isUpperCase, String prefix)
+ {
+ return validName(name, isUpperCase ? UPPER_CASE : LOWER_CASE, prefix);
+ }
+
+ protected static final int UNCHANGED_CASE = 0;
+ protected static final int UPPER_CASE = 1;
+ protected static final int LOWER_CASE = 2;
+
+ protected String validName(String name, int casing, String prefix)
+ {
+ List<String> parsedName = parseName(name, '_');
+ StringBuffer result = new StringBuffer();
+ for (String nameComponent : parsedName)
+ {
+ if (nameComponent.length() > 0)
+ {
+ if (result.length() > 0 || casing == UPPER_CASE)
+ {
+ result.append(Character.toUpperCase(nameComponent.charAt(0)));
+ result.append(nameComponent.substring(1));
+ }
+ else
+ {
+ result.append(nameComponent);
+ }
+ }
+ }
+
+ return
+ result.length() == 0 ?
+ prefix :
+ Character.isJavaIdentifierStart(result.charAt(0)) ?
+ casing == LOWER_CASE ?
+ uncapName(result.toString()) :
+ result.toString() :
+ prefix + result;
+ }
+
+ // This behaves like CodeGenUtil.parseName(), which isn't available here,
+ // except it also removes invalid indentifier characters.
+ // The two methods should be kept in synch.
+ //
+ protected List<String> parseName(String sourceName, char separator)
+ {
+ List<String> result = new ArrayList<String>();
+ if (sourceName != null)
+ {
+ StringBuffer currentWord = new StringBuffer();
+ boolean lastIsLower = false;
+ for (int index = 0, length = sourceName.length(); index < length; ++index)
+ {
+ char curChar = sourceName.charAt(index);
+ if (!Character.isJavaIdentifierPart(curChar))
+ {
+ curChar = separator;
+ }
+ if (Character.isUpperCase(curChar) || (!lastIsLower && Character.isDigit(curChar)) || curChar == separator)
+ {
+ if (lastIsLower && currentWord.length() > 1 || curChar == separator && currentWord.length() > 0)
+ {
+ result.add(currentWord.toString());
+ currentWord = new StringBuffer();
+ }
+ lastIsLower = false;
+ }
+ else
+ {
+ if (!lastIsLower)
+ {
+ int currentWordLength = currentWord.length();
+ if (currentWordLength > 1)
+ {
+ char lastChar = currentWord.charAt(--currentWordLength);
+ currentWord.setLength(currentWordLength);
+ result.add(currentWord.toString());
+ currentWord = new StringBuffer();
+ currentWord.append(lastChar);
+ }
+ }
+ lastIsLower = true;
+ }
+
+ if (curChar != separator)
+ {
+ currentWord.append(curChar);
+ }
+ }
+
+ result.add(currentWord.toString());
+ }
+ return result;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/XSDEcoreBuilder.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/XSDEcoreBuilder.java
new file mode 100644
index 0000000..9d04909
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/XSDEcoreBuilder.java
@@ -0,0 +1,3751 @@
+/**
+ * Copyright (c) 2002-2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.ecore;
+
+
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.xml.namespace.QName;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.ETypeParameter;
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.EcoreValidator;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+
+import org.eclipse.xsd.*;
+import org.eclipse.xsd.util.DefaultJAXPConfiguration;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.eclipse.xsd.util.XSDResourceImpl;
+import org.eclipse.xsd.util.XSDSwitch;
+
+
+public class XSDEcoreBuilder extends MapBuilder
+{
+ static
+ {
+ // Ensure that the extended meta data for XMLTypePackage and XMLNamespacePackage is cached once on first use.
+ //
+ new XSDEcoreBuilder(ExtendedMetaData.INSTANCE);
+ }
+
+ protected XSDSchema rootSchema;
+ protected List<List<String>> simpleDiagnostics;
+ protected List<XSDDiagnostic> diagnostics;
+ protected List<XSDSchema> xsdSchemas = new UniqueEList<XSDSchema>();
+ protected Map<String, EPackage> targetNamespaceToEPackageMap = new LinkedHashMap<String, EPackage>();
+ protected ExtendedMetaData extendedMetaData;
+ protected Map<EReference, String> eReferenceToOppositeNameMap = new LinkedHashMap<EReference, String>();
+ protected Map<EReference, List<String>> eReferenceToKeyNamesMap = new LinkedHashMap<EReference, List<String>>();
+ protected Map<EClassifier, EClassifier> typeToTypeObjectMap = new HashMap<EClassifier, EClassifier>();
+ protected EcoreValidator.EGenericTypeBuilder eGenericTypeBuilder =
+ new EcoreValidator.EGenericTypeBuilder()
+ {
+ @Override
+ protected boolean isIdentifierStart(int codePoint)
+ {
+ return XMLTypeUtil.isNameStart(codePoint);
+ }
+
+ @Override
+ protected boolean isIdentifierPart(int codePoint)
+ {
+ return XMLTypeUtil.isNamePart(codePoint);
+ }
+ };
+
+ public static final String OPTION_REUSE_REGISTERED_PACKAGES = "REUSE_REGISTERED_PACKAGES";
+ protected boolean reuseRegisteredPackages;
+
+ public XSDEcoreBuilder()
+ {
+ this(new BasicExtendedMetaData(new EPackageRegistryImpl()));
+ }
+
+ public XSDEcoreBuilder(ExtendedMetaData extendedMetaData)
+ {
+ this(extendedMetaData, null);
+ }
+
+ public XSDEcoreBuilder(ExtendedMetaData extendedMetaData, Map<?, ?> options)
+ {
+ this.extendedMetaData = extendedMetaData;
+ populateTypeToTypeObjectMap(XMLTypePackage.eINSTANCE);
+ populateTypeToTypeObjectMap(XMLNamespacePackage.eINSTANCE);
+ handleOptions(options);
+ }
+
+ protected void handleOptions(Map<?, ?> options)
+ {
+ if (options != null)
+ {
+ reuseRegisteredPackages = Boolean.TRUE.equals(options.get(OPTION_REUSE_REGISTERED_PACKAGES));
+ }
+ }
+
+ protected void populateTypeToTypeObjectMap(EPackage ePackage)
+ {
+ for (EClassifier eClassifier : ePackage.getEClassifiers())
+ {
+ String xmlName = extendedMetaData.getName(eClassifier);
+ if (xmlName != null && xmlName.endsWith(":Object"))
+ {
+ typeToTypeObjectMap.put(extendedMetaData.getType(ePackage, xmlName.substring(0, xmlName.length() - 7)), eClassifier);
+ }
+ }
+ }
+
+ public XSDSchema getSchema()
+ {
+ return rootSchema;
+ }
+
+ public void setValidate(boolean validate)
+ {
+ diagnostics = validate ? new ArrayList<XSDDiagnostic>() : null;
+ }
+
+ public List<XSDDiagnostic> getDiagnostics()
+ {
+ return diagnostics;
+ }
+
+ public XSDSchema getRootSchema()
+ {
+ return rootSchema;
+ }
+
+ public Map<String, EPackage> getTargetNamespaceToEPackageMap()
+ {
+ return targetNamespaceToEPackageMap;
+ }
+
+ public Map<XSDComponent, EModelElement> getXSDComponentToEModelElementMap()
+ {
+ return xsdComponentToEModelElementMap;
+ }
+
+ public EPackage getEPackage(XSDNamedComponent xsdNamedComponent)
+ {
+ XSDSchema containingXSDSchema = xsdNamedComponent.getSchema();
+ if (containingXSDSchema != null && !xsdSchemas.contains(containingXSDSchema))
+ {
+ xsdSchemas.add(containingXSDSchema);
+ addInput(containingXSDSchema);
+ validate(containingXSDSchema);
+ }
+
+ String targetNamespace =
+ containingXSDSchema == null ?
+ xsdNamedComponent.getTargetNamespace() :
+ containingXSDSchema.getTargetNamespace();
+ EPackage ePackage = targetNamespaceToEPackageMap.get(targetNamespace);
+ if (ePackage == null)
+ {
+ ePackage = EcoreFactory.eINSTANCE.createEPackage();
+ setAnnotations(ePackage, containingXSDSchema);
+ addOutput(ePackage);
+ if (targetNamespace == null)
+ {
+ if (containingXSDSchema == null)
+ {
+ containingXSDSchema = rootSchema;
+ }
+ String nsURI = getEcoreAttribute(containingXSDSchema, "nsURI");
+ if (nsURI != null)
+ {
+ String qualifiedPackageName = qualifiedPackageName(nsURI);
+ ePackage.setName(qualifiedPackageName);
+ ePackage.setNsURI(nsURI);
+ }
+ else
+ {
+ ePackage.setName(validName(containingXSDSchema.eResource().getURI().trimFileExtension().lastSegment(), true));
+ ePackage.setNsURI(containingXSDSchema.eResource().getURI().toString());
+ }
+
+ // Also register against the nsURI for the case that the target namespace is null.
+ //
+ // extendedMetaData.putPackage(ePackage.getNsURI(), ePackage);
+ }
+ else
+ {
+ String qualifiedPackageName = qualifiedPackageName(targetNamespace);
+ ePackage.setName(qualifiedPackageName);
+ ePackage.setNsURI(targetNamespace);
+ }
+
+ String nsPrefix = ePackage.getName();
+ int index = nsPrefix.lastIndexOf('.');
+ nsPrefix = index == -1 ? nsPrefix : nsPrefix.substring(index + 1);
+
+ // http://www.w3.org/TR/REC-xml-names/#xmlReserved
+ // Namespace Constraint: Leading "XML"
+ // Prefixes beginning with the three-letter sequence x, m, l, in any case combination,
+ // are reserved for use by XML and XML-related specifications.
+ //
+ if (nsPrefix.toLowerCase().startsWith("xml"))
+ {
+ nsPrefix = "_" + nsPrefix;
+ }
+ ePackage.setNsPrefix(nsPrefix);
+
+ extendedMetaData.setQualified(ePackage, targetNamespace != null);
+ extendedMetaData.putPackage(targetNamespace, ePackage);
+
+ targetNamespaceToEPackageMap.put(targetNamespace, ePackage);
+ }
+
+ return ePackage;
+ }
+
+
+ public EClassifier getEClassifier(XSDTypeDefinition xsdTypeDefinition)
+ {
+ EClassifier eClassifier = (EClassifier)xsdComponentToEModelElementMap.get(xsdTypeDefinition);
+ if (eClassifier == null)
+ {
+ eClassifier = computeEClassifier(xsdTypeDefinition);
+ map(xsdTypeDefinition, eClassifier);
+ }
+ return eClassifier;
+ }
+
+ public EDataType getEDataType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ EDataType eDataType = (EDataType)xsdComponentToEModelElementMap.get(xsdSimpleTypeDefinition);
+ if (eDataType == null)
+ {
+ eDataType = computeEDataType(xsdSimpleTypeDefinition);
+ map(xsdSimpleTypeDefinition, eDataType);
+ }
+ return eDataType;
+ }
+
+ public EClass getEClass(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ EClass eClass = (EClass)xsdComponentToEModelElementMap.get(xsdComplexTypeDefinition);
+ if (eClass == null)
+ {
+ eClass = computeEClass(xsdComplexTypeDefinition);
+ map(xsdComplexTypeDefinition, eClass);
+ }
+ return eClass;
+ }
+
+ protected EClassifier getBuiltInEClassifier(String namespace, String name)
+ {
+ return
+ "anyType".equals(name) ?
+ EcorePackage.Literals.EOBJECT :
+ extendedMetaData.getType(XMLTypePackage.eINSTANCE, name);
+ }
+
+ protected EClassifier computeEClassifier(XSDTypeDefinition xsdTypeDefinition)
+ {
+ if (xsdTypeDefinition == null)
+ {
+ return getBuiltInEClassifier(rootSchema.getSchemaForSchemaNamespace(), "anySimpleType");
+ }
+ else if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ return computeEDataType((XSDSimpleTypeDefinition)xsdTypeDefinition);
+ }
+ else
+ {
+ return computeEClass((XSDComplexTypeDefinition)xsdTypeDefinition);
+ }
+ }
+
+ protected EDataType computeEDataType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ if (xsdSimpleTypeDefinition == null)
+ {
+ return (EDataType)getBuiltInEClassifier(rootSchema.getSchemaForSchemaNamespace(), "anySimpleType");
+ }
+ else if (XSDConstants.isSchemaForSchemaNamespace(xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ String name = xsdSimpleTypeDefinition.getName();
+ if (name != null)
+ {
+ EDataType result = (EDataType)getBuiltInEClassifier(xsdSimpleTypeDefinition.getTargetNamespace(), "anyType".equals(name) ? "anySimpleType" : name);
+ if (result != null)
+ {
+ return result;
+ }
+ }
+ }
+ else if (xsdSimpleTypeDefinition.getContainer() == null)
+ {
+ return (EDataType)getBuiltInEClassifier(rootSchema.getSchemaForSchemaNamespace(), "anySimpleType");
+ }
+ else if (reuseRegisteredPackages)
+ {
+ String name= xsdSimpleTypeDefinition.getName();
+ EDataType eDataType = (EDataType)extendedMetaData.getType(xsdSimpleTypeDefinition.getTargetNamespace(), name);
+ if (eDataType != null)
+ {
+ if (name != null)
+ {
+ EClassifier objectType = extendedMetaData.getType(eDataType.getEPackage(), name + ":Object");
+ if (objectType != null)
+ {
+ typeToTypeObjectMap.put(eDataType, objectType);
+ }
+ }
+ return eDataType;
+ }
+ }
+
+ String explicitInstanceClassName = getEcoreAttribute(xsdSimpleTypeDefinition, "instanceClass");
+ if (explicitInstanceClassName != null)
+ {
+ EDataType eDataType = EcoreFactory.eINSTANCE.createEDataType();
+ setAnnotations(eDataType, xsdSimpleTypeDefinition);
+ // Do this early to prevent recursive loop.
+ xsdComponentToEModelElementMap.put(xsdSimpleTypeDefinition, eDataType);
+
+ String aliasName = getEcoreAttribute(xsdSimpleTypeDefinition, "name");
+ if (aliasName == null)
+ {
+ aliasName = validAliasName(xsdSimpleTypeDefinition, true);
+ }
+ eDataType.setName(aliasName);
+ extendedMetaData.setName(eDataType, xsdSimpleTypeDefinition.getAliasName());
+
+ eDataType.setInstanceTypeName(explicitInstanceClassName.replace('{', '<').replace('}', '>'));
+
+ EPackage ePackage = getEPackage(xsdSimpleTypeDefinition);
+ addToSortedList(ePackage.getEClassifiers(), eDataType);
+
+ checkForPrimitive(xsdSimpleTypeDefinition, eDataType);
+
+ handleFacets(xsdSimpleTypeDefinition, eDataType);
+ handleTypeArguments(xsdSimpleTypeDefinition, eDataType);
+
+ String constraints = getEcoreAttribute(xsdSimpleTypeDefinition, "constraints");
+ if (constraints != null)
+ {
+ EcoreUtil.setAnnotation(eDataType, EcorePackage.eNS_URI, "constraints", constraints);
+ }
+
+ if ("false".equals(getEcoreAttribute(xsdSimpleTypeDefinition, "serializable")))
+ {
+ eDataType.setSerializable(false);
+ }
+ return eDataType;
+ }
+ else
+ {
+ EEnum eEnum = computeEEnum(xsdSimpleTypeDefinition);
+ if (eEnum != null)
+ {
+ return eEnum;
+ }
+ else
+ {
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null)
+ {
+ EDataType eDataType = EcoreFactory.eINSTANCE.createEDataType();
+ setAnnotations(eDataType, xsdSimpleTypeDefinition);
+ // Do this early to prevent recursive loop.
+ xsdComponentToEModelElementMap.put(xsdSimpleTypeDefinition, eDataType);
+
+ String name = getEcoreAttribute(xsdSimpleTypeDefinition, "name");
+ if (name == null)
+ {
+ name = validAliasName(xsdSimpleTypeDefinition, true);
+ }
+
+ eDataType.setName(name);
+ extendedMetaData.setName(eDataType, xsdSimpleTypeDefinition.getAliasName());
+
+ EPackage ePackage = getEPackage(xsdSimpleTypeDefinition);
+ addToSortedList(ePackage.getEClassifiers(), eDataType);
+
+ if (baseTypeDefinition.getVariety() != xsdSimpleTypeDefinition.getVariety())
+ {
+ if (xsdSimpleTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL)
+ {
+ EDataType itemEDataType = getExplicitType(xsdSimpleTypeDefinition, eDataType);
+ if (itemEDataType == null)
+ {
+ itemEDataType = getEDataType(xsdSimpleTypeDefinition.getItemTypeDefinition());
+ }
+ extendedMetaData.setItemType(eDataType, itemEDataType);
+ eDataType.setInstanceTypeName("java.util.List");
+ }
+ else
+ {
+ String instanceClassName = null;
+ List<EDataType> memberTypes = new ArrayList<EDataType>();
+ for (XSDSimpleTypeDefinition memberTypeDefinition : xsdSimpleTypeDefinition.getMemberTypeDefinitions())
+ {
+ EDataType memberEDataType = getEDataType(memberTypeDefinition);
+ memberTypes.add(memberEDataType);
+ String memberInstanceClassName = memberEDataType.getInstanceTypeName();
+ if (memberInstanceClassName == null && memberEDataType instanceof EEnum)
+ {
+ memberInstanceClassName = "org.eclipse.emf.common.util.Enumerator";
+ }
+ if (instanceClassName == null)
+ {
+ instanceClassName = memberInstanceClassName;
+ }
+ else if (instanceClassName != memberInstanceClassName)
+ {
+ instanceClassName = "java.lang.Object";
+ }
+ }
+ extendedMetaData.setMemberTypes(eDataType, memberTypes);
+ eDataType.setInstanceTypeName(instanceClassName);
+ }
+ }
+ else
+ {
+ EDataType baseEDataType = getExplicitType(xsdSimpleTypeDefinition, eDataType);
+ if (baseEDataType == null)
+ {
+ baseEDataType = getEDataType(baseTypeDefinition);
+ }
+
+ String instanceClassName = getInstanceClassName(xsdSimpleTypeDefinition, baseEDataType);
+
+ // Don't set up circular inheritance.
+ //
+ if (xsdSimpleTypeDefinition.getName() != null &&
+ XSDConstants.isOrIsDerivedFrom(baseTypeDefinition, xsdSimpleTypeDefinition.getName(), xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ eDataType.setInstanceTypeName
+ (instanceClassName == null ?
+ "java.lang.String" :
+ instanceClassName);
+ }
+ else
+ {
+ extendedMetaData.setBaseType(eDataType, baseEDataType);
+ eDataType.setInstanceTypeName
+ (instanceClassName == null ?
+ "org.eclipse.emf.common.util.Enumerator" :
+ instanceClassName);
+ }
+ }
+
+ checkForPrimitive(xsdSimpleTypeDefinition, eDataType);
+ handleFacets(xsdSimpleTypeDefinition, eDataType);
+ handleTypeArguments(xsdSimpleTypeDefinition, eDataType);
+
+ String constraints = getEcoreAttribute(xsdSimpleTypeDefinition, "constraints");
+ if (constraints != null)
+ {
+ EcoreUtil.setAnnotation(eDataType, EcorePackage.eNS_URI, "constraints", constraints);
+ }
+
+ if ("false".equals(getEcoreAttribute(xsdSimpleTypeDefinition, "serializable")))
+ {
+ eDataType.setSerializable(false);
+ }
+
+ return eDataType;
+ }
+ }
+ return (EDataType)getBuiltInEClassifier(rootSchema.getSchemaForSchemaNamespace(), "anySimpleType");
+ }
+ }
+
+ protected String getInstanceClassName(XSDTypeDefinition xsdTypeDefinition, EDataType baseEDataType)
+ {
+ return baseEDataType.getInstanceTypeName();
+ }
+
+ protected String validAliasName(XSDTypeDefinition xsdTypeDefinition, boolean isUpperCase)
+ {
+ return validName(xsdTypeDefinition.getAliasName(), isUpperCase);
+ }
+
+ protected static final List<String> PRIMITIVES =
+ Arrays.asList
+ (new String []
+ {
+ "boolean",
+ "byte",
+ "char",
+ "double",
+ "float",
+ "int",
+ "long",
+ "short"
+ });
+
+ protected static final String [] PRIMITIVE_WRAPPERS =
+ new String []
+ {
+ "java.lang.Boolean",
+ "java.lang.Byte",
+ "java.lang.Character",
+ "java.lang.Double",
+ "java.lang.Float",
+ "java.lang.Integer",
+ "java.lang.Long",
+ "java.lang.Short"
+ };
+
+ protected static final Map<String, String> ECORE_PRIMITIVE_TYPES = new HashMap<String, String>();
+ static
+ {
+ ECORE_PRIMITIVE_TYPES.put("EBoolean", "EBooleanObject");
+ ECORE_PRIMITIVE_TYPES.put("EByte", "EByteObject");
+ ECORE_PRIMITIVE_TYPES.put("EChar", "ECharacterObject");
+ ECORE_PRIMITIVE_TYPES.put("EDouble", "EDoubleObject");
+ ECORE_PRIMITIVE_TYPES.put("EFloat", "EFloatObject");
+ ECORE_PRIMITIVE_TYPES.put("EInt", "EIntegerObject");
+ ECORE_PRIMITIVE_TYPES.put("ELong", "ELongObject");
+ ECORE_PRIMITIVE_TYPES.put("EShort", "EShortObject");
+ }
+
+ protected static boolean canSupportNull(EDataType eDataType)
+ {
+ return !(eDataType instanceof EEnum) && PRIMITIVES.indexOf(eDataType.getInstanceTypeName()) == -1;
+ }
+
+ protected void checkForPrimitive(XSDSimpleTypeDefinition xsdSimpleTypeDefinition, EDataType eDataType)
+ {
+ if (EcorePackage.eNS_URI.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ String wrapperType = ECORE_PRIMITIVE_TYPES.get(eDataType.getName());
+ if (wrapperType != null)
+ {
+ XSDSimpleTypeDefinition wrapperTypeDefinition = xsdSimpleTypeDefinition.resolveSimpleTypeDefinition(wrapperType);
+ if (wrapperTypeDefinition.getContainer() != null)
+ {
+ EDataType eDataTypeObject = (EDataType)getEClassifier(wrapperTypeDefinition);
+ extendedMetaData.setName(eDataTypeObject, eDataType.getName() + ":Object");
+ extendedMetaData.setBaseType(eDataTypeObject, eDataType);
+ typeToTypeObjectMap.put(eDataType, eDataTypeObject);
+ return;
+ }
+ }
+ }
+
+ checkForPrimitive(eDataType);
+ }
+
+ protected void checkForPrimitive(EDataType eDataType)
+ {
+ int index = PRIMITIVES.indexOf(eDataType.getInstanceTypeName());
+ if (index != -1 || eDataType instanceof EEnum)
+ {
+ EDataType eDataTypeObject = EcoreFactory.eINSTANCE.createEDataType();
+ eDataTypeObject.setName(eDataType.getName() + "Object");
+ if (index != -1)
+ {
+ eDataTypeObject.setInstanceTypeName(PRIMITIVE_WRAPPERS[index]);
+ }
+ else
+ {
+ eDataTypeObject.setInstanceTypeName("org.eclipse.emf.common.util.Enumerator");
+ }
+ extendedMetaData.setName(eDataTypeObject, extendedMetaData.getName(eDataType) + ":Object");
+ addToSortedList(eDataType.getEPackage().getEClassifiers(), eDataTypeObject);
+ extendedMetaData.setBaseType(eDataTypeObject, eDataType);
+
+ typeToTypeObjectMap.put(eDataType, eDataTypeObject);
+ }
+ }
+
+ protected void handleFacets(final XSDSimpleTypeDefinition xsdSimpleTypeDefinition, final EDataType eDataType)
+ {
+ final List<String> enumeration = new ArrayList<String>();
+ final List<String> pattern = new ArrayList<String>();
+ for (final XSDFacet xsdFacet : xsdSimpleTypeDefinition.getFacetContents())
+ {
+ String ignore = getEcoreAttribute(xsdFacet, "ignore");
+ if (!"true".equalsIgnoreCase(ignore))
+ {
+ new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDEnumerationFacet(XSDEnumerationFacet xsdEnumerationFacet)
+ {
+ List<?> values = xsdEnumerationFacet.getValue();
+ if (!values.isEmpty())
+ {
+ String lexicalValue= xsdSimpleTypeDefinition.getNormalizedLiteral(xsdEnumerationFacet.getLexicalValue());
+ Object value = values.get(0);
+ if (value instanceof List<?>)
+ {
+ List<?> valueItems = (List<?>)value;
+ String[] lexicalItems = lexicalValue.split("[ \t\n\r]");
+ StringBuilder composedValue = new StringBuilder();
+ for (int i = 0, size = Math.min(valueItems.size(), lexicalItems.length); i < size; ++i)
+ {
+ Object item = valueItems.get(i);
+ String lexicalItem = lexicalItems[i];
+ if (item instanceof QName)
+ {
+ lexicalItem = item.toString();
+ }
+ if (i > 0)
+ {
+ composedValue.append(' ');
+ }
+ composedValue.append(lexicalItem);
+ }
+ enumeration.add(composedValue.toString());
+ }
+ else
+ {
+ if (value instanceof QName)
+ {
+ lexicalValue = value.toString();
+ }
+ enumeration.add(lexicalValue);
+ }
+ }
+ return this;
+ }
+
+ @Override
+ public Object caseXSDFractionDigitsFacet(XSDFractionDigitsFacet xsdFractionDigitsFacet)
+ {
+ extendedMetaData.setFractionDigitsFacet(eDataType, xsdFractionDigitsFacet.getValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDLengthFacet(XSDLengthFacet xsdLengthFacet)
+ {
+ extendedMetaData.setLengthFacet(eDataType, xsdLengthFacet.getValue());
+ return this;
+ }
+ @Override
+ public Object caseXSDMaxExclusiveFacet(XSDMaxExclusiveFacet xsdMaxExclusiveFacet)
+ {
+ extendedMetaData.setMaxExclusiveFacet(eDataType, xsdMaxExclusiveFacet.getLexicalValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDMaxInclusiveFacet(XSDMaxInclusiveFacet xsdMaxInclusiveFacet)
+ {
+ extendedMetaData.setMaxInclusiveFacet(eDataType, xsdMaxInclusiveFacet.getLexicalValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDMaxLengthFacet(XSDMaxLengthFacet xsdMaxLengthFacet)
+ {
+ extendedMetaData.setMaxLengthFacet(eDataType, xsdMaxLengthFacet.getValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDMinExclusiveFacet(XSDMinExclusiveFacet xsdMinExclusiveFacet)
+ {
+ extendedMetaData.setMinExclusiveFacet(eDataType, xsdMinExclusiveFacet.getLexicalValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDMinInclusiveFacet(XSDMinInclusiveFacet xsdMinInclusiveFacet)
+ {
+ extendedMetaData.setMinInclusiveFacet(eDataType, xsdMinInclusiveFacet.getLexicalValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDMinLengthFacet(XSDMinLengthFacet xsdMinLengthFacet)
+ {
+ extendedMetaData.setMinLengthFacet(eDataType, xsdMinLengthFacet.getValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDPatternFacet(XSDPatternFacet xsdPatternFacet)
+ {
+ pattern.add(xsdPatternFacet.getLexicalValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDTotalDigitsFacet(XSDTotalDigitsFacet xsdTotalDigitsFacet)
+ {
+ extendedMetaData.setTotalDigitsFacet(eDataType, xsdTotalDigitsFacet.getValue());
+ return this;
+ }
+
+ @Override
+ public Object caseXSDWhiteSpaceFacet(XSDWhiteSpaceFacet xsdWhiteSpaceFacet)
+ {
+ extendedMetaData.setWhiteSpaceFacet(eDataType, xsdWhiteSpaceFacet.getValue().getValue() + 1);
+ return this;
+ }
+ }.doSwitch(xsdFacet);
+ }
+ }
+ extendedMetaData.setEnumerationFacet(eDataType, enumeration);
+ extendedMetaData.setPatternFacet(eDataType, pattern);
+ }
+
+ void handleTypeArguments(XSDTypeDefinition xsdTypeDefinition, EClassifier eClassifier)
+ {
+ XSDAnnotation xsdAnnotation = xsdTypeDefinition.getAnnotation();
+ if (xsdAnnotation != null)
+ {
+ List<Element> applicationInformationList = xsdAnnotation.getApplicationInformation(EcorePackage.eNS_URI);
+ for (Element applicationInformation : applicationInformationList)
+ {
+ if ("typeParameters".equals(applicationInformation.getAttributeNS(EcorePackage.eNS_URI, "key")))
+ {
+ for (Element typeParameter : getElements(applicationInformation, "typeParameter"))
+ {
+ ETypeParameter eTypeParameter = EcoreFactory.eINSTANCE.createETypeParameter();
+ String typeParameterName = typeParameter.getAttributeNS(null, "name");
+ eTypeParameter.setName(typeParameterName);
+ eClassifier.getETypeParameters().add(eTypeParameter);
+ eTypeParameter.getEBounds().addAll(getGenericTypes(xsdTypeDefinition, typeParameter, eClassifier, typeParameter.getAttributeNS(null, "bounds")));
+ }
+ }
+ }
+ }
+ }
+
+ protected EEnum computeEEnum(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ // If a simple type has enumeration facets, map it to an EEnum.
+ //
+ if (!xsdSimpleTypeDefinition.getEnumerationFacets().isEmpty() && !"false".equals(getEcoreAttribute(xsdSimpleTypeDefinition, "enum")))
+ {
+ for (Object enumerator : xsdSimpleTypeDefinition.getEffectiveEnumerationFacet().getValue())
+ {
+ if (enumerator instanceof QName)
+ {
+ return null;
+ }
+ else if (enumerator instanceof List<?>)
+ {
+ for (Object item : (List<?>)enumerator)
+ {
+ if (item instanceof QName)
+ {
+ return null;
+ }
+ }
+ }
+ }
+
+ EEnum eEnum = EcoreFactory.eINSTANCE.createEEnum();
+ setAnnotations(eEnum, xsdSimpleTypeDefinition);
+
+ String name = getEcoreAttribute(xsdSimpleTypeDefinition, "name");
+ if (name == null)
+ {
+ name = validAliasName(xsdSimpleTypeDefinition, true);
+ }
+ eEnum.setName(name);
+ extendedMetaData.setName(eEnum, xsdSimpleTypeDefinition.getAliasName());
+
+ EPackage ePackage = getEPackage(xsdSimpleTypeDefinition);
+ addToSortedList(ePackage.getEClassifiers(), eEnum);
+
+ String constraints = getEcoreAttribute(xsdSimpleTypeDefinition, "constraints");
+ if (constraints != null)
+ {
+ EcoreUtil.setAnnotation(eEnum, EcorePackage.eNS_URI, "constraints", constraints);
+ }
+
+ for (ListIterator<XSDEnumerationFacet> i = xsdSimpleTypeDefinition.getEnumerationFacets().listIterator(); i.hasNext(); )
+ {
+ XSDEnumerationFacet xsdEnumerationFacet = i.next();
+ if (!"true".equalsIgnoreCase(getEcoreAttribute(xsdEnumerationFacet, "ignore")))
+ {
+ String literal = xsdSimpleTypeDefinition.getNormalizedLiteral(xsdEnumerationFacet.getLexicalValue());
+ if (literal != null && eEnum.getEEnumLiteralByLiteral(literal) == null)
+ {
+ EEnumLiteral eEnumLiteral = EcoreFactory.eINSTANCE.createEEnumLiteral();
+ setAnnotations(eEnumLiteral, xsdEnumerationFacet);
+ String literalName = getEcoreAttribute(xsdEnumerationFacet, "name");
+ if (literalName == null)
+ {
+ literalName = validName(literal, UNCHANGED_CASE, "_");
+ }
+ eEnumLiteral.setName(literalName);
+ int value = i.previousIndex();
+ String valueLiteral = getEcoreAttribute(xsdEnumerationFacet, "value");
+ if (valueLiteral != null)
+ {
+ value = Integer.parseInt(valueLiteral);
+ }
+ eEnumLiteral.setValue(value);
+ if (!literalName.equals(literal))
+ {
+ eEnumLiteral.setLiteral(literal);
+ }
+ eEnum.getELiterals().add(eEnumLiteral);
+ map(xsdEnumerationFacet, eEnumLiteral);
+ }
+ }
+ }
+
+ checkForPrimitive(eEnum);
+
+ return eEnum;
+ }
+
+ return null;
+ }
+
+ public EClass computeEClass(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (xsdComplexTypeDefinition == null)
+ {
+ return (EClass)getBuiltInEClassifier(rootSchema.getSchemaForSchemaNamespace(), "anyType");
+ }
+ else if (XSDConstants.isSchemaForSchemaNamespace(xsdComplexTypeDefinition.getTargetNamespace()))
+ {
+ String name = xsdComplexTypeDefinition.getName();
+ if (name != null)
+ {
+ EClass result = (EClass)getBuiltInEClassifier(xsdComplexTypeDefinition.getTargetNamespace(), name);
+ if (result != null)
+ {
+ return result;
+ }
+ }
+ }
+ else if (xsdComplexTypeDefinition.getContainer() == null)
+ {
+ return (EClass)getBuiltInEClassifier(rootSchema.getSchemaForSchemaNamespace(), "anyType");
+ }
+ else if (reuseRegisteredPackages)
+ {
+ EClass eClass = (EClass)extendedMetaData.getType(xsdComplexTypeDefinition.getTargetNamespace(), xsdComplexTypeDefinition.getName());
+ if (eClass != null)
+ {
+ return eClass;
+ }
+ }
+
+ EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+ setAnnotations(eClass, xsdComplexTypeDefinition);
+ // Do this early to prevent recursive loop.
+ xsdComponentToEModelElementMap.put(xsdComplexTypeDefinition, eClass);
+
+ if ("true".equals(getEcoreAttribute(xsdComplexTypeDefinition, "interface")))
+ {
+ eClass.setInterface(true);
+ }
+
+ String instanceClassName = getEcoreAttribute(xsdComplexTypeDefinition, "instanceClass");
+ if (instanceClassName != null)
+ {
+ eClass.setInstanceTypeName(instanceClassName.replace('{', '<').replace('}', '>'));
+ }
+
+ String aliasName = getEcoreAttribute(xsdComplexTypeDefinition, "name");
+ if (aliasName == null)
+ {
+ aliasName = validAliasName(xsdComplexTypeDefinition, true);
+ }
+ eClass.setName(aliasName);
+ extendedMetaData.setName(eClass, xsdComplexTypeDefinition.getAliasName());
+
+ String constraints = getEcoreAttribute(xsdComplexTypeDefinition, "constraints");
+ if (constraints != null)
+ {
+ EcoreUtil.setAnnotation(eClass, EcorePackage.eNS_URI, "constraints", constraints);
+ }
+
+ EPackage ePackage = getEPackage(xsdComplexTypeDefinition);
+ addToSortedList(ePackage.getEClassifiers(), eClass);
+
+ if (xsdComplexTypeDefinition.isAbstract())
+ {
+ eClass.setAbstract(true);
+ }
+
+ handleTypeArguments(xsdComplexTypeDefinition, eClass);
+
+ EClass baseClass = null;
+ XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
+ if (!baseTypeDefinition.isCircular())
+ {
+ EClassifier baseType = getEClassifier(baseTypeDefinition);
+ if (baseType instanceof EClass && baseType != EcorePackage.Literals.EOBJECT)
+ {
+ EGenericType genericSuperType =
+ getGenericType(xsdComplexTypeDefinition, xsdComplexTypeDefinition.getElement(), eClass, getEcoreAttribute(xsdComplexTypeDefinition, "extends"));
+ if (genericSuperType != null && genericSuperType.getEClassifier() instanceof EClass)
+ {
+ eClass.getEGenericSuperTypes().add(genericSuperType);
+ baseClass = (EClass)genericSuperType.getEClassifier();
+ }
+ else
+ {
+ eClass.getESuperTypes().add(baseClass = (EClass)baseType);
+ }
+ }
+ }
+ else if (XSDConstants.isURType(baseTypeDefinition) && xsdComplexTypeDefinition.getDerivationMethod() == XSDDerivationMethod.EXTENSION_LITERAL)
+ {
+ eClass.getESuperTypes().add(baseClass = XMLTypePackage.Literals.ANY_TYPE);
+ }
+
+ boolean isRestriction =
+ !eClass.getESuperTypes().isEmpty() &&
+ xsdComplexTypeDefinition.getDerivationMethod() == XSDDerivationMethod.RESTRICTION_LITERAL;
+
+ for (EGenericType eGenericType : getGenericTypes(xsdComplexTypeDefinition, xsdComplexTypeDefinition.getElement(), eClass, getEcoreAttribute(xsdComplexTypeDefinition, "implements")))
+ {
+ EClassifier eClassifier = eGenericType.getEClassifier();
+ if (eClassifier != null && eClassifier instanceof EClass && eClassifier != EcorePackage.Literals.EOBJECT)
+ {
+ eClass.getEGenericSuperTypes().add(eGenericType);
+ }
+ }
+
+ // 51210
+ // EAnnotation contentParticle = null;
+
+ if (xsdComplexTypeDefinition.getContentTypeCategory() == XSDContentTypeCategory.SIMPLE_LITERAL)
+ {
+ extendedMetaData.setContentKind(eClass, ExtendedMetaData.SIMPLE_CONTENT);
+ if (!"SimpleAnyType".equals(eClass.getName()) || !XMLTypePackage.eNS_URI.equals(eClass.getEPackage().getNsURI()))
+ {
+ if (eClass.getEAllStructuralFeatures().isEmpty())
+ {
+ XSDComplexTypeContent xsdComplexTypeContent = xsdComplexTypeDefinition.getContent();
+ String name = getEcoreAttribute(xsdComplexTypeContent, "name");
+ if (name == null)
+ {
+ name = "value";
+ }
+ createFeature
+ (eClass,
+ null,
+ name,
+ xsdComplexTypeContent,
+ false);
+ }
+ else if (!isRestriction)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdComplexTypeDefinition.getSimpleType();
+ getEClassifier(xsdSimpleTypeDefinition);
+ }
+ }
+ }
+ else
+ {
+ EStructuralFeature globalGroup = null;
+ boolean isMixed = xsdComplexTypeDefinition.getContentTypeCategory() == XSDContentTypeCategory.MIXED_LITERAL;
+ String featureMapName = getEcoreAttribute(xsdComplexTypeDefinition, "featureMap");
+ if (eClass.getESuperTypes().isEmpty() ?
+ "true".equals(getEcoreAttribute(xsdComplexTypeDefinition, "mixed")) :
+ extendedMetaData.getMixedFeature(eClass.getESuperTypes().get(0)) != null)
+ {
+ isMixed = true;
+ }
+ extendedMetaData.setContentKind
+ (eClass,
+ isMixed ?
+ ExtendedMetaData.MIXED_CONTENT :
+ xsdComplexTypeDefinition.getContentTypeCategory() == XSDContentTypeCategory.EMPTY_LITERAL ?
+ ExtendedMetaData.EMPTY_CONTENT :
+ ExtendedMetaData.ELEMENT_ONLY_CONTENT);
+ if (isMixed)
+ {
+ EStructuralFeature mixedFeature = extendedMetaData.getMixedFeature(eClass);
+ if (mixedFeature == null)
+ {
+ if (featureMapName == null)
+ {
+ featureMapName = "mixed";
+ }
+ mixedFeature =
+ createFeature
+ (eClass,
+ featureMapName,
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ null,
+ 0,
+ -1);
+ extendedMetaData.setName(mixedFeature, ":mixed");
+ }
+ }
+ else
+ {
+ globalGroup = extendedMetaData.getElement(eClass, null, ":group");
+ if (globalGroup == null && featureMapName != null && eClass.getESuperTypes().isEmpty())
+ {
+ globalGroup =
+ createFeature
+ (eClass,
+ featureMapName,
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ null,
+ 0,
+ -1);
+ extendedMetaData.setName(globalGroup, ":group");
+ extendedMetaData.setFeatureKind(globalGroup, ExtendedMetaData.GROUP_FEATURE);
+ }
+ }
+
+ if (xsdComplexTypeDefinition.getContent() != null)
+ {
+ // 51210
+ // Map particleMap = new HashMap();
+ Map<XSDModelGroup, EStructuralFeature> groups = new HashMap<XSDModelGroup, EStructuralFeature>();
+ List<EffectiveOccurrence> particleInformation = collectParticles((XSDParticle)xsdComplexTypeDefinition.getContent());
+ for (EffectiveOccurrence effectiveOccurrence : particleInformation)
+ {
+ XSDParticle xsdParticle = effectiveOccurrence.xsdParticle;
+ EStructuralFeature group = groups.get(effectiveOccurrence.xsdModelGroup);
+ XSDTerm xsdTerm = xsdParticle.getTerm();
+ EStructuralFeature eStructuralFeature = null;
+ String name = getEcoreAttribute(xsdParticle, "name");
+ if (xsdTerm instanceof XSDModelGroup)
+ {
+ if (!isRestriction)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdTerm;
+ if (name == null)
+ {
+ name = getEcoreAttribute(xsdParticle, "featureMap");
+ if (name == null)
+ {
+ name = getEcoreAttribute(xsdModelGroup, "name");
+ if (name == null)
+ {
+ name = getEcoreAttribute(xsdModelGroup, "featureMap");
+ if (name == null)
+ {
+ if (xsdModelGroup.getContainer() instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)xsdModelGroup.getContainer();
+ name = getEcoreAttribute(xsdModelGroupDefinition, "name");
+ if (name == null)
+ {
+ name = validName(xsdModelGroupDefinition.getName(), true);
+ }
+ }
+ else
+ {
+ name = "group";
+ }
+ }
+ }
+ }
+ }
+
+ eStructuralFeature =
+ createFeature
+ (eClass,
+ name,
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ xsdParticle,
+ 0,
+ -1);
+ groups.put(xsdModelGroup, eStructuralFeature);
+ extendedMetaData.setName(eStructuralFeature, name + ":" + eClass.getEAllStructuralFeatures().indexOf(eStructuralFeature));
+ }
+ }
+ else if (xsdTerm instanceof XSDWildcard)
+ {
+ if (!isRestriction)
+ {
+ if (name == null)
+ {
+ name = getEcoreAttribute(xsdTerm, "name");
+ if (name == null)
+ {
+ name = "any";
+ }
+ }
+ eStructuralFeature =
+ createFeature
+ (eClass,
+ name,
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ xsdParticle,
+ effectiveOccurrence.minOccurs,
+ effectiveOccurrence.maxOccurs);
+ // 51210
+ // particleMap.put(xsdParticle, eStructuralFeature);
+ }
+ }
+ else
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+
+ boolean isRedundant = false;
+ if (isRestriction)
+ {
+ EStructuralFeature element = extendedMetaData.getElement(baseClass, xsdElementDeclaration.getTargetNamespace(), xsdElementDeclaration.getName());
+ isRedundant = element != null && !extendedMetaData.isDocumentRoot(element.getEContainingClass());
+
+ if (!isRedundant)
+ {
+ group =
+ extendedMetaData.getElementWildcardAffiliation
+ (baseClass, xsdElementDeclaration.getTargetNamespace(), xsdElementDeclaration.getName());
+ }
+ }
+
+ if (!isRedundant)
+ {
+ if (name == null)
+ {
+ name = getEcoreAttribute(xsdElementDeclaration, "name");
+ if (name == null)
+ {
+ name = validName(xsdElementDeclaration.getName(), true);
+ }
+ }
+
+ String groupName = getEcoreAttribute(xsdParticle, "featureMap");
+ if (groupName == null)
+ {
+ groupName = getEcoreAttribute(xsdElementDeclaration, "featureMap");
+ }
+
+ if (!"".equals(groupName) &&
+ (groupName != null ||
+ (xsdElementDeclaration.isAbstract() ||
+ xsdElementDeclaration.getSubstitutionGroup().size() > 1) &&
+ !"true".equals(getEcoreAttribute(xsdParticle.getSchema().getElement(), "ignoreSubstitutionGroups"))))
+ {
+ if (groupName == null)
+ {
+ groupName = name + "Group";
+ }
+ eStructuralFeature =
+ createFeature
+ (eClass,
+ groupName,
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ xsdParticle,
+ effectiveOccurrence.minOccurs,
+ effectiveOccurrence.maxOccurs);
+
+ eStructuralFeature.setChangeable(true);
+
+ extendedMetaData.setFeatureKind(eStructuralFeature, ExtendedMetaData.GROUP_FEATURE);
+ extendedMetaData.setName(eStructuralFeature, xsdElementDeclaration.getName() + ":group");
+
+ if (group != null)
+ {
+ extendedMetaData.setGroup(eStructuralFeature, group);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+ else if (isMixed)
+ {
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+ else if (globalGroup != null)
+ {
+ extendedMetaData.setGroup(eStructuralFeature, globalGroup);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+
+ group = eStructuralFeature;
+ }
+
+ eStructuralFeature =
+ createFeature(eClass, xsdElementDeclaration, name, xsdParticle, effectiveOccurrence.minOccurs, effectiveOccurrence.maxOccurs);
+ // 51210
+ // particleMap.put(xsdParticle, eStructuralFeature);
+
+ // If the group is turned off, we better make the feature changeable.
+ //
+ if (!eStructuralFeature.isChangeable() && group == null && getEcoreAttribute(xsdParticle, xsdElementDeclaration, "changeable") == null)
+ {
+ eStructuralFeature.setChangeable(true);
+ }
+ }
+ }
+
+ if (eStructuralFeature != null)
+ {
+ if (group != null)
+ {
+ extendedMetaData.setGroup(eStructuralFeature, group);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+ else if (isMixed)
+ {
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+ else if (globalGroup != null)
+ {
+ extendedMetaData.setGroup(eStructuralFeature, globalGroup);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+ }
+ }
+
+ // 51210
+ // contentParticle = computeParticleConstraints(eClass, particleMap, (XSDParticle)xsdComplexTypeDefinition.getContent());
+ }
+ }
+
+ // 51210
+ // EAnnotation attributeParticle = null;
+ // if (isRestriction)
+ // {
+ // attributeParticle = EcoreFactory.eINSTANCE.createEAnnotation();
+ // attributeParticle.setSource("attributes");
+ // }
+
+ XSDWildcard baseXSDWildcard = null;
+ Collection<XSDAttributeUse> baseAttributeUses = Collections.emptyList();
+ Map<String, XSDAttributeUse> baseAttributeURIs = new HashMap<String, XSDAttributeUse>();
+ if (baseTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition complexBaseTypeDefinition = (XSDComplexTypeDefinition)baseTypeDefinition;
+ baseXSDWildcard = complexBaseTypeDefinition.getAttributeWildcard();
+ baseAttributeUses = complexBaseTypeDefinition.getAttributeUses();
+ for (XSDAttributeUse xsdAttributeUse : baseAttributeUses)
+ {
+ baseAttributeURIs.put(xsdAttributeUse.getAttributeDeclaration().getURI(), xsdAttributeUse);
+ }
+ }
+
+ for (XSDAttributeUse xsdAttributeUse : getAttributeUses(xsdComplexTypeDefinition))
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ if (baseAttributeURIs.remove(xsdAttributeDeclaration.getURI()) == null)
+ {
+ String name = getEcoreAttribute(xsdAttributeUse, "name");
+ if (name == null)
+ {
+ name = getEcoreAttribute(xsdAttributeDeclaration, "name");
+ }
+ if (name == null)
+ {
+ name = validName(xsdAttributeDeclaration.getName(), true);
+ }
+
+ EStructuralFeature eStructuralFeature =
+ createFeature(eClass, xsdAttributeDeclaration, name, xsdAttributeUse, xsdAttributeUse.isRequired());
+
+ if (isRestriction)
+ {
+ EStructuralFeature attributeWildcardEStructuralFeature =
+ extendedMetaData.getAttributeWildcardAffiliation
+ (baseClass, xsdAttributeDeclaration.getTargetNamespace(), xsdAttributeDeclaration.getName());
+ if (attributeWildcardEStructuralFeature != null)
+ {
+ extendedMetaData.setGroup(eStructuralFeature, attributeWildcardEStructuralFeature);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+ }
+ }
+ /* 51210
+ else if (isRestriction && !baseAttributeUses.contains(xsdAttributeUse))
+ {
+ EStructuralFeature eStructuralFeature =
+ extendedMetaData.getAttribute(eClass, xsdAttributeDeclaration.getTargetNamespace(), xsdAttributeDeclaration.getName());
+ if (eStructuralFeature != null)
+ {
+ EAnnotation attributeEAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ if (xsdAttributeUse.isRequired())
+ {
+ attributeEAnnotation.getDetails().put("minOccurs", "1");
+ }
+ attributeEAnnotation.getReferences().add(eStructuralFeature);
+
+ if (xsdAttributeDeclaration.getTypeDefinition() != null)
+ {
+ EClassifier type = getEClassifier(xsdAttributeDeclaration.getTypeDefinition());
+ if (type != eStructuralFeature.getEType() && type != null)
+ {
+ attributeEAnnotation.getReferences().add(type);
+ }
+ }
+
+ attributeParticle.getContents().add(attributeEAnnotation);
+ }
+ }
+ */
+ }
+
+ /* 51210
+ if (isRestriction && !baseAttributeURIs.isEmpty())
+ {
+ for (Iterator i = baseAttributeURIs.values().iterator(); i.hasNext(); )
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)i.next();
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ EStructuralFeature eStructuralFeature =
+ extendedMetaData.getAttribute(eClass, xsdAttributeDeclaration.getTargetNamespace(), xsdAttributeDeclaration.getName());
+ if (eStructuralFeature != null)
+ {
+ EAnnotation attributeEAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ attributeEAnnotation.getReferences().add(eStructuralFeature);
+ attributeEAnnotation.getDetails().put("maxOccurs", "0");
+ attributeParticle.getContents().add(attributeEAnnotation);
+ }
+ }
+ }
+ */
+
+ XSDWildcard xsdWildcard = xsdComplexTypeDefinition.getAttributeWildcard();
+ if (xsdWildcard != null && baseXSDWildcard != xsdWildcard || XSDConstants.isURType(xsdComplexTypeDefinition))
+ {
+ if (isRestriction && !XSDConstants.isURType(xsdComplexTypeDefinition))
+ {
+ // 51210
+ // attributeParticle.getDetails().put
+ // ("wildcard", BasicExtendedMetaData.getEncodedWildcards(xsdComplexTypeDefinition.getTargetNamespace(), getWildcards(xsdWildcard)));
+ }
+ else
+ {
+ String name = getEcoreAttribute(xsdWildcard, "name");
+ if (name == null)
+ {
+ name = "anyAttribute";
+ }
+ createFeature
+ (eClass,
+ name,
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ xsdWildcard,
+ 0,
+ -1);
+ }
+ }
+
+ if (isRestriction)
+ {
+ // 51210
+ // EAnnotation restrictionParticle = EcoreFactory.eINSTANCE.createEAnnotation();
+ // restrictionParticle.setSource("restriction");
+ // if (contentParticle != null)
+ // {
+ // restrictionParticle.getContents().add(contentParticle);
+ // }
+ // if (!attributeParticle.getContents().isEmpty() || !attributeParticle.getDetails().isEmpty())
+ // {
+ // restrictionParticle.getContents().add(attributeParticle);
+ // }
+ // contentParticle = restrictionParticle;
+
+ int baseContentKind = extendedMetaData.getContentKind(eClass.getESuperTypes().get(0));
+ if (baseContentKind == ExtendedMetaData.MIXED_CONTENT &&
+ xsdComplexTypeDefinition.getContentTypeCategory() == XSDContentTypeCategory.SIMPLE_LITERAL)
+ {
+ XSDSimpleTypeDefinition contentType = xsdComplexTypeDefinition.getSimpleType();
+ extendedMetaData.setContentKind(eClass, ExtendedMetaData.SIMPLE_CONTENT);
+ boolean isSimpleAnyType = "SimpleAnyType".equals(eClass.getName()) && XMLTypePackage.eNS_URI.equals(eClass.getEPackage().getNsURI());
+ if (isSimpleAnyType)
+ {
+ EStructuralFeature eStructuralFeature =
+ createFeature
+ (eClass,
+ "rawValue",
+ getEClassifier(xsdComplexTypeDefinition.getSchema().resolveTypeDefinition("string")),
+ null,
+ 0,
+ 1);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+
+ XSDSimpleTypeDefinition baseSimpleContentType = contentType.getBaseTypeDefinition();
+ EStructuralFeature eStructuralFeature =
+ createFeature
+ (eClass,
+ "value",
+ getEClassifier(isSimpleAnyType ? xsdComplexTypeDefinition.getSchema().resolveTypeDefinition("anySimpleType") : baseSimpleContentType),
+ null,
+ 0,
+ 1);
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+
+ if (isSimpleAnyType)
+ {
+ eStructuralFeature =
+ createFeature
+ (eClass,
+ "instanceType",
+ EcorePackage.Literals.EDATA_TYPE,
+ null,
+ 1,
+ 1);
+
+ ((EReference)eStructuralFeature).setResolveProxies(false);
+ }
+ }
+ else
+ {
+ extendedMetaData.setContentKind(eClass, baseContentKind);
+ }
+ }
+
+ // 51210
+ // extendedMetaData.setContent(eClass, contentParticle);
+
+ XSDAnnotation xsdAnnotation = xsdComplexTypeDefinition.getAnnotation();
+ if (xsdAnnotation != null)
+ {
+ List<Element> applicationInformationList = xsdAnnotation.getApplicationInformation(EcorePackage.eNS_URI);
+ for (Element applicationInformation : applicationInformationList)
+ {
+ if ("operations".equals(applicationInformation.getAttributeNS(EcorePackage.eNS_URI, "key")))
+ {
+ for (Element operation : getElements(applicationInformation, "operation"))
+ {
+ EOperation eOperation = EcoreFactory.eINSTANCE.createEOperation();
+ String operationName = operation.getAttributeNS(null, "name");
+ eOperation.setName(operationName);
+
+ eClass.getEOperations().add(eOperation);
+
+ for (Element typeParameter : getElements(operation, "typeParameter"))
+ {
+ ETypeParameter eTypeParameter = EcoreFactory.eINSTANCE.createETypeParameter();
+ String typeParameterName = typeParameter.getAttributeNS(null, "name");
+ eTypeParameter.setName(typeParameterName);
+ eOperation.getETypeParameters().add(eTypeParameter);
+ eTypeParameter.getEBounds().addAll(getGenericTypes(xsdComplexTypeDefinition, typeParameter, eOperation, typeParameter.getAttributeNS(null, "bounds")));
+ }
+
+ EGenericType returnType = getGenericType(xsdComplexTypeDefinition, operation, eOperation, operation.getAttributeNS(null, "type"));
+ if (returnType != null)
+ {
+ eOperation.setEGenericType(returnType);
+ }
+
+ // Since we included this by mistake, instead of the plural form, for the time being, we'd better accept either.
+ //
+ eOperation.getEGenericExceptions().addAll(getGenericTypes(xsdComplexTypeDefinition, operation, eOperation, operation.getAttributeNS(null, "exception")));
+ eOperation.getEGenericExceptions().addAll(getGenericTypes(xsdComplexTypeDefinition, operation, eOperation, operation.getAttributeNS(null, "exceptions")));
+
+ for (Element parameter : getElements(operation, "parameter"))
+ {
+ EParameter eParameter = EcoreFactory.eINSTANCE.createEParameter();
+ String paramaterName = parameter.getAttributeNS(null, "name");
+ eParameter.setName(paramaterName);
+
+ EGenericType parameterType = getGenericType(xsdComplexTypeDefinition, operation, eOperation, parameter.getAttributeNS(null, "type"));
+ eParameter.setEGenericType(parameterType);
+
+ populateETypedElement(eParameter, parameter);
+ eOperation.getEParameters().add(eParameter);
+ }
+
+ List<Element> body = getElements(operation, "body");
+ if (!body.isEmpty())
+ {
+ EcoreUtil.setAnnotation(eOperation, "http://www.eclipse.org/emf/2002/GenModel", "body", getText(body.get(0)));
+ }
+
+ populateETypedElement(eOperation, operation);
+ }
+ }
+ }
+ }
+ return eClass;
+ }
+
+ protected void populateETypedElement(ETypedElement eTypedElement, Element element)
+ {
+ String lowerBound = element.getAttributeNS(null, "lowerBound");
+ if (!"".equals(lowerBound))
+ {
+ eTypedElement.setLowerBound(Integer.parseInt(lowerBound));
+ }
+
+ String upperBound = element.getAttributeNS(null, "upperBound");
+ if (!"".equals(upperBound))
+ {
+ eTypedElement.setUpperBound(Integer.parseInt(upperBound));
+ }
+
+ if ("false".equals(element.getAttributeNS(null, "unique")))
+ {
+ eTypedElement.setUnique(false);
+ }
+
+ if ("false".equals(element.getAttributeNS(null, "ordered")))
+ {
+ eTypedElement.setOrdered(false);
+ }
+
+ for (Element annotation : getElements(element, "annotation"))
+ {
+ EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ if (annotation.hasAttributeNS(null, "source"))
+ {
+ eAnnotation.setSource(annotation.getAttributeNS(null, "source"));
+ }
+ for (Element detail : getElements(annotation, "detail"))
+ {
+ eAnnotation.getDetails().put
+ (detail.hasAttributeNS(null, "key") ? detail.getAttributeNS(null, "key") : null,
+ getText(detail));
+ }
+ eTypedElement.getEAnnotations().add(eAnnotation);
+ }
+ }
+
+ private String getText(Element element)
+ {
+ StringBuffer text = new StringBuffer();
+ for (Node node = element.getFirstChild(); node != null; node = node.getNextSibling())
+ {
+ switch (node.getNodeType())
+ {
+ case Node.TEXT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ {
+ text.append(node.getNodeValue());
+ }
+ }
+ }
+ return text.toString();
+ }
+
+ private List<Element> getElements(Element element, String localName)
+ {
+ List<Element> result = new ArrayList<Element>();
+ for (Node node = element.getFirstChild(); node != null; node = node.getNextSibling())
+ {
+ if (node.getNodeType() == Node.ELEMENT_NODE)
+ {
+ Element child = (Element)node;
+ if (localName.equals(child.getLocalName()) && child.getNamespaceURI() == null)
+ {
+ result.add(child);
+ }
+ }
+ }
+ return result;
+ }
+
+ private EDataType getExplicitType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition, EModelElement context)
+ {
+ Element element = xsdSimpleTypeDefinition.getElement();
+ if (element != null)
+ {
+ for (Node node = element.getFirstChild(); node != null; node = node.getNextSibling())
+ {
+ if (node.getNodeType() == Node.ELEMENT_NODE)
+ {
+ int nodeType = XSDConstants.nodeType(node);
+ if (nodeType == XSDConstants.RESTRICTION_ELEMENT || nodeType == XSDConstants.LIST_ELEMENT)
+ {
+ String explicitType = getEcoreAttribute((Element)node, "type");
+ if (explicitType != null)
+ {
+ EGenericType explicitGenericType = getGenericType(xsdSimpleTypeDefinition, xsdSimpleTypeDefinition.getElement(), context, explicitType);
+ if (explicitGenericType != null)
+ {
+ EClassifier eClassifier = explicitGenericType.getEClassifier();
+ if (eClassifier instanceof EDataType && explicitGenericType.getETypeArguments().isEmpty() && explicitGenericType.getELowerBound() == null && explicitGenericType.getELowerBound() == null)
+ {
+ return (EDataType)eClassifier;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ protected boolean useSortedAttributes()
+ {
+ return true;
+ }
+
+ protected List<XSDAttributeUse> getAttributeUses(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ if (useSortedAttributes())
+ {
+ return xsdComplexTypeDefinition.getAttributeUses();
+ }
+ else
+ {
+ List<XSDAttributeUse> result = new ArrayList<XSDAttributeUse>(xsdComplexTypeDefinition.getAttributeUses());
+ reorderAttributeUses(result, xsdComplexTypeDefinition.getAttributeContents());
+ return result;
+ }
+ }
+
+ protected void reorderAttributeUses(List<XSDAttributeUse> attributeUses, List<XSDAttributeGroupContent> attributeContents)
+ {
+ for (Object attributeContent : attributeContents)
+ {
+ if (attributeContent instanceof XSDAttributeUse)
+ {
+ int index = attributeUses.indexOf(attributeContent);
+ if (index != -1)
+ {
+ attributeUses.remove(index);
+ attributeUses.add((XSDAttributeUse)attributeContent);
+ }
+ }
+ else
+ {
+ reorderAttributeUses(attributeUses, ((XSDAttributeGroupDefinition)attributeContent).getContents());
+ }
+ }
+ }
+
+ protected final List<String> ANY_NAMESPACE_WILDCARD = Arrays.asList(new String [] { "##any" });
+ protected final List<String> NOT_NULL_WILDCARD = Arrays.asList(new String [] { "!##" });
+ protected List<String> getWildcards(XSDWildcard xsdWildcard)
+ {
+ switch (xsdWildcard.getNamespaceConstraintCategory().getValue())
+ {
+ case XSDNamespaceConstraintCategory.ANY:
+ {
+ return ANY_NAMESPACE_WILDCARD;
+ }
+ case XSDNamespaceConstraintCategory.NOT:
+ {
+ String targetNamespace = null;
+ XSDSchema containingXSDSchema = xsdWildcard.getSchema();
+ if (containingXSDSchema != null)
+ {
+ targetNamespace = containingXSDSchema.getTargetNamespace();
+ }
+ return targetNamespace == null ? NOT_NULL_WILDCARD : Collections.singletonList("!##" + targetNamespace);
+ }
+ case XSDNamespaceConstraintCategory.SET:
+ {
+ return xsdWildcard.getNamespaceConstraint();
+ }
+ default:
+ {
+ throw
+ new UnsupportedOperationException
+ ("Unknown XSDNamespaceConstraintCategory: " + xsdWildcard.getNamespaceConstraintCategory().getName());
+ }
+ }
+ }
+
+ protected EStructuralFeature createFeature(EClass eClass, String name, EClassifier type, XSDComponent xsdComponent)
+ {
+ return createFeature(eClass, name, type, xsdComponent, 0, 1);
+ }
+
+ protected EStructuralFeature createFeature
+ (EClass eClass, String name, EClassifier type, XSDComponent xsdComponent, int minOccurs, int maxOccurs)
+ {
+ if (xsdComponent != null)
+ {
+ XSDSchema containingXSDSchema = xsdComponent.getSchema();
+ if (containingXSDSchema != null && !xsdSchemas.contains(containingXSDSchema))
+ {
+ xsdSchemas.add(containingXSDSchema);
+ addInput(containingXSDSchema);
+ validate(containingXSDSchema);
+ }
+ }
+ else if (extendedMetaData.getContentKind(eClass) == ExtendedMetaData.MIXED_CONTENT)
+ {
+ if (type == EcorePackage.Literals.EFEATURE_MAP_ENTRY)
+ {
+ EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute();
+ setAnnotations(eAttribute, xsdComponent);
+ eAttribute.setName(Character.toLowerCase(name.charAt(0)) + name.substring(1));
+ if (maxOccurs != 1)
+ {
+ eAttribute.setUnique(false);
+ }
+ eAttribute.setEType(type);
+ eAttribute.setLowerBound(minOccurs);
+ eAttribute.setUpperBound(maxOccurs);
+ eClass.getEStructuralFeatures().add(eAttribute);
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
+ extendedMetaData.setName(eAttribute, ":" + eAttribute.getName());
+ return eAttribute;
+ }
+ else
+ {
+ EReference eReference = EcoreFactory.eINSTANCE.createEReference();
+ setAnnotations(eReference, xsdComponent);
+ eReference.setName(name);
+ eReference.setEType(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY);
+ eReference.setLowerBound(0);
+ eReference.setUpperBound(-1);
+ eReference.setContainment(true);
+ eReference.setResolveProxies(false);
+ eReference.setTransient(true);
+ eClass.getEStructuralFeatures().add(eReference);
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ return eReference;
+ }
+ }
+
+ if (type instanceof EClass)
+ {
+ EReference eReference = EcoreFactory.eINSTANCE.createEReference();
+ setAnnotations(eReference, xsdComponent);
+ eReference.setName(Character.toLowerCase(name.charAt(0)) + name.substring(1));
+ eReference.setEType(type);
+ eReference.setLowerBound(minOccurs);
+ eReference.setUpperBound(maxOccurs);
+
+ eClass.getEStructuralFeatures().add(eReference);
+ if (xsdComponent == null || xsdComponent instanceof XSDSimpleTypeDefinition)
+ {
+ extendedMetaData.setName(eReference, ":" + eClass.getEAllStructuralFeatures().indexOf(eReference));
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.SIMPLE_FEATURE);
+ eReference.setResolveProxies(!isLocalReferenceType((XSDSimpleTypeDefinition)xsdComponent));
+ }
+ else
+ {
+ map(xsdComponent, eReference);
+ if (xsdComponent instanceof XSDParticle)
+ {
+ eReference.setContainment(true);
+ eReference.setResolveProxies(false);
+
+ XSDParticle xsdParticle = (XSDParticle)xsdComponent;
+
+ XSDTerm xsdTerm = ((XSDParticle)xsdComponent).getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_FEATURE);
+ extendedMetaData.setName(eReference, xsdElementDeclaration.getName());
+ extendedMetaData.setNamespace(eReference, xsdElementDeclaration.getTargetNamespace());
+
+ XSDTypeDefinition xsdType = getEffectiveTypeDefinition(xsdParticle, xsdElementDeclaration);
+ if (xsdType instanceof XSDSimpleTypeDefinition)
+ {
+ eReference.setContainment(false);
+ eReference.setResolveProxies(!isLocalReferenceType((XSDSimpleTypeDefinition)xsdType));
+ }
+
+ if (maxOccurs == 1 && xsdElementDeclaration.isNillable())
+ {
+ eReference.setUnsettable(true);
+ }
+
+ if (xsdElementDeclaration.isAbstract())
+ {
+ eReference.setChangeable(false);
+ }
+
+ String opposite = getEcoreAttribute(xsdParticle, "opposite");
+ if (opposite != null)
+ {
+ eReferenceToOppositeNameMap.put(eReference, opposite);
+ }
+
+ String key = getEcoreAttribute(xsdParticle, "keys");
+ if (key != null)
+ {
+ List<String> keyNames = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(key); stringTokenizer.hasMoreTokens(); )
+ {
+ keyNames.add(stringTokenizer.nextToken());
+ }
+ eReferenceToKeyNamesMap.put(eReference, keyNames);
+ }
+ }
+ else if (xsdTerm instanceof XSDWildcard)
+ {
+ // EATM shouldn't happen
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm;
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
+ extendedMetaData.setWildcards(eReference, getWildcards(xsdWildcard));
+ extendedMetaData.setProcessingKind(eReference, xsdWildcard.getProcessContents().getValue() + 1);
+ extendedMetaData.setName(eReference, ":" + eClass.getEAllStructuralFeatures().indexOf(eReference));
+ }
+ else
+ {
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.GROUP_FEATURE);
+ extendedMetaData.setName(eReference, ":" + eClass.getEAllStructuralFeatures().indexOf(eReference));
+ }
+ }
+ else if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent;
+ eReference.setContainment(true);
+ eReference.setResolveProxies(false);
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_FEATURE);
+ extendedMetaData.setName(eReference, xsdElementDeclaration.getName());
+ extendedMetaData.setNamespace(eReference, xsdElementDeclaration.getTargetNamespace());
+
+ XSDElementDeclaration substitutionGroupAffiliation = xsdElementDeclaration.getSubstitutionGroupAffiliation();
+ if (substitutionGroupAffiliation != null)
+ {
+ EStructuralFeature affiliation = getEStructuralFeature(substitutionGroupAffiliation);
+ extendedMetaData.setAffiliation(eReference, affiliation);
+ }
+ XSDTypeDefinition xsdType = getEffectiveTypeDefinition(null, xsdElementDeclaration);
+ if (xsdType instanceof XSDSimpleTypeDefinition)
+ {
+ eReference.setResolveProxies(!isLocalReferenceType((XSDSimpleTypeDefinition)xsdType));
+ }
+
+ if (maxOccurs == 1 && xsdElementDeclaration.isNillable())
+ {
+ eReference.setUnsettable(true);
+ }
+
+ if (xsdElementDeclaration.isAbstract())
+ {
+ eReference.setChangeable(false);
+ }
+ }
+ else if (xsdComponent instanceof XSDAttributeUse)
+ {
+ String opposite = getEcoreAttribute(xsdComponent, "opposite");
+ if (opposite != null)
+ {
+ eReferenceToOppositeNameMap.put(eReference, opposite);
+ }
+
+ String key = getEcoreAttribute(xsdComponent, "keys");
+ if (key != null)
+ {
+ List<String> keyNames = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(key); stringTokenizer.hasMoreTokens(); )
+ {
+ keyNames.add(stringTokenizer.nextToken());
+ }
+ eReferenceToKeyNamesMap.put(eReference, keyNames);
+ }
+
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdComponent;
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ extendedMetaData.setName(eReference, xsdAttributeDeclaration.getName());
+ extendedMetaData.setNamespace(eReference, xsdAttributeDeclaration.getTargetNamespace());
+ eReference.setResolveProxies
+ (!isLocalReferenceType((XSDSimpleTypeDefinition)getEffectiveTypeDefinition(xsdAttributeUse, xsdAttributeDeclaration)));
+ }
+ else if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdComponent;
+ extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ extendedMetaData.setName(eReference, xsdAttributeDeclaration.getName());
+ extendedMetaData.setNamespace(eReference, xsdAttributeDeclaration.getTargetNamespace());
+ eReference.setResolveProxies
+ (!isLocalReferenceType((XSDSimpleTypeDefinition)getEffectiveTypeDefinition(null, xsdAttributeDeclaration)));
+ }
+ }
+
+ return eReference;
+ }
+ else
+ {
+ EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute();
+ setAnnotations(eAttribute, xsdComponent);
+ eAttribute.setName(Character.toLowerCase(name.charAt(0)) + name.substring(1));
+ if (maxOccurs != 1)
+ {
+ eAttribute.setUnique(false);
+ }
+ eAttribute.setEType(type);
+ eAttribute.setLowerBound(minOccurs);
+ eAttribute.setUpperBound(maxOccurs);
+ eClass.getEStructuralFeatures().add(eAttribute);
+
+ if (xsdComponent == null || xsdComponent instanceof XSDSimpleTypeDefinition)
+ {
+ extendedMetaData.setName(eAttribute, ":" + eClass.getEAllStructuralFeatures().indexOf(eAttribute));
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.SIMPLE_FEATURE);
+ }
+ else
+ {
+ map(xsdComponent, eAttribute);
+ if (xsdComponent instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdComponent;
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ extendedMetaData.setName(eAttribute, xsdAttributeDeclaration.getName());
+ extendedMetaData.setNamespace(eAttribute, xsdAttributeDeclaration.getTargetNamespace());
+
+ String defaultValue = getEcoreAttribute(xsdComponent, "default");
+ if (defaultValue == null)
+ {
+ defaultValue = xsdAttributeUse.getLexicalValue();
+ }
+ setDefaultValueLiteral(eAttribute, defaultValue);
+ initialize(eAttribute, (XSDSimpleTypeDefinition)getEffectiveTypeDefinition(xsdAttributeUse, xsdAttributeDeclaration));
+ }
+ else if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdComponent;
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ extendedMetaData.setName(eAttribute, xsdAttributeDeclaration.getName());
+ extendedMetaData.setNamespace(eAttribute, xsdAttributeDeclaration.getTargetNamespace());
+
+ setDefaultValueLiteral(eAttribute, xsdAttributeDeclaration.getLexicalValue());
+ initialize(eAttribute, (XSDSimpleTypeDefinition)getEffectiveTypeDefinition(null, xsdAttributeDeclaration));
+ }
+ else if (xsdComponent instanceof XSDParticle)
+ {
+ XSDTerm xsdTerm = ((XSDParticle)xsdComponent).getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_FEATURE);
+ extendedMetaData.setName(eAttribute, xsdElementDeclaration.getName());
+ extendedMetaData.setNamespace(eAttribute, xsdElementDeclaration.getTargetNamespace());
+
+ setDefaultValueLiteral(eAttribute, xsdElementDeclaration.getLexicalValue());
+ XSDTypeDefinition xsdType = getEffectiveTypeDefinition(xsdComponent, xsdElementDeclaration);
+ if (xsdType instanceof XSDSimpleTypeDefinition)
+ {
+ initialize(eAttribute, (XSDSimpleTypeDefinition)xsdType);
+ }
+
+ if (xsdElementDeclaration.isNillable())
+ {
+ if (!canSupportNull((EDataType)type))
+ {
+ eAttribute.setEType(type = typeToTypeObjectMap.get(type));
+ }
+ if (maxOccurs == 1)
+ {
+ eAttribute.setUnsettable(true);
+ }
+ }
+
+ if (xsdElementDeclaration.isAbstract())
+ {
+ eAttribute.setChangeable(false);
+ }
+ }
+ else if (xsdTerm instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm;
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
+ extendedMetaData.setWildcards(eAttribute, getWildcards(xsdWildcard));
+ extendedMetaData.setProcessingKind(eAttribute, xsdWildcard.getProcessContents().getValue() + 1);
+ extendedMetaData.setName(eAttribute, ":" + eClass.getEAllStructuralFeatures().indexOf(eAttribute));
+ }
+ else
+ {
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.GROUP_FEATURE);
+ }
+ }
+ else if (xsdComponent instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdComponent;
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE);
+ extendedMetaData.setWildcards(eAttribute, getWildcards(xsdWildcard));
+ extendedMetaData.setProcessingKind(eAttribute, xsdWildcard.getProcessContents().getValue() + 1);
+ extendedMetaData.setName(eAttribute, ":" + eClass.getEAllStructuralFeatures().indexOf(eAttribute));
+ }
+ else if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent;
+ extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_FEATURE);
+ extendedMetaData.setName(eAttribute, xsdElementDeclaration.getName());
+ extendedMetaData.setNamespace(eAttribute, xsdElementDeclaration.getTargetNamespace());
+
+ setDefaultValueLiteral(eAttribute, xsdElementDeclaration.getLexicalValue());
+ XSDTypeDefinition xsdType = getEffectiveTypeDefinition(null, xsdElementDeclaration);
+ if (xsdType instanceof XSDSimpleTypeDefinition)
+ {
+ initialize(eAttribute, (XSDSimpleTypeDefinition)xsdType);
+ }
+
+ XSDElementDeclaration substitutionGroupAffiliation = xsdElementDeclaration.getSubstitutionGroupAffiliation();
+ if (substitutionGroupAffiliation != null)
+ {
+ EStructuralFeature affiliation = getEStructuralFeature(substitutionGroupAffiliation);
+ extendedMetaData.setAffiliation(eAttribute, affiliation);
+ }
+
+ if (xsdElementDeclaration.isNillable() && !canSupportNull((EDataType)type))
+ {
+ eAttribute.setEType(type = typeToTypeObjectMap.get(type));
+ if (maxOccurs == 1)
+ {
+ eAttribute.setUnsettable(true);
+ }
+ }
+
+ if (xsdElementDeclaration.isAbstract())
+ {
+ eAttribute.setChangeable(false);
+ }
+ }
+ }
+
+ if (maxOccurs == 1 && (type.getDefaultValue() != null || eAttribute.getDefaultValueLiteral() != null))
+ {
+ eAttribute.setUnsettable(true);
+ }
+
+ return eAttribute;
+ }
+ }
+
+ protected XSDTypeDefinition getEffectiveTypeDefinition(XSDComponent xsdComponent, XSDFeature xsdFeature)
+ {
+ return xsdFeature == null ? ((XSDComplexTypeDefinition)xsdComponent.eContainer()).getSimpleType() : xsdFeature.getType();
+ }
+
+ protected EStructuralFeature createFeature
+ (EClass eClass, XSDElementDeclaration xsdElementDeclaration, String name, XSDComponent xsdComponent, int minOccurs, int maxOccurs)
+ {
+ XSDTypeDefinition elementTypeDefinition = getEffectiveTypeDefinition(xsdComponent, xsdElementDeclaration);
+ EClassifier eClassifier = getEClassifier(elementTypeDefinition);
+
+ EGenericType referenceType = getGenericType(xsdComponent, xsdComponent.getElement(), eClass, getEcoreAttribute(xsdComponent, "reference"));
+ if (referenceType == null)
+ {
+ referenceType = getGenericType(xsdElementDeclaration, xsdElementDeclaration.getElement(), eClass, getEcoreAttribute(xsdElementDeclaration, "reference"));
+ }
+ if (referenceType != null && referenceType.getERawType() != null)
+ {
+ EClassifier referenceClassifier = referenceType.getERawType();
+ if (referenceType.getETypeParameter() != null && referenceClassifier instanceof EDataType)
+ {
+ referenceClassifier = EcorePackage.Literals.EOBJECT;
+ }
+ boolean needsHolder = false;
+ if (elementTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)elementTypeDefinition;
+ if (xsdSimpleTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL)
+ {
+ needsHolder = true;
+
+ EPackage holderPackage = getEPackage(xsdElementDeclaration);
+ String holderName = xsdElementDeclaration.getName() + ":holder";
+ EClass holderClass = (EClass)extendedMetaData.getType(holderPackage, holderName);
+ if (holderClass == null)
+ {
+ // Create a holder class like an anonymous complex type.
+ //
+ holderClass = EcoreFactory.eINSTANCE.createEClass();
+ setAnnotations(holderClass, xsdElementDeclaration);
+ holderClass.setName(validName(holderName, true));
+ extendedMetaData.setName(holderClass, holderName);
+ extendedMetaData.setContentKind(holderClass, ExtendedMetaData.SIMPLE_CONTENT);
+
+ addToSortedList(holderPackage.getEClassifiers(), holderClass);
+
+ EReference holderReference =
+ (EReference)createFeature
+ (holderClass,
+ "value",
+ referenceClassifier,
+ null,
+ 0,
+ -1);
+
+ // Replace the raw type with the generic type.
+ //
+ holderReference.setEGenericType(referenceType);
+ holderReference.setResolveProxies(!isLocalReferenceType(xsdSimpleTypeDefinition));
+ }
+ referenceClassifier = holderClass;
+ }
+ }
+ EStructuralFeature result =
+ createFeature
+ (eClass,
+ name,
+ referenceClassifier,
+ xsdComponent,
+ minOccurs,
+ maxOccurs);
+ ((EReference)result).setContainment(needsHolder);
+ if (needsHolder)
+ {
+ ((EReference)result).setUnsettable(false);
+ ((EReference)result).setResolveProxies(false);
+ }
+ else
+ {
+ // Replace the raw type with the generic type.
+ //
+ result.setEGenericType(referenceType);
+ }
+ initialize(result, xsdElementDeclaration, xsdComponent);
+ return result;
+ }
+ else
+ {
+ EStructuralFeature result =
+ createFeature
+ (eClass,
+ name,
+ eClassifier,
+ xsdComponent,
+ minOccurs,
+ maxOccurs);
+ initialize(result, xsdElementDeclaration, xsdComponent);
+ return result;
+ }
+ }
+
+ protected EStructuralFeature createFeature
+ (EClass eClass, XSDAttributeDeclaration xsdAttributeDeclaration, String name, XSDComponent xsdComponent, boolean isRequired)
+ {
+ XSDSimpleTypeDefinition attributeTypeDefinition = (XSDSimpleTypeDefinition)getEffectiveTypeDefinition(xsdComponent, xsdAttributeDeclaration);
+ if (attributeTypeDefinition == null)
+ {
+ attributeTypeDefinition = xsdComponent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("anySimpleType");
+ }
+
+ EGenericType referenceType = getGenericType(xsdComponent, xsdComponent.getElement(), eClass, getEcoreAttribute(xsdComponent, "reference"));
+ if (referenceType == null && xsdAttributeDeclaration != null)
+ {
+ referenceType = getGenericType(xsdAttributeDeclaration, xsdAttributeDeclaration.getElement(), eClass, getEcoreAttribute(xsdAttributeDeclaration, "reference"));
+ }
+ if (referenceType != null && referenceType.getERawType() != null)
+ {
+ int lowerBound = isRequired ? 1 : 0;
+ int upperBound = 1;
+ if (attributeTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL)
+ {
+ XSDLengthFacet xsdLengthFacet = attributeTypeDefinition.getEffectiveLengthFacet();
+ if (isRequired)
+ {
+ if (xsdLengthFacet != null)
+ {
+ lowerBound = xsdLengthFacet.getValue();
+ }
+ else
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = attributeTypeDefinition.getEffectiveMinLengthFacet();
+ if (xsdMinLengthFacet != null)
+ {
+ lowerBound = xsdMinLengthFacet.getValue();
+ }
+ }
+ }
+ if (xsdLengthFacet != null)
+ {
+ upperBound = xsdLengthFacet.getValue();
+ }
+ else
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = attributeTypeDefinition.getEffectiveMaxLengthFacet();
+ if (xsdMaxLengthFacet != null)
+ {
+ upperBound = xsdMaxLengthFacet.getValue();
+ }
+ else
+ {
+ upperBound = -1;
+ }
+ }
+ }
+
+ EClassifier referenceClassifier = referenceType.getERawType();
+ if (referenceType.getETypeParameter() != null && referenceClassifier instanceof EDataType)
+ {
+ referenceClassifier = EcorePackage.Literals.EOBJECT;
+ }
+ EStructuralFeature result =
+ createFeature
+ (eClass,
+ name,
+ referenceClassifier,
+ xsdComponent,
+ lowerBound,
+ upperBound);
+ result.setEGenericType(referenceType);
+ initialize(result, xsdAttributeDeclaration, xsdComponent);
+ return result;
+ }
+ else
+ {
+ boolean isMany =
+ attributeTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL &&
+ xsdComponent instanceof XSDAttributeUse &&
+ "true".equals(getEcoreAttribute(xsdComponent, "many"));
+ if (isMany)
+ {
+ EDataType eDataType = getEDataType(attributeTypeDefinition.getItemTypeDefinition());
+ XSDLengthFacet xsdLengthFacet = attributeTypeDefinition.getEffectiveLengthFacet();
+ int lowerBound = isRequired ? 1 : 0;
+ int upperBound = -1;
+ if (isRequired)
+ {
+ if (xsdLengthFacet != null)
+ {
+ lowerBound = xsdLengthFacet.getValue();
+ }
+ else
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = attributeTypeDefinition.getEffectiveMinLengthFacet();
+ if (xsdMinLengthFacet != null)
+ {
+ lowerBound = xsdMinLengthFacet.getValue();
+ }
+ }
+ }
+ if (xsdLengthFacet != null)
+ {
+ upperBound = xsdLengthFacet.getValue();
+ }
+ else
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = attributeTypeDefinition.getEffectiveMaxLengthFacet();
+ if (xsdMaxLengthFacet != null)
+ {
+ upperBound = xsdMaxLengthFacet.getValue();
+ }
+ }
+ EStructuralFeature result =
+ createFeature
+ (eClass,
+ name,
+ eDataType,
+ xsdComponent,
+ lowerBound,
+ upperBound);
+ initialize(result, xsdAttributeDeclaration, xsdComponent);
+ return result;
+ }
+ else
+ {
+ EDataType eDataType = getEDataType(attributeTypeDefinition);
+ EStructuralFeature result =
+ createFeature
+ (eClass,
+ name,
+ eDataType,
+ xsdComponent,
+ isRequired ? 1 : 0,
+ 1);
+ initialize(result, xsdAttributeDeclaration, xsdComponent);
+ return result;
+ }
+ }
+ }
+
+ protected void initialize(EStructuralFeature eStructuralFeature, XSDFeature xsdFeature, XSDComponent xsdComponent)
+ {
+ EGenericType eGenericType = getGenericType(xsdComponent, xsdComponent.getElement(), eStructuralFeature, getEcoreAttribute(xsdComponent, "type"));
+ if (eGenericType == null && xsdFeature != null)
+ {
+ eGenericType = getGenericType(xsdFeature, xsdFeature.getElement(), eStructuralFeature, getEcoreAttribute(xsdFeature, "type"));
+ }
+ if (eGenericType != null)
+ {
+ eStructuralFeature.setEGenericType(eGenericType);
+ }
+
+ String unsettable = getEcoreAttribute(xsdComponent, xsdFeature, "unsettable");
+ if (unsettable != null)
+ {
+ eStructuralFeature.setUnsettable("true".equals(unsettable));
+ }
+
+ String ordered = getEcoreAttribute(xsdComponent, xsdFeature, "ordered");
+ if (ordered != null)
+ {
+ eStructuralFeature.setOrdered("true".equals(ordered));
+ }
+
+ String unique = getEcoreAttribute(xsdComponent, xsdFeature, "unique");
+ if (unique != null)
+ {
+ eStructuralFeature.setUnique("true".equals(unique));
+ }
+
+ String changeable = getEcoreAttribute(xsdComponent, xsdFeature, "changeable");
+ if (changeable != null)
+ {
+ eStructuralFeature.setChangeable("true".equals(changeable));
+ }
+
+ String derived = getEcoreAttribute(xsdComponent, xsdFeature, "derived");
+ if (derived != null)
+ {
+ eStructuralFeature.setDerived("true".equals(derived));
+ }
+
+ String isTransient = getEcoreAttribute(xsdComponent, xsdFeature, "transient");
+ if (isTransient != null)
+ {
+ eStructuralFeature.setTransient("true".equals(isTransient));
+ }
+
+ String isVolatile = getEcoreAttribute(xsdComponent, xsdFeature, "volatile");
+ if (isVolatile != null)
+ {
+ eStructuralFeature.setVolatile("true".equals(isVolatile));
+ }
+
+ String lowerBound = getEcoreAttribute(xsdComponent, xsdFeature, "lowerBound");
+ if (lowerBound != null)
+ {
+ eStructuralFeature.setLowerBound(Integer.parseInt(lowerBound));
+ }
+
+ String upperBound = getEcoreAttribute(xsdComponent, xsdFeature, "upperBound");
+ if (upperBound != null)
+ {
+ eStructuralFeature.setUpperBound(Integer.parseInt(upperBound));
+ }
+
+ String resolveProxies = getEcoreAttribute(xsdComponent, xsdFeature, "resolveProxies");
+ if (resolveProxies != null && eStructuralFeature instanceof EReference)
+ {
+ ((EReference)eStructuralFeature).setResolveProxies("true".equals(resolveProxies));
+ }
+
+ String isSuppressedGetVisibility = getEcoreAttribute(xsdComponent, xsdFeature, "suppressedGetVisibility");
+ if (isSuppressedGetVisibility != null)
+ {
+ EcoreUtil.setSuppressedVisibility(eStructuralFeature, EcoreUtil.GET, "true".equals(isSuppressedGetVisibility));
+ }
+
+ String isSuppressedSetVisibility = getEcoreAttribute(xsdComponent, xsdFeature, "suppressedSetVisibility");
+ if (isSuppressedSetVisibility != null)
+ {
+ EcoreUtil.setSuppressedVisibility(eStructuralFeature, EcoreUtil.SET, "true".equals(isSuppressedSetVisibility));
+ }
+
+ String isSuppressedIsSetVisibility = getEcoreAttribute(xsdComponent, xsdFeature, "suppressedIsSetVisibility");
+ if (isSuppressedIsSetVisibility != null)
+ {
+ EcoreUtil.setSuppressedVisibility(eStructuralFeature, EcoreUtil.IS_SET, "true".equals(isSuppressedIsSetVisibility));
+ }
+
+ String isSuppressedUnsetVisibility = getEcoreAttribute(xsdComponent, xsdFeature, "suppressedUnsetVisibility");
+ if (isSuppressedUnsetVisibility != null)
+ {
+ EcoreUtil.setSuppressedVisibility(eStructuralFeature, EcoreUtil.UNSET, "true".equals(isSuppressedUnsetVisibility));
+ }
+
+ String isID = getEcoreAttribute(xsdComponent, xsdFeature, "id");
+ if (isID != null && eStructuralFeature instanceof EAttribute)
+ {
+ ((EAttribute)eStructuralFeature).setID("true".equals(isID));
+ }
+ }
+
+ protected void initialize(EAttribute eAttribute, XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ if (XSDConstants.isOrIsDerivedFromID(xsdSimpleTypeDefinition))
+ {
+ eAttribute.setID(true);
+ }
+
+ // If there is no default value but the type has enumeration facets and the value is a primitive...
+ //
+ if (!eAttribute.isMany() &&
+ eAttribute.getDefaultValueLiteral() == null &&
+ xsdSimpleTypeDefinition != null &&
+ xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() != null &&
+ eAttribute.getEType().getDefaultValue() != null &&
+ !(eAttribute.getEType() instanceof EEnum))
+ {
+ // Set the default to the first enumeration's value.
+ //
+ setDefaultValueLiteral
+ (eAttribute,
+ xsdSimpleTypeDefinition.getNormalizedLiteral
+ ((xsdSimpleTypeDefinition.
+ getEffectiveEnumerationFacet().
+ getSimpleTypeDefinition().
+ getEnumerationFacets().
+ get(0)).getLexicalValue()));
+ }
+ }
+
+ // 51210
+ /*
+ public EAnnotation computeParticleConstraints(EClass eClass, Map particleMap, XSDParticle xsdParticle)
+ {
+ EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+
+ if (xsdParticle.getMinOccurs() != 1)
+ {
+ eAnnotation.getDetails().put("minOccurs", Integer.toString(xsdParticle.getMinOccurs()));
+ }
+
+ if (xsdParticle.getMaxOccurs() != 1)
+ {
+ eAnnotation.getDetails().put("maxOccurs", Integer.toString(xsdParticle.getMaxOccurs()));
+ }
+
+ XSDTerm xsdTerm = xsdParticle.getTerm();
+ if (xsdTerm instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup =(XSDModelGroup)xsdTerm;
+ eAnnotation.setSource(xsdModelGroup.getCompositor().toString());
+ for (Iterator i = xsdModelGroup.getParticles().iterator(); i.hasNext(); )
+ {
+ XSDParticle childXSDParticle = (XSDParticle)i.next();
+ EAnnotation childEAnnotation = computeParticleConstraints(eClass, particleMap, childXSDParticle);
+ eAnnotation.getContents().add(childEAnnotation);
+ }
+ }
+ else
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)particleMap.get(xsdParticle);
+ if (eStructuralFeature == null)
+ {
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ eStructuralFeature = extendedMetaData.getElement(eClass, xsdElementDeclaration.getTargetNamespace(), xsdElementDeclaration.getName());
+ if (eStructuralFeature != null && xsdElementDeclaration.getTypeDefinition() != null)
+ {
+ EClassifier type = getEClassifier(xsdElementDeclaration.getTypeDefinition());
+ if (type != eStructuralFeature.getEType() && type != null)
+ {
+ eAnnotation.getReferences().add(type);
+ }
+ }
+ }
+ else
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm;
+ List wildcards = getWildcards(xsdWildcard);
+ for (Iterator i = eClass.getEAllStructuralFeatures().iterator(); i.hasNext(); )
+ {
+ EStructuralFeature feature = (EStructuralFeature)i.next();
+ List featureWildcards = extendedMetaData.getWildcards(feature);
+ if (!featureWildcards.isEmpty() && BasicExtendedMetaData.isSubset(wildcards, featureWildcards) && !particleMap.containsKey(xsdParticle))
+ {
+ particleMap.put(xsdParticle, feature);
+ eStructuralFeature = feature;
+ break;
+ }
+ }
+ }
+ }
+ if (eStructuralFeature != null)
+ {
+ eAnnotation.getReferences().add(0, eStructuralFeature);
+ }
+ }
+ return eAnnotation;
+ }
+ */
+
+ public static class EffectiveOccurrence
+ {
+ public EffectiveOccurrence(int minOccurs, int maxOccurs, XSDParticle xsdParticle, XSDModelGroup xsdModelGroup)
+ {
+ this.minOccurs = minOccurs;
+ this.maxOccurs = maxOccurs;
+ this.xsdParticle = xsdParticle;
+ this.xsdModelGroup = xsdModelGroup;
+ }
+
+ public int minOccurs;
+ public int maxOccurs;
+ public XSDParticle xsdParticle;
+ public XSDModelGroup xsdModelGroup;
+ }
+
+ public List<EffectiveOccurrence> collectParticles(XSDParticle xsdParticle)
+ {
+ List<EffectiveOccurrence> result = new ArrayList<EffectiveOccurrence>();
+ collectParticlesHelper(result, xsdParticle, 1, 1, null);
+ return result;
+ }
+
+ public void collectParticlesHelper(List<EffectiveOccurrence> result, XSDParticle xsdParticle, int minOccurs, int maxOccurs, XSDModelGroup target)
+ {
+ int particleMaxOccurs = xsdParticle.getMaxOccurs();
+ int effectiveMinOccurs = minOccurs * xsdParticle.getMinOccurs();
+ int effectiveMaxOccurs = maxOccurs == -1 || particleMaxOccurs == -1 ? -1 : maxOccurs * particleMaxOccurs;
+
+ XSDTerm xsdTerm = xsdParticle.getTerm();
+ if (xsdTerm instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdTerm;
+ List<XSDParticle> particles = xsdModelGroup.getParticles();
+ if (particles.size() == 0 ||
+ xsdModelGroup.getContainer() instanceof XSDModelGroupDefinition &&
+ ((XSDModelGroupDefinition)xsdModelGroup.getContainer()).isCircular())
+ {
+ return;
+ }
+ else
+ {
+ boolean isIgnored =
+ effectiveMaxOccurs == 1 ||
+ particles.size() == 1 && particles.get(0).getTerm() instanceof XSDModelGroup;
+
+ String featureMapName = getEcoreAttribute(xsdParticle, "name");
+ if (featureMapName == null)
+ {
+ featureMapName = getEcoreAttribute(xsdParticle, "featureMap");
+ if (featureMapName == null)
+ {
+ featureMapName = getEcoreAttribute(xsdTerm, "name");
+ if (featureMapName == null)
+ {
+ featureMapName = getEcoreAttribute(xsdTerm, "featureMap");
+ }
+ }
+ }
+
+ if ("".equals(featureMapName))
+ {
+ isIgnored = true;
+ }
+ else if (featureMapName != null)
+ {
+ isIgnored = false;
+ }
+ else if (target != null)
+ {
+ isIgnored = true;
+ }
+
+ if (!isIgnored)
+ {
+ EffectiveOccurrence effectiveOccurrence = new EffectiveOccurrence(effectiveMinOccurs, effectiveMaxOccurs, xsdParticle, null);
+ result.add(effectiveOccurrence);
+ target = xsdModelGroup;
+ }
+
+ if (xsdModelGroup.getCompositor() == XSDCompositor.CHOICE_LITERAL)
+ {
+ effectiveMinOccurs = 0;
+ }
+ for (XSDParticle childXSDParticle : ((XSDModelGroup)xsdTerm).getParticles())
+ {
+ collectParticlesHelper(result, childXSDParticle, effectiveMinOccurs, effectiveMaxOccurs, target);
+ }
+ }
+ }
+ else
+ {
+ EffectiveOccurrence effectiveOccurrence = new EffectiveOccurrence(effectiveMinOccurs, effectiveMaxOccurs, xsdParticle, target);
+ result.add(effectiveOccurrence);
+ }
+ }
+
+ protected void fixXMLName(EClassifier eClassifier)
+ {
+ EDataType objectType = (EDataType)typeToTypeObjectMap.get(eClassifier);
+ if (objectType != null)
+ {
+ extendedMetaData.setName(objectType, extendedMetaData.getName(eClassifier) + ":Object");
+ extendedMetaData.setBaseType(objectType, (EDataType)eClassifier);
+ }
+
+ if (eClassifier instanceof EDataType)
+ {
+ EDataType eDataType = (EDataType)eClassifier;
+ EDataType baseType = extendedMetaData.getBaseType(eDataType);
+ if (baseType != null && extendedMetaData.getName(baseType).endsWith("_._base"))
+ {
+ extendedMetaData.setName(baseType, extendedMetaData.getName(eClassifier) + "_._base");
+ extendedMetaData.setBaseType(eDataType, baseType);
+ fixXMLName(baseType);
+ }
+
+ EDataType itemType = extendedMetaData.getItemType(eDataType);
+ if (itemType != null && extendedMetaData.getName(itemType).endsWith("_._item"))
+ {
+ extendedMetaData.setName(itemType, extendedMetaData.getName(eClassifier) + "_._item");
+ extendedMetaData.setItemType(eDataType, itemType);
+ fixXMLName(itemType);
+ }
+
+ List<EDataType> memberTypes = extendedMetaData.getMemberTypes(eDataType);
+ if (!memberTypes.isEmpty())
+ {
+ for (ListIterator<EDataType> i = memberTypes.listIterator(); i.hasNext(); )
+ {
+ EDataType memberType = i.next();
+ if (extendedMetaData.getName(memberType).endsWith("_._member_._" + i.previousIndex()))
+ {
+ extendedMetaData.setName(memberType, extendedMetaData.getName(eClassifier) + "_._member_._" + i.previousIndex());
+ fixXMLName(memberType);
+ }
+ }
+ extendedMetaData.setMemberTypes(eDataType, memberTypes);
+ }
+ }
+ else
+ {
+ EStructuralFeature simpleFeature = extendedMetaData.getSimpleFeature((EClass)eClassifier);
+ if (simpleFeature != null && extendedMetaData.getName(simpleFeature.getEType()).endsWith("_._base"))
+ {
+ EDataType baseType = (EDataType)simpleFeature.getEType();
+ extendedMetaData.setName(baseType, extendedMetaData.getName(eClassifier) + "_._base");
+ fixXMLName(baseType);
+ }
+ }
+ }
+
+ protected void resolveNameConflicts()
+ {
+ for (EPackage ePackage : targetNamespaceToEPackageMap.values())
+ {
+ Map<String, EClassifier> eClassifierMap = new HashMap<String, EClassifier>();
+ for (EClassifier eClassifier : ePackage.getEClassifiers())
+ {
+ EClassifier otherEClassifier = eClassifierMap.get(eClassifier.getName().toLowerCase());
+ if (otherEClassifier != null)
+ {
+ resolveNameConflict(eClassifierMap, eClassifier, "");
+ }
+ eClassifierMap.put(eClassifier.getName().toLowerCase(), eClassifier);
+
+ String xmlName = extendedMetaData.getName(eClassifier);
+ otherEClassifier = extendedMetaData.getType(ePackage, xmlName);
+ if (otherEClassifier != eClassifier)
+ {
+ if (xmlName.endsWith("_._type"))
+ {
+ String baseName = xmlName.substring(0, xmlName.length() - 7);
+ int index = 1;
+ while (extendedMetaData.getType(ePackage, baseName + "_._" + index + "_._type") != null)
+ {
+ ++index;
+ }
+ extendedMetaData.setName(eClassifier, baseName + "_._" + index + "_._type");
+ fixXMLName(eClassifier);
+ }
+ }
+
+ if (eClassifier instanceof EClass)
+ {
+ Map<String, EStructuralFeature> eFeatureMap = new HashMap<String, EStructuralFeature>();
+ for (EStructuralFeature eStructuralFeature : ((EClass)eClassifier).getEAllStructuralFeatures())
+ {
+ resolveNameConflict(eFeatureMap, eStructuralFeature, "");
+ eFeatureMap.put(eStructuralFeature.getName().toLowerCase(), eStructuralFeature);
+ }
+ }
+ else if (eClassifier instanceof EEnum)
+ {
+ Map<String, EEnumLiteral> eLiteralMap = new HashMap<String, EEnumLiteral>();
+ for (EEnumLiteral eEnumLiteral : ((EEnum)eClassifier).getELiterals())
+ {
+ String literal = eEnumLiteral.getLiteral();
+ resolveNameConflict(eLiteralMap, eEnumLiteral, "");
+ if (!literal.equals(eEnumLiteral.getLiteral()))
+ {
+ eEnumLiteral.setLiteral(literal);
+ }
+ eLiteralMap.put(eEnumLiteral.getName().toLowerCase(), eEnumLiteral);
+ }
+ }
+ }
+ }
+ }
+
+ protected void resolveNameConflict(Map<String, ? extends ENamedElement> map, ENamedElement eNamedElement, String suffix)
+ {
+ String name = eNamedElement.getName();
+ if (!name.endsWith(suffix))
+ {
+ name += suffix;
+ }
+ if (map.containsKey(name.toLowerCase()))
+ {
+ int index = 0;
+ while (map.containsKey(name.toLowerCase() + ++index))
+ {
+ // Loop
+ }
+ eNamedElement.setName(name + index);
+ }
+ else
+ {
+ eNamedElement.setName(name);
+ }
+ }
+
+ protected static final Class<?> ecoreResourceFactoryImplClass;
+ static
+ {
+ Class<?> theEcoreResourceFactoryImplClass = null;
+ try
+ {
+ theEcoreResourceFactoryImplClass =
+ CommonPlugin.loadClass("org.eclipse.emf.ecore.xmi", "org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl");
+ }
+ catch (Exception exception)
+ {
+ // Ignore.
+ }
+ ecoreResourceFactoryImplClass = theEcoreResourceFactoryImplClass;
+ }
+
+ protected ResourceSet createResourceSet()
+ {
+ ResourceSet result = new ResourceSetImpl();
+ result.getLoadOptions().put(XSDResourceImpl.XSD_TRACK_LOCATION, Boolean.TRUE);
+ Map<String, Object> extensionToFactoryMap = result.getResourceFactoryRegistry().getExtensionToFactoryMap();
+ extensionToFactoryMap.put("wsdl", new XSDResourceFactoryImpl());
+ extensionToFactoryMap.put("xsd", new XSDResourceFactoryImpl());
+ if (ecoreResourceFactoryImplClass != null)
+ {
+ try
+ {
+ extensionToFactoryMap.put("ecore", ecoreResourceFactoryImplClass.getDeclaredConstructor().newInstance());
+ }
+ catch (Exception exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ return result;
+ }
+
+ public Collection<Resource> generateResources(URI uri)
+ {
+ return generateResources(Collections.singleton(uri));
+ }
+
+ public Collection<Resource> generateResources(Collection<URI> uris)
+ {
+ ResourceSet resourceSet = createResourceSet();
+ List<XSDSchema> xsdSchemas = new ArrayList<XSDSchema>();
+ for (URI uri : uris)
+ {
+ Resource resource = resourceSet.getResource(uri, true);
+ for (Object object : resource.getContents())
+ {
+ if (object instanceof XSDSchema)
+ {
+ xsdSchemas.add((XSDSchema)object);
+ }
+ }
+ }
+
+ for (XSDSchema xsdSchema : xsdSchemas)
+ {
+ generate(xsdSchema);
+ }
+
+ for (EPackage ePackage : targetNamespaceToEPackageMap.values())
+ {
+ if (ePackage.eResource() == null)
+ {
+ Resource ecoreResource = resourceSet.createResource(URI.createURI("*.ecore"));
+ ecoreResource.setURI(URI.createURI(ePackage.getNsURI()));
+ ecoreResource.getContents().add(ePackage);
+ }
+ }
+
+ return new ArrayList<Resource>(resourceSet.getResources());
+ }
+
+ public EStructuralFeature getEStructuralFeature(XSDFeature xsdFeature)
+ {
+ if ("true".equals(getEcoreAttribute(xsdFeature, "ignore"))) return null;
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)xsdComponentToEModelElementMap.get(xsdFeature);
+ if (reuseRegisteredPackages && eStructuralFeature == null)
+ {
+ String namespace = xsdFeature.getTargetNamespace();
+ String name = xsdFeature.getName();
+ eStructuralFeature =
+ xsdFeature instanceof XSDElementDeclaration ?
+ extendedMetaData.getElement(namespace, name) :
+ extendedMetaData.getAttribute(namespace, name);
+ if (eStructuralFeature != null)
+ {
+ map(xsdFeature, eStructuralFeature);
+ return eStructuralFeature;
+ }
+ }
+ if (eStructuralFeature == null)
+ {
+ EPackage ePackage = getEPackage(xsdFeature);
+ EClass documentEClass = extendedMetaData.getDocumentRoot(ePackage);
+ if (documentEClass == null)
+ {
+ // documentEClass = extendedMetaData.demandDocumentRoot(ePackage);
+ documentEClass = EcoreFactory.eINSTANCE.createEClass();
+ String name = getEcoreAttribute(xsdFeature.getSchema(), "documentRoot");
+ if (name == null)
+ {
+ name = "DocumentRoot";
+ }
+ documentEClass.setName(name);
+
+ extendedMetaData.setDocumentRoot(documentEClass);
+
+ ePackage.getEClassifiers().add(documentEClass);
+
+ createFeature
+ (documentEClass,
+ "mixed",
+ EcorePackage.Literals.EFEATURE_MAP_ENTRY,
+ null,
+ 0,
+ -1);
+
+ EStructuralFeature xmlnsPrefixMapFeature =
+ createFeature
+ (documentEClass,
+ "xMLNSPrefixMap",
+ EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY,
+ null,
+ 0,
+ -1);
+ extendedMetaData.setName(xmlnsPrefixMapFeature, "xmlns:prefix");
+
+ EStructuralFeature xsiSchemaLocationMapFeature =
+ createFeature
+ (documentEClass,
+ "xSISchemaLocation",
+ EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY,
+ null,
+ 0,
+ -1);
+ extendedMetaData.setName(xsiSchemaLocationMapFeature, "xsi:schemaLocation");
+ }
+
+ String name = getEcoreAttribute(xsdFeature, "name");
+ if (name == null)
+ {
+ name= validName(xsdFeature.getName(), true);
+ }
+
+ if (xsdFeature instanceof XSDElementDeclaration)
+ {
+ // Mark the bound as unspecified so that it won't be considered many
+ // but can nevertheless be recognized as being unspecified and perhaps still be treat as many.
+ //
+ EStructuralFeature result =
+ createFeature(documentEClass, (XSDElementDeclaration)xsdFeature, name, xsdFeature, 0, ETypedElement.UNSPECIFIED_MULTIPLICITY);
+
+ result.setDerived(true);
+ result.setTransient(true);
+ result.setVolatile(true);
+ return result;
+ }
+ else
+ {
+ EStructuralFeature result =
+ createFeature(documentEClass, (XSDAttributeDeclaration)xsdFeature, name, xsdFeature, false);
+ return result;
+ }
+ }
+
+ return eStructuralFeature;
+ }
+
+ public Collection<EObject> generate(URI uri)
+ {
+ ResourceSet resourceSet = createResourceSet();
+ Resource resource = resourceSet.getResource(uri, true);
+ List<XSDSchema> xsdSchemas = new ArrayList<XSDSchema>();
+ for (Object object : resource.getContents())
+ {
+ if (object instanceof XSDSchema)
+ {
+ xsdSchemas.add((XSDSchema)object);
+ }
+ }
+
+ for (XSDSchema xsdSchema : xsdSchemas)
+ {
+ generate(xsdSchema);
+ }
+
+ List<EObject> result = new ArrayList<EObject>(targetNamespaceToEPackageMap.values());
+ result.remove(XMLNamespacePackage.eINSTANCE);
+ if (mapper != null)
+ {
+ result.add(mapper.getRoot());
+ }
+ return result;
+ }
+
+ public Collection<Object> generate(Collection<URI> uris)
+ {
+ if (simpleDiagnostics == null)
+ {
+ simpleDiagnostics = new ArrayList<List<String>>();
+ }
+ ResourceSet resourceSet = createResourceSet();
+ List<XSDSchema> xsdSchemas = new ArrayList<XSDSchema>();
+ for (URI uri : uris)
+ {
+ Resource resource = resourceSet.getResource(uri, true);
+ for (Object object : resource.getContents())
+ {
+ if (object instanceof XSDSchema)
+ {
+ xsdSchemas.add((XSDSchema)object);
+ }
+ }
+ }
+
+ for (XSDSchema xsdSchema : xsdSchemas)
+ {
+ generate(xsdSchema);
+ }
+
+ List<Object> result = new ArrayList<Object>(targetNamespaceToEPackageMap.values());
+ result.remove(XMLNamespacePackage.eINSTANCE);
+ if (mapper != null)
+ {
+ result.add(mapper.getRoot());
+ }
+
+ result.add(simpleDiagnostics);
+ return result;
+ }
+
+ public void generate(XSDSchema xsdSchema)
+ {
+ this.rootSchema = xsdSchema;
+ if (xsdSchemas.add(xsdSchema))
+ {
+ addInput(xsdSchema);
+ validate(xsdSchema);
+ }
+
+ Collection<XSDElementDeclaration> visitedElementDeclarations = new ArrayList<XSDElementDeclaration>();
+ Collection<XSDElementDeclaration> elementDeclarations = new ArrayList<XSDElementDeclaration>(xsdSchema.getElementDeclarations());
+
+ Collection<XSDAttributeDeclaration> visitedAttributeDeclarations = new ArrayList<XSDAttributeDeclaration>();
+ Collection<XSDAttributeDeclaration> attributeDeclarations = new ArrayList<XSDAttributeDeclaration>(xsdSchema.getAttributeDeclarations());
+
+ Collection<XSDTypeDefinition> visitedTypeDefinitions = new ArrayList<XSDTypeDefinition>();
+ Collection<XSDTypeDefinition> typeDefinitions = new ArrayList<XSDTypeDefinition>(xsdSchema.getTypeDefinitions());
+
+ while (!elementDeclarations.isEmpty() || !attributeDeclarations.isEmpty() || !typeDefinitions.isEmpty())
+ {
+ for (XSDElementDeclaration xsdElementDeclaration : elementDeclarations)
+ {
+ getEStructuralFeature(xsdElementDeclaration);
+ }
+ visitedElementDeclarations.addAll(elementDeclarations);
+ elementDeclarations = new ArrayList<XSDElementDeclaration>(xsdSchema.getElementDeclarations());
+ elementDeclarations.removeAll(visitedElementDeclarations);
+
+ for (XSDAttributeDeclaration xsdAttributeDeclaration : attributeDeclarations)
+ {
+ if (!XSDConstants.isSchemaInstanceNamespace(xsdAttributeDeclaration.getTargetNamespace()))
+ {
+ getEStructuralFeature(xsdAttributeDeclaration);
+ }
+ }
+ visitedAttributeDeclarations.addAll(attributeDeclarations);
+ attributeDeclarations = new ArrayList<XSDAttributeDeclaration>(xsdSchema.getAttributeDeclarations());
+ attributeDeclarations.removeAll(visitedAttributeDeclarations);
+
+ for (XSDTypeDefinition xsdTypeDefinition : typeDefinitions)
+ {
+ getEClassifier(xsdTypeDefinition);
+ }
+ visitedTypeDefinitions.addAll(typeDefinitions);
+ typeDefinitions = new ArrayList<XSDTypeDefinition>(xsdSchema.getTypeDefinitions());
+ typeDefinitions.removeAll(visitedTypeDefinitions);
+ }
+
+ resolveNameConflicts();
+
+ for (XSDSchema generatedXSDSchema : xsdSchemas)
+ {
+ EPackage ePackage = targetNamespaceToEPackageMap.get(generatedXSDSchema.getTargetNamespace());
+ if (ePackage != null)
+ {
+ String packageName= getEcoreAttribute(generatedXSDSchema, "package");
+ if (packageName != null)
+ {
+ ePackage.setName(packageName);
+ }
+ String packageNsPrefix= getEcoreAttribute(generatedXSDSchema, "nsPrefix");
+ if (packageNsPrefix != null)
+ {
+ ePackage.setNsPrefix(packageNsPrefix);
+ }
+ }
+ }
+
+ for (Map.Entry<EReference, String> entry : eReferenceToOppositeNameMap.entrySet())
+ {
+ EReference eReference = entry.getKey();
+ String opposite = entry.getValue();
+ EClass oppositeEClass = eReference.getEReferenceType();
+ if (eReference.getEOpposite() == null)
+ {
+ EStructuralFeature eOppositeFeature = oppositeEClass.getEStructuralFeature(opposite);
+
+ // Match by XML name if this fails.
+ if (eOppositeFeature == null)
+ {
+ for(EStructuralFeature feature : oppositeEClass.getEAllStructuralFeatures())
+ {
+ if (opposite.equals(extendedMetaData.getName(feature)))
+ {
+ eOppositeFeature = feature;
+ break;
+ }
+ }
+ }
+
+ if (eOppositeFeature instanceof EReference)
+ {
+ EReference eOpposite = (EReference)eOppositeFeature;
+ eOpposite.setEOpposite(eReference);
+ eReference.setEOpposite(eOpposite);
+ }
+ }
+
+ if (eReference.getEOpposite() == null && eReference.isContainment())
+ {
+ EReference eOpposite = EcoreFactory.eINSTANCE.createEReference();
+ eOpposite.setName(opposite);
+ eOpposite.setEType(eReference.getEContainingClass());
+ eOpposite.setLowerBound(0);
+ eOpposite.setEOpposite(eReference);
+ eReference.setEOpposite(eOpposite);
+ eOpposite.setTransient(true);
+ oppositeEClass.getEStructuralFeatures().add(eOpposite);
+ }
+ }
+
+ eReferenceToOppositeNameMap.clear();
+
+ for (Map.Entry<EReference, List<String>> entry : eReferenceToKeyNamesMap.entrySet())
+ {
+ EReference eReference = entry.getKey();
+ EClass eReferenceType = eReference.getEReferenceType();
+ for (String key : entry.getValue())
+ {
+ EStructuralFeature eKey = eReferenceType.getEStructuralFeature(key);
+ // Match by XML name if this fails.
+ if (eKey == null)
+ {
+ for(EStructuralFeature feature : eReferenceType.getEAllStructuralFeatures())
+ {
+ if (key.equals(extendedMetaData.getName(feature)))
+ {
+ eKey = feature;
+ break;
+ }
+ }
+ }
+ if (eKey instanceof EAttribute)
+ {
+ eReference.getEKeys().add((EAttribute)eKey);
+ }
+ }
+ }
+
+ eReferenceToKeyNamesMap.clear();
+ }
+
+ protected String getEcoreAttribute(XSDConcreteComponent xsdConcreteComponent1, XSDConcreteComponent xsdConcreteComponent2, String attribute)
+ {
+ String result = getEcoreAttribute(xsdConcreteComponent1, attribute);
+ if (result == null)
+ {
+ result = getEcoreAttribute(xsdConcreteComponent2, attribute);
+ }
+ return result;
+ }
+
+ protected String getEcoreAttribute(XSDConcreteComponent xsdConcreteComponent, String attribute)
+ {
+ if (xsdConcreteComponent == null)
+ {
+ return null;
+ }
+ else
+ {
+ Element element = xsdConcreteComponent.getElement();
+ return getEcoreAttribute(element, attribute);
+ }
+ }
+
+ protected String getEcoreAttribute(Element element, String attribute)
+ {
+ return
+ element != null && element.hasAttributeNS(EcorePackage.eNS_URI, attribute) ?
+ element.getAttributeNS(EcorePackage.eNS_URI, attribute) :
+ null;
+ }
+
+ protected List<EGenericType> getGenericTypes(XSDConcreteComponent xsdConcreteComponent, Element element, EModelElement context, String value)
+ {
+ if (value == null || element == null)
+ {
+ return Collections.emptyList();
+ }
+ else
+ {
+ List<EGenericType> result = new ArrayList<EGenericType>();
+ value = value.replace('{', '<').replace('}', '>');
+ int start = 0;
+ int nesting = 0;
+ for (int i = 0, length = value.length(); i < length; ++i)
+ {
+ char character = value.charAt(i);
+ if (character == '<')
+ {
+ ++nesting;
+ }
+ else if (character == '>')
+ {
+ --nesting;
+ }
+ if (nesting == 0 && Character.isWhitespace(character))
+ {
+ EGenericType eGenericType = getGenericType(xsdConcreteComponent, element, context, value.substring(start, i).trim());
+ if (eGenericType != null)
+ {
+ result.add(eGenericType);
+ }
+ start = i + 1;
+ }
+ }
+ EGenericType eGenericType = getGenericType(xsdConcreteComponent, element, context, value.substring(start).trim());
+ if (eGenericType != null)
+ {
+ result.add(eGenericType);
+ }
+ return result;
+ }
+ }
+
+ protected EGenericType getGenericType(XSDConcreteComponent xsdConcreteComponent, Element element, EModelElement context, String value)
+ {
+ if (value != null)
+ {
+ value = value.replace('{', '<').replace('}', '>');
+ Diagnostic diagnostic = eGenericTypeBuilder.parseInstanceTypeName(value);
+ if (diagnostic.getSeverity() == Diagnostic.OK)
+ {
+ EGenericType eGenericType = (EGenericType)diagnostic.getData().get(0);
+ resolveGenericType(xsdConcreteComponent, element, context, eGenericType);
+ return eGenericType;
+ }
+ }
+ return null;
+ }
+
+ protected void resolveGenericType(XSDConcreteComponent xsdConcreteComponent, Element element, EModelElement context, EGenericType eGenericType)
+ {
+ EClassifier eClassifier = eGenericType.getEClassifier();
+ if (eClassifier != null)
+ {
+ String instanceTypeName = eClassifier.getInstanceTypeName();
+ String uri = XSDConstants.lookupQName(element, instanceTypeName);
+ boolean done = false;
+ if (uri.indexOf('#') == -1)
+ {
+ // Search the local scope for a resolution of the type parameter name.
+ //
+ LOOP:
+ for (EObject eObject = context; eObject != null; eObject = eObject.eContainer())
+ {
+ EList<ETypeParameter> eTypeParameters = null;
+ if (eObject instanceof EOperation)
+ {
+ eTypeParameters = ((EOperation)eObject).getETypeParameters();
+ }
+ else if (eObject instanceof EClass)
+ {
+ eTypeParameters = ((EClass)eObject).getETypeParameters();
+ }
+
+ // If we've found a thing with type parameters, search them for a match.
+ //
+ if (eTypeParameters != null)
+ {
+ for (ETypeParameter eTypeParameter : eTypeParameters)
+ {
+ if (uri.equals(eTypeParameter.getName()))
+ {
+ // If we find a match, make this generic type be for this type parameter,
+ // and then stop the whole process.
+ //
+ eGenericType.setEClassifier(null);
+ eGenericType.setETypeParameter(eTypeParameter);
+ done = true;
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+ if (!done)
+ {
+ XSDTypeDefinition xsdTypeDefinition = xsdConcreteComponent.resolveTypeDefinitionURI(uri);
+ if (xsdTypeDefinition.getContainer() != null)
+ {
+ eGenericType.setEClassifier(getEClassifier(xsdTypeDefinition));
+ done = true;
+ }
+ }
+ if (done)
+ {
+ for (EGenericType eTypeArgument : eGenericType.getETypeArguments())
+ {
+ resolveGenericType(xsdConcreteComponent, element, context, eTypeArgument);
+ }
+ }
+ else
+ {
+ eGenericType.setEClassifier(EcorePackage.Literals.EOBJECT);
+ eGenericType.getETypeArguments().clear();
+ }
+ }
+ else
+ {
+ ETypeParameter eTypeParameter = eGenericType.getETypeParameter();
+ if (eTypeParameter != null)
+ {
+ // We should not ever hit this case.
+ }
+ else
+ {
+ EGenericType eUpperBound = eGenericType.getEUpperBound();
+ if (eUpperBound != null)
+ {
+ resolveGenericType(xsdConcreteComponent, element, context, eUpperBound);
+ }
+ else
+ {
+ EGenericType eLowerBound = eGenericType.getELowerBound();
+ if (eLowerBound != null)
+ {
+ resolveGenericType(xsdConcreteComponent, element, context, eLowerBound);
+ }
+ }
+ }
+ }
+ }
+
+ protected XSDTypeDefinition getEcoreTypeQNameAttribute(XSDConcreteComponent xsdConcreteComponent, String attribute)
+ {
+ Element element = xsdConcreteComponent.getElement();
+ return element == null ? null : getEcoreTypeQNameAttribute(xsdConcreteComponent, element, EcorePackage.eNS_URI, attribute);
+ }
+
+ protected XSDTypeDefinition getEcoreTypeQNameAttribute
+ (XSDConcreteComponent xsdConcreteComponent, Element element, String namespace, String attribute)
+ {
+ if (element != null && element.hasAttributeNS(namespace, attribute))
+ {
+ String qName = element.getAttributeNS(namespace, attribute);
+ XSDTypeDefinition result = xsdConcreteComponent.resolveTypeDefinitionURI(XSDConstants.lookupQName(element, qName));
+ if (result.getContainer() != null)
+ {
+ return result;
+ }
+ }
+
+ return null;
+ }
+
+ protected List<XSDTypeDefinition> getEcoreTypeQNamesAttribute(XSDConcreteComponent xsdConcreteComponent, String attribute)
+ {
+ Element element = xsdConcreteComponent.getElement();
+ return
+ element == null ?
+ Collections.<XSDTypeDefinition>emptyList() :
+ getEcoreTypeQNamesAttribute(xsdConcreteComponent, element, EcorePackage.eNS_URI, attribute);
+ }
+
+ protected List<XSDTypeDefinition> getEcoreTypeQNamesAttribute
+ (XSDConcreteComponent xsdConcreteComponent, Element element, String namespace, String attribute)
+ {
+ List<XSDTypeDefinition> result = new ArrayList<XSDTypeDefinition>();
+ if (element != null && element.hasAttributeNS(namespace, attribute))
+ {
+ for (StringTokenizer stringTokenizer = new StringTokenizer(element.getAttributeNS(namespace, attribute)); stringTokenizer.hasMoreTokens(); )
+ {
+ String qName = stringTokenizer.nextToken();
+ XSDTypeDefinition xsdTypeDefinition = xsdConcreteComponent.resolveTypeDefinitionURI(XSDConstants.lookupQName(element, qName));
+ if (xsdTypeDefinition.getContainer() != null)
+ {
+ result.add(xsdTypeDefinition);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ public static <T extends ENamedElement> List<T> sortNamedComponents(Collection<T> eNamedElements)
+ {
+ ENamedElement [] objects = new ENamedElement [eNamedElements.size()];
+ eNamedElements.toArray(objects);
+ Arrays.sort(objects, Comparator.INSTANCE);
+ @SuppressWarnings("unchecked") List<T> result = (List<T>)Arrays.asList(objects);
+ return result;
+ }
+
+ public static <T extends ENamedElement> void addToSortedList(List<T> eNamedElements, T eNamedElement)
+ {
+ int index = Collections.binarySearch(eNamedElements, eNamedElement, Comparator.INSTANCE);
+ if (index < 0)
+ {
+ eNamedElements.add(-(index + 1), eNamedElement);
+ }
+ else if (eNamedElements.get(index) != eNamedElement)
+ {
+ eNamedElements.add(index, eNamedElement);
+ }
+ }
+
+ public static class Comparator implements java.util.Comparator<ENamedElement>
+ {
+ public static Comparator INSTANCE = new Comparator();
+
+ protected XSDPlugin.StringComparator collator = XSDPlugin.INSTANCE.getComparator();
+
+ public Comparator()
+ {
+ super();
+ }
+
+ @Override
+ public boolean equals(Object that)
+ {
+ return this == that;
+ }
+
+ public int compare(ENamedElement o1, ENamedElement o2)
+ {
+ ENamedElement eNamedElement1 = o1;
+ ENamedElement eNamedElement2 = o2;
+ String name1 = eNamedElement1.getName();
+ String name2 = eNamedElement2.getName();
+ if (name1 == null && name2 == null)
+ {
+ return 0;
+ }
+ else if (name1 == null)
+ {
+ return 1;
+ }
+ else if (name2 == null)
+ {
+ return -1;
+ }
+ else
+ {
+ int result = collator.compare(name1, name2);
+ return result;
+ }
+ }
+ }
+
+ public static boolean isLocalReferenceType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ while (xsdSimpleTypeDefinition != null)
+ {
+ if (XSDConstants.isAnySimpleType(xsdSimpleTypeDefinition))
+ {
+ return false;
+ }
+
+ String name = xsdSimpleTypeDefinition.getName();
+ if (XSDConstants.isSchemaForSchemaNamespace(xsdSimpleTypeDefinition.getTargetNamespace()) &&
+ ("IDREF".equals(name) || "IDREFS".equals(name)))
+ {
+ return true;
+ }
+
+ xsdSimpleTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ }
+
+ return false;
+ }
+
+ protected Transformer transformer;
+
+ protected String getBody(Element element)
+ {
+ for (Node node = element.getFirstChild(); node != null; node = node.getNextSibling())
+ {
+ switch (node.getNodeType())
+ {
+ case Node.TEXT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ {
+ break;
+ }
+ default:
+ {
+ String body = serialize(element);
+ int start = body.indexOf("?>");
+ start = body.indexOf(">", start + 2);
+ int end = body.lastIndexOf("</");
+ String result = end == -1 ? null : body.substring(start + 1, end);
+ return result;
+ }
+ }
+ }
+ return getText(element);
+ }
+
+ protected String serialize(Element element)
+ {
+ if (transformer == null)
+ {
+ try
+ {
+ transformer = new DefaultJAXPConfiguration().createTransformer("UTF-8");
+ }
+ catch (TransformerException exeption)
+ {
+ throw new RuntimeException(exeption);
+ }
+ }
+
+ StringWriter writer = new StringWriter();
+ try
+ {
+ transformer.transform(new DOMSource(element), new StreamResult(writer));
+ }
+ catch (TransformerException exception)
+ {
+ throw new RuntimeException(exception);
+ }
+ return writer.toString();
+ }
+
+ /**
+ * Handle difference lexical representations for default values,
+ * in particular, positive and negative infinity for float and double.
+ * @since 2.8
+ */
+ protected void setDefaultValueLiteral(EAttribute eAttribute, String defaultValue)
+ {
+ EDataType eAttributeType = eAttribute.getEAttributeType();
+ if (eAttributeType != null)
+ {
+ String instanceTypeName = eAttributeType.getInstanceTypeName();
+ if (instanceTypeName == "java.lang.Float" ||
+ instanceTypeName == "java.lang.Double" ||
+ instanceTypeName == "float" ||
+ instanceTypeName == "double")
+ {
+ if ("INF".equals(defaultValue))
+ {
+ defaultValue = "Infinity";
+ }
+ else if ("-INF".equals(defaultValue))
+ {
+ defaultValue = "-Infinity";
+ }
+ }
+ }
+ eAttribute.setDefaultValueLiteral(defaultValue);
+ }
+
+ protected void setAnnotations(EModelElement eModelElement, XSDConcreteComponent xsdComponent)
+ {
+ List<XSDAnnotation> xsdAnnotations = new ArrayList<XSDAnnotation>();
+ List<Element> elements = new ArrayList<Element>();
+ boolean append = true;
+
+ if (xsdComponent instanceof XSDParticle)
+ {
+ xsdComponent = ((XSDParticle)xsdComponent).getContent();
+ }
+
+ if (xsdComponent != null)
+ {
+ elements.add(xsdComponent.getElement());
+ }
+
+ if (xsdComponent instanceof XSDAttributeDeclaration)
+ {
+ xsdAnnotations.add(((XSDAttributeDeclaration)xsdComponent).getAnnotation());
+ }
+ else if (xsdComponent instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdComponent;
+ xsdAnnotations.add(xsdAttributeUse.getContent().getAnnotation());
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ xsdAnnotations.add(xsdAttributeDeclaration.getAnnotation());
+ elements.add(xsdAttributeDeclaration.getElement());
+ append = false;
+ }
+ else if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent;
+ xsdAnnotations.add(xsdElementDeclaration.getAnnotation());
+ if (xsdElementDeclaration.isElementDeclarationReference())
+ {
+ XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
+ xsdAnnotations.add(resolvedElementDeclaration.getAnnotation());
+ elements.add(resolvedElementDeclaration.getElement());
+ }
+ append = false;
+ }
+ else if (xsdComponent instanceof XSDAttributeGroupDefinition)
+ {
+ xsdAnnotations.add(((XSDAttributeGroupDefinition)xsdComponent).getAnnotation());
+ }
+ else if (xsdComponent instanceof XSDFacet)
+ {
+ xsdAnnotations.add(((XSDFacet)xsdComponent).getAnnotation());
+ }
+ else if (xsdComponent instanceof XSDIdentityConstraintDefinition)
+ {
+ xsdAnnotations.add(((XSDIdentityConstraintDefinition)xsdComponent).getAnnotation());
+ }
+ else if (xsdComponent instanceof XSDModelGroup)
+ {
+ xsdAnnotations.add(((XSDModelGroup)xsdComponent).getAnnotation());
+ }
+ else if (xsdComponent instanceof XSDModelGroupDefinition)
+ {
+ xsdAnnotations.add(((XSDModelGroupDefinition)xsdComponent).getAnnotation());
+ }
+ else if (xsdComponent instanceof XSDSchema)
+ {
+ xsdAnnotations.addAll(((XSDSchema)xsdComponent).getAnnotations());
+ }
+ else if (xsdComponent instanceof XSDTypeDefinition)
+ {
+ xsdAnnotations.addAll(((XSDTypeDefinition)xsdComponent).getAnnotations());
+ }
+ else if (xsdComponent instanceof XSDWildcard)
+ {
+ xsdAnnotations.add(((XSDWildcard)xsdComponent).getAnnotation());
+ }
+
+ boolean first = true;
+ for (XSDAnnotation xsdAnnotation : xsdAnnotations)
+ {
+ if (xsdAnnotation != null && !"true".equals(getEcoreAttribute(xsdAnnotation, "ignore")))
+ {
+ for (Element element : xsdAnnotation.getUserInformation())
+ {
+ if (!"true".equals(getEcoreAttribute(element, "ignore")) && !ignore(element))
+ {
+ String documentationBody = getBody(element);
+ String existingDocumentation = EcoreUtil.getDocumentation(eModelElement);
+ if (existingDocumentation != null)
+ {
+ if (!first && !append)
+ {
+ continue;
+ }
+ documentationBody = existingDocumentation + System.getProperty("line.separator") + documentationBody;
+ }
+ EcoreUtil.setDocumentation(eModelElement, documentationBody);
+ }
+ }
+
+ for (Element element : xsdAnnotation.getApplicationInformation())
+ {
+ if (!"true".equals(getEcoreAttribute(element, "ignore")) && !ignore(element))
+ {
+ String sourceURI = element.hasAttributeNS(null, "source") ? element.getAttributeNS(null, "source") : null;
+ String applicationInformationBody = getBody(element);
+
+ String key = getEcoreAttribute(element, "key");
+ if (key == null)
+ {
+ key = "appinfo";
+ }
+ EAnnotation eAnnotation = eModelElement.getEAnnotation(sourceURI);
+ String existingApplicationInformation =
+ eAnnotation == null ?
+ null :
+ (String)eAnnotation.getDetails().get(key);
+
+ if (existingApplicationInformation != null)
+ {
+ if (!first && !append)
+ {
+ continue;
+ }
+ applicationInformationBody =
+ existingApplicationInformation + System.getProperty("line.separator") + applicationInformationBody;
+ }
+
+ if (eAnnotation == null)
+ {
+ eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ eAnnotation.setSource(sourceURI);
+ eModelElement.getEAnnotations().add(eAnnotation);
+ }
+
+ eAnnotation.getDetails().put(key, applicationInformationBody);
+ }
+ }
+ }
+ first = false;
+ }
+
+ first = true;
+ for (Element element : elements)
+ {
+ if (element != null)
+ {
+ NamedNodeMap attributes = element.getAttributes();
+ for (int j = 0, length = attributes.getLength(); j < length; ++j)
+ {
+ Attr attribute = (Attr)attributes.item(j);
+ if (!ignore(attribute))
+ {
+ String sourceURI = attribute.getNamespaceURI();
+ EAnnotation eAnnotation = eModelElement.getEAnnotation(sourceURI);
+ if (eAnnotation == null)
+ {
+ eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ eAnnotation.setSource(sourceURI);
+ eModelElement.getEAnnotations().add(eAnnotation);
+ }
+ if (first || append || eAnnotation.getDetails().get(attribute.getLocalName()) == null)
+ {
+ eAnnotation.getDetails().put(attribute.getLocalName(), attribute.getValue());
+ }
+ }
+ }
+ }
+ first = false;
+ }
+ }
+
+ protected boolean ignore(Element element)
+ {
+ return
+ EcorePackage.eNS_URI.equals(element.getAttributeNS(null, "source")) &&
+ ("operations".equals(element.getAttributeNS(EcorePackage.eNS_URI, "key")) ||
+ "typeParameters".equals(element.getAttributeNS(EcorePackage.eNS_URI, "key")));
+ }
+
+ protected boolean ignore(Attr attribute)
+ {
+ String namespaceURI = attribute.getNamespaceURI();
+ return
+ namespaceURI == null ||
+ ExtendedMetaData.XMLNS_URI.equals(namespaceURI) ||
+ ExtendedMetaData.XSI_URI.equals(namespaceURI) ||
+ EcorePackage.eNS_URI.equals(namespaceURI);
+ }
+
+ protected void validate(XSDSchema xsdSchema)
+ {
+ for (Object content : xsdSchema.getContents())
+ {
+ if (content instanceof XSDImport)
+ {
+ XSDImport xsdImport = (XSDImport)content;
+ xsdImport.resolveTypeDefinition(xsdImport.getNamespace(), "");
+ }
+ }
+
+ if (simpleDiagnostics != null || diagnostics != null)
+ {
+ xsdSchema.validate();
+ if (!xsdSchema.getAllDiagnostics().isEmpty())
+ {
+ if (simpleDiagnostics != null)
+ {
+ for (XSDDiagnostic xsdDiagnostic : xsdSchema.getAllDiagnostics())
+ {
+ List<String> tuple = new ArrayList<String>();
+ tuple.add(xsdDiagnostic.getSeverity().toString());
+
+ String localizedSeverity = XSDPlugin.INSTANCE.getString("_UI_XSDDiagnosticSeverity_" + xsdDiagnostic.getSeverity());
+ tuple.add
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_DiagnosticFileLineColumn_message",
+ new Object []
+ {
+ localizedSeverity + ": " + xsdDiagnostic.getMessage() + " ",
+ xsdDiagnostic.getLocationURI(),
+ xsdDiagnostic.getLine(),
+ xsdDiagnostic.getColumn()
+ }));
+
+ simpleDiagnostics.add(tuple);
+ }
+ }
+ if (diagnostics != null)
+ {
+ diagnostics.addAll(xsdSchema.getAllDiagnostics());
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/package.html b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/package.html
new file mode 100644
index 0000000..4a092ae
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/ecore/package.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+-->
+</head>
+<body>
+
+
+<p>
+<a name="package_description"></a>
+This provides support for converting bewteen Ecore and XML Schema models.
+</p>
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAnnotationImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAnnotationImpl.java
new file mode 100644
index 0000000..ff1ce08
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAnnotationImpl.java
@@ -0,0 +1,505 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Annotation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDAnnotationImpl#getApplicationInformation <em>Application Information</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAnnotationImpl#getUserInformation <em>User Information</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAnnotationImpl#getAttributes <em>Attributes</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDAnnotationImpl
+ extends XSDComponentImpl
+ implements XSDAnnotation
+{
+ /**
+ * The cached value of the '{@link #getApplicationInformation() <em>Application Information</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getApplicationInformation()
+ * @generated
+ * @ordered
+ */
+ protected EList<Element> applicationInformation;
+
+ /**
+ * The cached value of the '{@link #getUserInformation() <em>User Information</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserInformation()
+ * @generated
+ * @ordered
+ */
+ protected EList<Element> userInformation;
+
+ /**
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<Attr> attributes;
+
+ public static XSDAnnotation createAnnotation(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.ANNOTATION_ELEMENT)
+ {
+ XSDAnnotation xsdAnnotation = XSDFactory.eINSTANCE.createXSDAnnotation();
+ xsdAnnotation.setElement((Element)node);
+ return xsdAnnotation;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDAnnotationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ANNOTATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Element> getApplicationInformation()
+ {
+ if (applicationInformation == null)
+ {
+ applicationInformation = new EDataTypeUniqueEList<Element>(Element.class, this, XSDPackage.XSD_ANNOTATION__APPLICATION_INFORMATION);
+ }
+ return applicationInformation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Element> getUserInformation()
+ {
+ if (userInformation == null)
+ {
+ userInformation = new EDataTypeUniqueEList<Element>(Element.class, this, XSDPackage.XSD_ANNOTATION__USER_INFORMATION);
+ }
+ return userInformation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Attr> getAttributes()
+ {
+ if (attributes == null)
+ {
+ attributes = new EDataTypeUniqueEList<Attr>(Attr.class, this, XSDPackage.XSD_ANNOTATION__ATTRIBUTES);
+ }
+ return attributes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ANNOTATION__APPLICATION_INFORMATION:
+ return getApplicationInformation();
+ case XSDPackage.XSD_ANNOTATION__USER_INFORMATION:
+ return getUserInformation();
+ case XSDPackage.XSD_ANNOTATION__ATTRIBUTES:
+ return getAttributes();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ANNOTATION__APPLICATION_INFORMATION:
+ getApplicationInformation().clear();
+ getApplicationInformation().addAll((Collection<? extends Element>)newValue);
+ return;
+ case XSDPackage.XSD_ANNOTATION__USER_INFORMATION:
+ getUserInformation().clear();
+ getUserInformation().addAll((Collection<? extends Element>)newValue);
+ return;
+ case XSDPackage.XSD_ANNOTATION__ATTRIBUTES:
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends Attr>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ANNOTATION__APPLICATION_INFORMATION:
+ getApplicationInformation().clear();
+ return;
+ case XSDPackage.XSD_ANNOTATION__USER_INFORMATION:
+ getUserInformation().clear();
+ return;
+ case XSDPackage.XSD_ANNOTATION__ATTRIBUTES:
+ getAttributes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ANNOTATION__APPLICATION_INFORMATION:
+ return applicationInformation != null && !applicationInformation.isEmpty();
+ case XSDPackage.XSD_ANNOTATION__USER_INFORMATION:
+ return userInformation != null && !userInformation.isEmpty();
+ case XSDPackage.XSD_ANNOTATION__ATTRIBUTES:
+ return attributes != null && !attributes.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (applicationInformation: ");
+ result.append(applicationInformation);
+ result.append(", userInformation: ");
+ result.append(userInformation);
+ result.append(", attributes: ");
+ result.append(attributes);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.ANNOTATION_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+/*
+ protected void patch()
+ {
+ super.patch();
+ }
+*/
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkElementComplexContent("annotation", XSDConstants.PART1, "element-annotation", theElement);
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ Element theElement = getElement();
+ if (changedElement == theElement || changedElement.getParentNode() == theElement)
+ {
+ XSDConcreteComponent container = getContainer();
+ List<Attr> newAttributes = new ArrayList<Attr>();
+ for (Node theNode = theElement; theNode != null; theNode = theNode.getParentNode())
+ {
+ NamedNodeMap attributes = theNode.getAttributes();
+ for (int i = 0, size = attributes.getLength(); i < size; ++i)
+ {
+ Attr attr = (Attr)attributes.item(i);
+ String attrName = attr.getNodeName();
+ int index = attrName.lastIndexOf(":");
+ if (index != -1)
+ {
+ newAttributes.add(attr);
+ }
+ }
+ if (container == null || container.getElement() == theNode)
+ {
+ break;
+ }
+ }
+
+ EList<Attr> theAttributes = getAttributes();
+ List<Attr> remainingAttributes = new ArrayList<Attr>(theAttributes);
+ remainingAttributes.removeAll(newAttributes);
+ if (!remainingAttributes.isEmpty())
+ {
+ theAttributes.removeAll(remainingAttributes);
+ }
+ setListContentAndOrder(theAttributes, newAttributes);
+ }
+ }
+
+ @Override
+ protected void reconcileContents(Element changedElement)
+ {
+ Element theElement = getElement();
+ if (changedElement == theElement || changedElement.getParentNode() == theElement)
+ {
+ List<Element> newApplicationInformation = new ArrayList<Element>();
+ List<Element> newUserInformation = new ArrayList<Element>();
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.APPINFO_ELEMENT:
+ {
+ newApplicationInformation.add((Element)child);
+ break;
+ }
+ case XSDConstants.DOCUMENTATION_ELEMENT:
+ {
+ newUserInformation.add((Element)child);
+ break;
+ }
+ }
+ }
+
+ EList<Element> theApplicationInformation = getApplicationInformation();
+ List<Element> remainingApplicationInformation = new ArrayList<Element>(theApplicationInformation);
+ remainingApplicationInformation.removeAll(newApplicationInformation);
+ if (!remainingApplicationInformation.isEmpty())
+ {
+ theApplicationInformation.removeAll(remainingApplicationInformation);
+ }
+ setListContentAndOrder(theApplicationInformation, newApplicationInformation);
+
+ EList<Element> theUserInformation = getUserInformation();
+ List<Element> remainingUserInformation = new ArrayList<Element>(theUserInformation);
+ remainingUserInformation.removeAll(newUserInformation);
+ if (!remainingUserInformation.isEmpty())
+ {
+ remainingUserInformation.removeAll(newUserInformation);
+ }
+ theUserInformation.removeAll(remainingUserInformation);
+ setListContentAndOrder(theUserInformation, newUserInformation);
+ }
+ }
+
+ public Element createApplicationInformation(String sourceURI)
+ {
+ if (getElement() == null)
+ {
+ updateElement();
+ }
+
+ Element result = createElement(XSDConstants.APPINFO_ELEMENT);
+ if (sourceURI != null && result != null)
+ {
+ result.setAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE, sourceURI);
+ }
+ return result;
+ }
+
+ public Element createUserInformation(String sourceURI)
+ {
+ if (getElement() == null)
+ {
+ updateElement();
+ }
+
+ Element result = createElement(XSDConstants.DOCUMENTATION_ELEMENT);
+ if (sourceURI != null && result != null)
+ {
+ result.setAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE, sourceURI);
+ }
+ return result;
+ }
+
+ public EList<Element> getApplicationInformation(String sourceURI)
+ {
+ EList<Element> result = new BasicEList<Element>();
+ for (Element appinfo : getApplicationInformation())
+ {
+ if (sourceURI == null ?
+ !appinfo.hasAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) :
+ appinfo.getAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE).equals(sourceURI))
+ {
+ result.add(appinfo);
+ }
+ }
+ return result;
+ }
+
+ public EList<Element> getUserInformation(String sourceURI)
+ {
+ EList<Element> result = new BasicEList<Element>();
+ for (Element documentation : getUserInformation())
+ {
+ if (sourceURI == null ?
+ !documentation.hasAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) :
+ documentation.getAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE).equals(sourceURI))
+ {
+ result.add(documentation);
+ }
+ }
+ return result;
+ }
+
+ public Set<String> getApplicationInformationSources()
+ {
+ Set<String> result = new HashSet<String>();
+ for (Element appinfo : getApplicationInformation())
+ {
+ result.add
+ (appinfo.hasAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) ? appinfo.getAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) : null);
+ }
+ return result;
+ }
+
+ public Set<String> getUserInformationSources()
+ {
+ Set<String> result = new HashSet<String>();
+ for (Element documentation : getUserInformation())
+ {
+ result.add
+ (documentation.hasAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) ?
+ documentation.getAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) : null);
+ }
+ return result;
+ }
+
+ @Override
+ protected void getComponentsWithInformation(Collection<XSDConcreteComponent> result, int nodeType, String sourceURI)
+ {
+ for (Element childElement : nodeType == XSDConstants.APPINFO_ELEMENT ? getApplicationInformation() : getUserInformation())
+ {
+ if (sourceURI == null ?
+ !childElement.hasAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE) :
+ childElement.getAttributeNS(null, XSDConstants.SOURCE_ATTRIBUTE).equals(sourceURI))
+ {
+ result.add(getContainer());
+ break;
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDAnnotationImpl clonedAnnotation = (XSDAnnotationImpl)getXSDFactory().createXSDAnnotation();
+ clonedAnnotation.isReconciling = true;
+
+ if (shareDOM)
+ {
+ Element element = getElement();
+ if (element != null)
+ {
+ clonedAnnotation.setElement(element);
+ }
+
+ clonedAnnotation.getApplicationInformation().addAll(getApplicationInformation());
+ clonedAnnotation.getUserInformation().addAll(getUserInformation());
+ clonedAnnotation.getAttributes().addAll(getAttributes());
+ }
+
+ clonedAnnotation.isReconciling = shareDOM;
+ return clonedAnnotation;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeDeclarationImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeDeclarationImpl.java
new file mode 100644
index 0000000..b058bfe
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeDeclarationImpl.java
@@ -0,0 +1,1079 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl#isAttributeDeclarationReference <em>Attribute Declaration Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl#getTypeDefinition <em>Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeDeclarationImpl#getResolvedAttributeDeclaration <em>Resolved Attribute Declaration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDAttributeDeclarationImpl
+ extends XSDFeatureImpl
+ implements XSDAttributeDeclaration
+{
+ /**
+ * The default value of the '{@link #isAttributeDeclarationReference() <em>Attribute Declaration Reference</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAttributeDeclarationReference()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ATTRIBUTE_DECLARATION_REFERENCE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getAnonymousTypeDefinition() <em>Anonymous Type Definition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnonymousTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDSimpleTypeDefinition anonymousTypeDefinition;
+
+ /**
+ * The cached value of the '{@link #getTypeDefinition() <em>Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDSimpleTypeDefinition typeDefinition;
+
+ /**
+ * The cached value of the '{@link #getResolvedAttributeDeclaration() <em>Resolved Attribute Declaration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedAttributeDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected XSDAttributeDeclaration resolvedAttributeDeclaration;
+
+ public static XSDAttributeDeclaration createAttributeDeclaration(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.ATTRIBUTE_ELEMENT)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ xsdAttributeDeclaration.setElement((Element)node);
+ return xsdAttributeDeclaration;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XSDAttributeDeclarationImpl()
+ {
+ super();
+ this.resolvedAttributeDeclaration = this;
+ // this.setResolvedAttributeDeclaration = true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getAttributeDeclarationReference()
+ {
+ return isAttributeDeclarationReference() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.ATTRIBUTE_ELEMENT);
+ setElement(newElement);
+
+ XSDSimpleTypeDefinition anonymousTypeDefinition = getAnonymousTypeDefinition();
+ if (anonymousTypeDefinition != null)
+ {
+ Element child = ((XSDConcreteComponentImpl)anonymousTypeDefinition).createElement();
+ newElement.appendChild(child);
+ }
+
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+ XSDAttributeDeclaration theResolvedAttributeDeclaration = getResolvedAttributeDeclaration();
+ if (theResolvedAttributeDeclaration == this)
+ {
+ XSDSimpleTypeDefinition typeDefinition = getTypeDefinition();
+ if (typeDefinition != null && (forceResolve && typeDefinition.getName() != null || typeDefinition.getContainer() == null))
+ {
+ XSDSimpleTypeDefinition newTypeDefinition =
+ resolveSimpleTypeDefinition(typeDefinition.getTargetNamespace(), typeDefinition.getName());
+ if (forceResolve || newTypeDefinition.getContainer() != null & newTypeDefinition != typeDefinition)
+ {
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+ }
+ }
+ else
+ {
+ XSDAttributeDeclaration newResolvedAttributeDeclaration =
+ resolveAttributeDeclaration(theResolvedAttributeDeclaration.getTargetNamespace(), theResolvedAttributeDeclaration.getName());
+ if (newResolvedAttributeDeclaration != theResolvedAttributeDeclaration)
+ {
+ setResolvedAttributeDeclaration(newResolvedAttributeDeclaration);
+ }
+ }
+ }
+
+ @Override
+ protected void patchTargetNamespaceAttribute()
+ {
+ if (!isAttributeDeclarationReference())
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ patchTargetNamespaceAttributeHelper(xsdSchema);
+ }
+ }
+ }
+
+ @Override
+ protected void patchTargetNamespaceAttribute(XSDSchema xsdSchema)
+ {
+ if (!isAttributeDeclarationReference())
+ {
+ patchTargetNamespaceAttributeHelper(xsdSchema);
+ }
+ }
+
+ protected void patchTargetNamespaceAttributeHelper(XSDSchema xsdSchema)
+ {
+ if (getScope() instanceof XSDSchema)
+ {
+ if (!isSetForm() || XSDForm.QUALIFIED_LITERAL != getForm())
+ {
+ setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+ }
+ if (isSetForm() ? getForm() == XSDForm.UNQUALIFIED_LITERAL : xsdSchema.getAttributeFormDefault() == XSDForm.UNQUALIFIED_LITERAL)
+ {
+ if (getTargetNamespace() != null)
+ {
+ setTargetNamespace(null);
+ }
+ }
+ else
+ {
+ String newTargetNamespace = xsdSchema.getTargetNamespace();
+ if (newTargetNamespace == null ? getTargetNamespace() != null : !newTargetNamespace.equals(getTargetNamespace()))
+ {
+ setTargetNamespace(newTargetNamespace);
+ }
+ }
+ }
+
+ protected boolean isTypeExplicit = false;
+ @Override
+ protected boolean analyze()
+ {
+ if (!isAttributeDeclarationReference())
+ {
+ XSDSimpleTypeDefinition theTypeDefinition = getTypeDefinition();
+
+ if (!isTypeExplicit || theTypeDefinition == null)
+ {
+ XSDSimpleTypeDefinition newTypeDefinition = getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("anySimpleType");
+ if (newTypeDefinition != theTypeDefinition)
+ {
+ isTypeExplicit = false;
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+ }
+ }
+
+ return super.analyze();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (getContainer() instanceof XSDSchema)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ new String []
+ {
+ XSDConstants.DEFAULT_ATTRIBUTE,
+ XSDConstants.FIXED_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.TYPE_ATTRIBUTE
+ });
+
+ checkComplexContent("topLevelAttribute", XSDConstants.PART1, "element-attribute", theElement);
+ }
+ else
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ new String []
+ {
+ XSDConstants.DEFAULT_ATTRIBUTE,
+ XSDConstants.FIXED_ATTRIBUTE,
+ XSDConstants.FORM_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.REF_ATTRIBUTE,
+ XSDConstants.TYPE_ATTRIBUTE,
+ XSDConstants.USE_ATTRIBUTE
+ });
+
+ checkComplexContent("attribute", XSDConstants.PART1, "element-attribute", theElement);
+
+ checkAttributeTypeConstraint
+ ("attribute",
+ "use",
+ null,
+ XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ XSDConstants.USE_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("formChoice",
+ null,
+ XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ XSDConstants.FORM_ATTRIBUTE,
+ false);
+ }
+
+ if (theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE) &&
+ theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.1");
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+
+ if (theElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (XSDConstants.nodeType(child) == XSDConstants.SIMPLETYPE_ELEMENT)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.4");
+ break;
+ }
+ }
+ }
+ }
+
+ if (isAttributeDeclarationReference())
+ {
+ XSDAttributeDeclaration theResolvedAttributeDeclaration = getResolvedAttributeDeclaration();
+ if (theResolvedAttributeDeclaration.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "_UI_UnresolvedAttributeDeclaration_message",
+ theResolvedAttributeDeclaration.getURI());
+ }
+
+ if (getName() != null || theElement != null && theElement.hasAttributeNS(null, XSDConstants.NAME_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.3.1");
+ }
+ if (isSetForm() || theElement != null && theElement.hasAttributeNS(null, XSDConstants.FORM_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.3.2.1");
+ }
+ if (getType() != null || theElement != null && theElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.3.2.2");
+ }
+ else if (theElement != null)
+ {
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (XSDConstants.nodeType(child) == XSDConstants.SIMPLETYPE_ELEMENT)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.3.2.2");
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+
+ if ("xmlns".equals(getName()))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "no-xmlns");
+ }
+
+ if (XSDConstants.isSchemaInstanceNamespace(getTargetNamespace()))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "no-xsi");
+ }
+
+ XSDSimpleTypeDefinition theTypeDefinition = getTypeDefinition();
+ if (theTypeDefinition == null || theTypeDefinition.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "_UI_UnresolvedTypeDefinition_message",
+ theTypeDefinition == null ? "" : theTypeDefinition.getURI());
+ }
+ if (theTypeDefinition != null)
+ {
+ if (getLexicalValue() != null)
+ {
+ if (XSDConstants.isOrIsDerivedFromID(theTypeDefinition))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "coss-attribute.3");
+ }
+ else
+ {
+ checkSimpleTypeConstraint
+ (theTypeDefinition,
+ getLexicalValue(),
+ XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ getConstraint() == XSDConstraint.FIXED_LITERAL ? XSDConstants.FIXED_ATTRIBUTE : XSDConstants.DEFAULT_ATTRIBUTE,
+ false);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ XSDAttributeDeclaration newResolvedAttributeDeclaration = this;
+ if (changedElement.hasAttributeNS(null, XSDConstants.REF_ATTRIBUTE))
+ {
+ newResolvedAttributeDeclaration =
+ resolveAttributeDeclarationURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.REF_ATTRIBUTE));
+ }
+/*
+ else if (!changedElement.hasAttributeNS(null, XSDConstants.NAME_ATTRIBUTE))
+ {
+ newResolvedAttributeDeclaration = resolveAttributeDeclaration(null, "undefined");
+ }
+*/
+
+ if (newResolvedAttributeDeclaration != getResolvedAttributeDeclaration())
+ {
+ setResolvedAttributeDeclaration(newResolvedAttributeDeclaration);
+ }
+
+ if (this == newResolvedAttributeDeclaration)
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ isTypeExplicit = true;
+ XSDSimpleTypeDefinition newTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.TYPE_ATTRIBUTE));
+ if (newTypeDefinition != getTypeDefinition())
+ {
+ setTypeDefinition(newTypeDefinition);
+ }
+ }
+ else if (getAnonymousTypeDefinition() != getTypeDefinition())
+ {
+ isTypeExplicit = false;
+ setTypeDefinitionGen(resolveSimpleTypeDefinition(changedElement.getNamespaceURI(), "anySimpleType"));
+ }
+
+ if (getScope() instanceof XSDSchema)
+ {
+ if (getForm() != XSDForm.QUALIFIED_LITERAL)
+ {
+ setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+ }
+ else
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.FORM_ATTRIBUTE))
+ {
+ XSDForm newForm = XSDForm.get(changedElement.getAttributeNS(null, XSDConstants.FORM_ATTRIBUTE));
+ if (!isSetForm() || newForm != getForm())
+ {
+ setForm(newForm);
+ }
+ }
+ else if (isSetForm())
+ {
+ unsetForm();
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileNameAttribute()
+ {
+ if (!isAttributeDeclarationReference())
+ {
+ super.reconcileNameAttribute();
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ if (newContents.isEmpty())
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+ else
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDSimpleTypeDefinitionImpl.createSimpleTypeDefinition(child);
+ if (xsdSimpleTypeDefinition != null)
+ {
+ newContents.add(xsdSimpleTypeDefinition);
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION__ANNOTATION, newContents, remainingContents);
+ if (!isAttributeDeclarationReference())
+ {
+ Element theElement = getElement();
+ XSDSimpleTypeDefinition newTypeDefinition = null;
+ if (newContents.isEmpty())
+ {
+ if (!remainingContents.isEmpty())
+ {
+ setAnonymousTypeDefinition(null);
+ }
+ }
+ else
+ {
+ setAnonymousTypeDefinition(newTypeDefinition = (XSDSimpleTypeDefinition)newContents.get(0));
+ }
+
+ if (theElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ isTypeExplicit = true;
+ newTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(theElement, XSDConstants.TYPE_ATTRIBUTE));
+ }
+
+ if (newTypeDefinition == null)
+ {
+ newTypeDefinition = resolveSimpleTypeDefinition(theElement.getNamespaceURI(), "anySimpleType");
+ }
+
+ if (newTypeDefinition != getTypeDefinition())
+ {
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (!isAttributeDeclarationReference())
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_FEATURE__FORM)
+ {
+ if (!(getScope() instanceof XSDSchema))
+ {
+ niceSetAttribute(theElement, XSDConstants.FORM_ATTRIBUTE, isSetForm() ? getForm().getName() : null);
+ }
+ }
+ }
+ if (eAttribute == XSDPackage.Literals.XSD_FEATURE__FORM)
+ {
+ patchTargetNamespaceAttribute();
+ }
+ }
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (isAttributeDeclarationReference())
+ {
+ XSDAttributeDeclaration theResolvedAttributeDeclaration = getResolvedAttributeDeclaration();
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION)
+ {
+ if (theElement != null)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REF_ATTRIBUTE, theResolvedAttributeDeclaration.getURI());
+ }
+ if (eReference != null && getContainer() instanceof XSDAttributeUse)
+ {
+ ((XSDAttributeUse)getContainer()).setAttributeDeclaration(theResolvedAttributeDeclaration);
+ }
+ }
+ }
+ else
+ {
+ if (theElement != null && eReference == XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REF_ATTRIBUTE, null);
+ }
+
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION)
+ {
+ XSDSimpleTypeDefinition theTypeDefinition = getTypeDefinition();
+ XSDSimpleTypeDefinition theAnonymousTypeDefinition = getAnonymousTypeDefinition();
+ if (!isTypeExplicit ||
+ theTypeDefinition == null ||
+ theTypeDefinition == theAnonymousTypeDefinition)
+ {
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.TYPE_ATTRIBUTE, null);
+ }
+ }
+ else
+ {
+ if (theElement != null)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.TYPE_ATTRIBUTE, theTypeDefinition.getURI());
+ }
+ if (eReference != null && theAnonymousTypeDefinition != null)
+ {
+ setAnonymousTypeDefinition(null);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION)
+ {
+ setTypeDefinition((XSDSimpleTypeDefinition)xsdConcreteComponent);
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION)
+ {
+ if (getTypeDefinition() == xsdConcreteComponent)
+ {
+ setTypeDefinition(null);
+ }
+ }
+ }
+
+ public boolean isAttributeDeclarationReference()
+ {
+ return this != getResolvedAttributeDeclaration();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleTypeDefinition getAnonymousTypeDefinition()
+ {
+ return anonymousTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnonymousTypeDefinition(XSDSimpleTypeDefinition newAnonymousTypeDefinition)
+ {
+ if (newAnonymousTypeDefinition != anonymousTypeDefinition)
+ {
+ NotificationChain msgs = null;
+ if (anonymousTypeDefinition != null)
+ msgs = ((InternalEObject)anonymousTypeDefinition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION, null, msgs);
+ if (newAnonymousTypeDefinition != null)
+ msgs = ((InternalEObject)newAnonymousTypeDefinition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION, null, msgs);
+ msgs = basicSetAnonymousTypeDefinition(newAnonymousTypeDefinition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION, newAnonymousTypeDefinition, newAnonymousTypeDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnonymousTypeDefinition(XSDSimpleTypeDefinition newAnonymousTypeDefinition, NotificationChain msgs)
+ {
+ XSDSimpleTypeDefinition oldAnonymousTypeDefinition = anonymousTypeDefinition;
+ anonymousTypeDefinition = newAnonymousTypeDefinition;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION, oldAnonymousTypeDefinition, newAnonymousTypeDefinition);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleTypeDefinition getTypeDefinition()
+ {
+ return typeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypeDefinitionGen(XSDSimpleTypeDefinition newTypeDefinition)
+ {
+ XSDSimpleTypeDefinition oldTypeDefinition = typeDefinition;
+ typeDefinition = newTypeDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION, oldTypeDefinition, typeDefinition));
+ }
+
+ public void setTypeDefinition(XSDSimpleTypeDefinition newTypeDefinition)
+ {
+ isTypeExplicit = newTypeDefinition != null;
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeDeclaration getResolvedAttributeDeclaration()
+ {
+ return resolvedAttributeDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setResolvedAttributeDeclaration(XSDAttributeDeclaration newResolvedAttributeDeclaration)
+ {
+ XSDAttributeDeclaration oldResolvedAttributeDeclaration = resolvedAttributeDeclaration;
+ resolvedAttributeDeclaration = newResolvedAttributeDeclaration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION, oldResolvedAttributeDeclaration, resolvedAttributeDeclaration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ return basicSetAnonymousTypeDefinition(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ATTRIBUTE_DECLARATION_REFERENCE:
+ return isAttributeDeclarationReference();
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ return getAnonymousTypeDefinition();
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION:
+ return getTypeDefinition();
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION:
+ return getResolvedAttributeDeclaration();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ setAnonymousTypeDefinition((XSDSimpleTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION:
+ setTypeDefinition((XSDSimpleTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION:
+ setResolvedAttributeDeclaration((XSDAttributeDeclaration)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ setAnonymousTypeDefinition((XSDSimpleTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION:
+ setTypeDefinition((XSDSimpleTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION:
+ setResolvedAttributeDeclaration((XSDAttributeDeclaration)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ATTRIBUTE_DECLARATION_REFERENCE:
+ return isAttributeDeclarationReference() != ATTRIBUTE_DECLARATION_REFERENCE_EDEFAULT;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ return anonymousTypeDefinition != null;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION:
+ return typeDefinition != null;
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION:
+ return resolvedAttributeDeclaration != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String getQName()
+ {
+ XSDAttributeDeclaration resolvedAttributeDeclaration = getResolvedAttributeDeclaration();
+ if (resolvedAttributeDeclaration == this)
+ {
+ return super.getQName();
+ }
+ else
+ {
+ return resolvedAttributeDeclaration.getQName(this);
+ }
+ }
+
+ @Override
+ public boolean isNamedComponentReference()
+ {
+ return isAttributeDeclarationReference();
+ }
+
+ @Override
+ public XSDNamedComponent getResolvedNamedComponent()
+ {
+ return getResolvedAttributeDeclaration();
+ }
+
+ @Override
+ public boolean isFeatureReference()
+ {
+ return isAttributeDeclarationReference();
+ }
+
+ @Override
+ public XSDFeature getResolvedFeature()
+ {
+ return getResolvedAttributeDeclaration();
+ }
+
+ @Override
+ public XSDTypeDefinition getType()
+ {
+ return getTypeDefinition();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDAttributeDeclarationImpl clonedAttributeDeclaration =
+ (XSDAttributeDeclarationImpl)getXSDFactory().createXSDAttributeDeclaration();
+ clonedAttributeDeclaration.isReconciling = true;
+
+ if (isAttributeDeclarationReference())
+ {
+ XSDAttributeDeclaration theResolvedAttributeDeclaration = getResolvedAttributeDeclaration();
+ clonedAttributeDeclaration.setResolvedAttributeDeclaration
+ (createUnresolvedAttributeDeclaration
+ (theResolvedAttributeDeclaration.getTargetNamespace(), theResolvedAttributeDeclaration.getName()));
+ }
+ else
+ {
+ if (getName() != null)
+ {
+ clonedAttributeDeclaration.setName(getName());
+ }
+ if (isSetForm())
+ {
+ clonedAttributeDeclaration.setForm(getForm());
+ }
+ if (isSetConstraint())
+ {
+ clonedAttributeDeclaration.setConstraint(getConstraint());
+ }
+ if (getLexicalValue() != null)
+ {
+ clonedAttributeDeclaration.setLexicalValue(getLexicalValue());
+ }
+
+ if (getTypeDefinition() != null && getTypeDefinition() != getAnonymousTypeDefinition())
+ {
+ XSDSimpleTypeDefinition theTypeDefinition = getTypeDefinition();
+ clonedAttributeDeclaration.setTypeDefinition
+ (createUnresolvedSimpleTypeDefinition
+ (theTypeDefinition.getTargetNamespace(), theTypeDefinition.getName()));
+ }
+
+ if (deep)
+ {
+ if (getAnonymousTypeDefinition() != null)
+ {
+ clonedAttributeDeclaration.setAnonymousTypeDefinition
+ ((XSDSimpleTypeDefinition)getAnonymousTypeDefinition().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedAttributeDeclaration.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedAttributeDeclaration.setElement(getElement());
+ }
+
+ clonedAttributeDeclaration.isReconciling = shareDOM;
+ return clonedAttributeDeclaration;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeGroupContentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeGroupContentImpl.java
new file mode 100644
index 0000000..99b4a79
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeGroupContentImpl.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute Group Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDAttributeGroupContentImpl
+ extends XSDConcreteComponentImpl
+ implements XSDAttributeGroupContent
+{
+
+ public static XSDAttributeGroupContent createAttributeGroupContent(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ {
+ return XSDAttributeUseImpl.createAttributeUse(node);
+ }
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ return XSDAttributeGroupDefinitionImpl.createAttributeGroupDefinition(node);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDAttributeGroupContentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ATTRIBUTE_GROUP_CONTENT;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeGroupDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeGroupDefinitionImpl.java
new file mode 100644
index 0000000..97c9fb6
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeGroupDefinitionImpl.java
@@ -0,0 +1,1170 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDNamespaceConstraintCategory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute Group Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#isAttributeGroupDefinitionReference <em>Attribute Group Definition Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getAttributeUses <em>Attribute Uses</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getAttributeWildcard <em>Attribute Wildcard</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getResolvedAttributeGroupDefinition <em>Resolved Attribute Group Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeGroupDefinitionImpl#getSyntheticWildcard <em>Synthetic Wildcard</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDAttributeGroupDefinitionImpl
+ extends XSDRedefinableComponentImpl
+ implements XSDAttributeGroupDefinition
+{
+ /**
+ * The default value of the '{@link #isAttributeGroupDefinitionReference() <em>Attribute Group Definition Reference</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAttributeGroupDefinitionReference()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ATTRIBUTE_GROUP_DEFINITION_REFERENCE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAttributeGroupContent> contents;
+
+ /**
+ * The cached value of the '{@link #getAttributeUses() <em>Attribute Uses</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeUses()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAttributeUse> attributeUses;
+
+ /**
+ * The cached value of the '{@link #getAttributeWildcardContent() <em>Attribute Wildcard Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeWildcardContent()
+ * @generated
+ * @ordered
+ */
+ protected XSDWildcard attributeWildcardContent;
+
+ /**
+ * The cached value of the '{@link #getAttributeWildcard() <em>Attribute Wildcard</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeWildcard()
+ * @generated
+ * @ordered
+ */
+ protected XSDWildcard attributeWildcard;
+
+ /**
+ * The cached value of the '{@link #getResolvedAttributeGroupDefinition() <em>Resolved Attribute Group Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedAttributeGroupDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDAttributeGroupDefinition resolvedAttributeGroupDefinition;
+
+ /**
+ * The cached value of the '{@link #getSyntheticWildcard() <em>Synthetic Wildcard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSyntheticWildcard()
+ * @generated
+ * @ordered
+ */
+ protected XSDWildcard syntheticWildcard;
+
+ public static XSDAttributeGroupDefinition createAttributeGroupDefinition(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.ATTRIBUTEGROUP_ELEMENT)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ xsdAttributeGroupDefinition.setElement((Element)node);
+ return xsdAttributeGroupDefinition;
+ }
+
+ return null;
+ }
+
+ protected int analysisState;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XSDAttributeGroupDefinitionImpl()
+ {
+ super();
+ this.resolvedAttributeGroupDefinition = this;
+ // this.setResolvedAttributeGroupDefinition = true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ATTRIBUTE_GROUP_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getAttributeGroupDefinitionReference()
+ {
+ return isAttributeGroupDefinitionReference() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.ATTRIBUTEGROUP_ELEMENT);
+ setElement(newElement);
+
+ for (XSDAttributeGroupContent xsdAttributeGroupContent : getContents())
+ {
+ if (xsdAttributeGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition)xsdAttributeGroupContent;
+ Element attributeGroupDefinitionElement = ((XSDConcreteComponentImpl)xsdAttributeGroupDefinition).createElement();
+ newElement.appendChild(attributeGroupDefinitionElement);
+ }
+ else
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdAttributeGroupContent;
+ Element attributeUseElement = ((XSDConcreteComponentImpl)xsdAttributeUse).createElement();
+ newElement.appendChild(attributeUseElement);
+ }
+ }
+
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ analysisState = UNANALYZED;
+ super.patch();
+ XSDAttributeGroupDefinition theResolvedAttributeGroupDefinition = getResolvedAttributeGroupDefinition();
+ if (theResolvedAttributeGroupDefinition != this &&
+ (forceResolve || theResolvedAttributeGroupDefinition.getContainer() == null))
+ {
+ XSDAttributeGroupDefinition newResolvedAttributeGroupDefinition =
+ resolveAttributeGroupDefinition
+ (theResolvedAttributeGroupDefinition.getTargetNamespace(), theResolvedAttributeGroupDefinition.getName());
+ if (forceResolve || newResolvedAttributeGroupDefinition.getContainer() != null)
+ {
+ handleNewResolvedAttributeGroupDefinition(newResolvedAttributeGroupDefinition);
+ }
+ }
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ analysisState = UNANALYZED;
+ super.traverseToRootForAnalysis();
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ switch (analysisState)
+ {
+ case UNANALYZED:
+ {
+ analysisState = ANALYZING;
+ super.analyze();
+ handleAnalysis();
+ if (analysisState == ANALYZING)
+ {
+ analysisState = ANALYZED;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ case ANALYZED:
+ {
+ return true;
+ }
+ case ANALYZING:
+ case CIRCULAR:
+ default:
+ {
+ analysisState = CIRCULAR;
+ return false;
+ }
+ }
+ }
+
+ protected XSDWildcardImpl effectiveWildcard;
+ protected void handleAnalysis()
+ {
+ List<XSDAttributeUse> newAttributeUses = getAttributeUses(getContents(), Collections.<XSDAttributeUse>emptyList());
+ List<XSDAttributeUse> remainingAttributeUses = new ArrayList<XSDAttributeUse>(getAttributeUses());
+ remainingAttributeUses.removeAll(newAttributeUses);
+ if (!remainingAttributeUses.isEmpty())
+ {
+ getAttributeUses().removeAll(remainingAttributeUses);
+ }
+ setListContentAndOrder(getAttributeUses(), newAttributeUses);
+
+ XSDWildcard newAttributeWildcard = getAttributeWildcard(null, getAttributeWildcardContent(), getContents());
+
+ if (newAttributeWildcard != null && newAttributeWildcard.getContainer() == null)
+ {
+ if (effectiveWildcard == null)
+ {
+ effectiveWildcard = (XSDWildcardImpl)getXSDFactory().createXSDWildcard();
+ // effectiveWildcard.setOwner(this);
+ setSyntheticWildcard(effectiveWildcard);
+ }
+ effectiveWildcard.setLike(newAttributeWildcard);
+ newAttributeWildcard = effectiveWildcard;
+ }
+
+ if (newAttributeWildcard != getAttributeWildcard())
+ {
+ setAttributeWildcard(newAttributeWildcard);
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (getContainer() instanceof XSDSchema || getContainer() instanceof XSDRedefine)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-attributeGroup",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE
+ });
+
+ checkComplexContent("namedAttributeGroup", XSDConstants.PART1, "element-attributeGroup", theElement);
+ }
+ else
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-attributeGroup",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.REF_ATTRIBUTE
+ });
+
+ checkComplexContent("attributeGroupRef", XSDConstants.PART1, "element-attributeGroup", theElement);
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-attributeGroup",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ if (getContainer() instanceof XSDSchema || getContainer() instanceof XSDRedefine)
+ {
+ if (isAttributeGroupDefinitionReference())
+ {
+ if (theElement == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cvc-complex-type.3", "ref");
+ }
+ }
+ else
+ {
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ "element-attributeGroup",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+
+ XSDWildcard theAttributeWildcard = getAttributeWildcard();
+ if (theAttributeWildcard != null &&
+ theAttributeWildcard.getNamespaceConstraint().isEmpty() &&
+ theAttributeWildcard.getNamespaceConstraintCategory() == XSDNamespaceConstraintCategory.NOT_LITERAL)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute_group.2");
+ }
+
+ if (isCircular())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute_group.3");
+ }
+
+ XSDAttributeDeclaration idAttribute = null;
+ Set<String> uris = new HashSet<String>();
+ for (XSDAttributeUse xsdAttributeUse : getAttributeUses())
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ if (!uris.add(xsdAttributeDeclaration.getURI()))
+ {
+ getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "coss-attrGroup.2", xsdAttributeDeclaration.getURI());
+ }
+ if (XSDConstants.isOrIsDerivedFromID(xsdAttributeDeclaration.getTypeDefinition()))
+ {
+ if (idAttribute != null)
+ {
+ getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "coss-attrGroup.3", xsdAttributeDeclaration.getURI(), idAttribute.getURI());
+ }
+ else
+ {
+ idAttribute = xsdAttributeDeclaration;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ if (isAttributeGroupDefinitionReference())
+ {
+ XSDAttributeGroupDefinition theResolvedAttributeGroupDefinition = getResolvedAttributeGroupDefinition();
+ if (theResolvedAttributeGroupDefinition.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "_UI_UnresolvedAttributeGroupDefinition_message",
+ theResolvedAttributeGroupDefinition.getURI());
+ }
+ }
+ else
+ {
+ if (theElement == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cvc-complex-type.3", "name");
+ }
+ }
+ }
+ }
+
+ public static List<XSDAttributeUse> getAttributeUses
+ (Collection<XSDAttributeGroupContent> xsdAttributeGroupContents, Collection<XSDAttributeUse> xsdAttributeUses)
+ {
+ List<XSDAttributeUse> result = new UniqueEList<XSDAttributeUse>();
+ Set<String> localAttributeUses = new HashSet<String>();
+
+ for (XSDAttributeGroupContent xsdAttributeGroupContent : xsdAttributeGroupContents)
+ {
+ ((XSDConcreteComponentImpl)xsdAttributeGroupContent).analyze();
+ if (xsdAttributeGroupContent instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdAttributeGroupContent;
+ if (xsdAttributeUse.getUse() != XSDAttributeUseCategory.PROHIBITED_LITERAL)
+ {
+ result.add(xsdAttributeUse);
+ }
+ localAttributeUses.add(xsdAttributeUse.getAttributeDeclaration().getURI());
+ }
+ else
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition =
+ ((XSDAttributeGroupDefinition)xsdAttributeGroupContent).getResolvedAttributeGroupDefinition();
+ ((XSDConcreteComponentImpl)xsdAttributeGroupDefinition).analyze();
+ result.addAll(xsdAttributeGroupDefinition.getAttributeUses());
+ }
+ }
+
+ for (XSDAttributeUse xsdAttributeUse : xsdAttributeUses)
+ {
+ if (!localAttributeUses.contains(xsdAttributeUse.getAttributeDeclaration().getURI()))
+ {
+ result.add(xsdAttributeUse);
+ }
+ }
+
+ return XSDAttributeUseImpl.sortAttributeUses(result);
+ }
+
+ public static XSDWildcard getAttributeWildcard
+ (XSDWildcard baseWildcard, XSDWildcard localWildcard, Collection<XSDAttributeGroupContent> xsdAttributeGroupContents)
+ {
+ for (XSDAttributeGroupContent xsdAttributeGroupContent : xsdAttributeGroupContents)
+ {
+ ((XSDConcreteComponentImpl)xsdAttributeGroupContent).analyze();
+ if (xsdAttributeGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition =
+ ((XSDAttributeGroupDefinition)xsdAttributeGroupContent).getResolvedAttributeGroupDefinition();
+ ((XSDConcreteComponentImpl)xsdAttributeGroupDefinition).analyze();
+ XSDWildcard attributeGroupWildcard = xsdAttributeGroupDefinition.getAttributeWildcard();
+ if (attributeGroupWildcard != null)
+ {
+ if (localWildcard == null)
+ {
+ localWildcard = attributeGroupWildcard;
+ }
+ else
+ {
+ localWildcard = localWildcard.attributeWildcardIntersection(attributeGroupWildcard);
+ if (localWildcard == null)
+ {
+ return null;
+ }
+ else if (localWildcard.getNamespaceConstraint().isEmpty() &&
+ localWildcard.getNamespaceConstraintCategory() == XSDNamespaceConstraintCategory.NOT_LITERAL)
+ {
+ // Failure
+ //
+ return localWildcard;
+ }
+ }
+ }
+ }
+ }
+
+ if (localWildcard == null)
+ {
+ localWildcard = baseWildcard;
+ }
+ else if (baseWildcard != null)
+ {
+ localWildcard = localWildcard.attributeWildcardUnion(baseWildcard);
+ }
+ return localWildcard;
+ }
+
+ @Override
+ protected void patchTargetNamespaceAttribute(XSDSchema xsdSchema)
+ {
+ if (!isAttributeGroupDefinitionReference())
+ {
+ super.patchTargetNamespaceAttribute(xsdSchema);
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ XSDAttributeGroupDefinition newResolvedAttributeGroupDefinition = this;
+ if (changedElement.hasAttributeNS(null, XSDConstants.REF_ATTRIBUTE))
+ {
+ newResolvedAttributeGroupDefinition =
+ resolveAttributeGroupDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.REF_ATTRIBUTE));
+ }
+
+ handleNewResolvedAttributeGroupDefinition(newResolvedAttributeGroupDefinition);
+ }
+
+ protected void handleNewResolvedAttributeGroupDefinition(XSDAttributeGroupDefinition newResolvedAttributeGroupDefinition)
+ {
+ if (eContainer != null)
+ {
+ EObject parent = eContainer.eContainer();
+ if (parent instanceof XSDRedefine)
+ {
+ XSDSchema redefinedSchema = ((XSDRedefine)parent).getIncorporatedSchema();
+ if (redefinedSchema != null)
+ {
+ Map<XSDComponent, XSDComponent> redefinitionMap = ((XSDSchemaImpl)redefinedSchema).getRedefinitionMap();
+ if (redefinitionMap.containsKey(newResolvedAttributeGroupDefinition))
+ {
+ XSDComponent replacement = redefinitionMap.get(newResolvedAttributeGroupDefinition);
+ if (replacement != null)
+ {
+ newResolvedAttributeGroupDefinition = (XSDAttributeGroupDefinition)replacement;
+ }
+ }
+ }
+ }
+ }
+ if (newResolvedAttributeGroupDefinition != getResolvedAttributeGroupDefinition())
+ {
+ setResolvedAttributeGroupDefinition(newResolvedAttributeGroupDefinition);
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ newContents.add(xsdAnnotation);
+ }
+ else
+ {
+ XSDAttributeGroupContent xsdAttributeGroupContent = XSDAttributeGroupContentImpl.createAttributeGroupContent(child);
+ if (xsdAttributeGroupContent != null)
+ {
+ newContents.add(xsdAttributeGroupContent);
+ }
+ else
+ {
+ XSDWildcard xsdWildcard = XSDWildcardImpl.createWildcard(child);
+ if (xsdWildcard != null)
+ {
+ newContents.add(xsdWildcard);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION, newContents, remainingContents);
+
+ XSDWildcard newAttributeWildcard = null;
+ if (!newContents.isEmpty())
+ {
+ int lastIndex = newContents.size() - 1;
+ Object last = newContents.get(lastIndex);
+ if (last instanceof XSDWildcard)
+ {
+ newAttributeWildcard = (XSDWildcard)last;
+ if (XSDConstants.nodeType(newAttributeWildcard.getElement()) == XSDConstants.ANYATTRIBUTE_ELEMENT)
+ {
+ newContents.remove(lastIndex);
+ }
+ else
+ {
+ newAttributeWildcard = null;
+ }
+ }
+ }
+
+ if (newAttributeWildcard != getAttributeWildcardContent())
+ {
+ remainingContents.remove(getAttributeWildcardContent());
+ setAttributeWildcardContent(newAttributeWildcard);
+ }
+
+
+ if (!remainingContents.isEmpty())
+ {
+ getContents().removeAll(remainingContents);
+ }
+
+ if (!newContents.isEmpty())
+ {
+ for (Iterator<XSDConcreteComponent> i = newContents.iterator(); i.hasNext(); )
+ {
+ if (!(i.next() instanceof XSDAttributeGroupContent))
+ {
+ i.remove();
+ }
+ }
+ @SuppressWarnings("unchecked") List<XSDAttributeGroupContent> list = (List<XSDAttributeGroupContent>)(List<?>)newContents;
+ setListContentAndOrder(getContents(), list);
+ }
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION)
+ {
+ XSDAttributeGroupDefinition theResolvedAttributeGroupDefinition = getResolvedAttributeGroupDefinition();
+ if (theResolvedAttributeGroupDefinition != this)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REF_ATTRIBUTE, theResolvedAttributeGroupDefinition.getURI());
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ public boolean isAttributeGroupDefinitionReference()
+ {
+ return this != getResolvedAttributeGroupDefinition();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAttributeGroupContent> getContents()
+ {
+ if (contents == null)
+ {
+ contents = new EObjectContainmentEList<XSDAttributeGroupContent>(XSDAttributeGroupContent.class, this, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS);
+ }
+ return contents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAttributeUse> getAttributeUses()
+ {
+ if (attributeUses == null)
+ {
+ attributeUses = new EObjectEList<XSDAttributeUse>(XSDAttributeUse.class, this, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES);
+ }
+ return attributeUses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard getAttributeWildcardContent()
+ {
+ return attributeWildcardContent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAttributeWildcardContent(XSDWildcard newAttributeWildcardContent)
+ {
+ if (newAttributeWildcardContent != attributeWildcardContent)
+ {
+ NotificationChain msgs = null;
+ if (attributeWildcardContent != null)
+ msgs = ((InternalEObject)attributeWildcardContent).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, null, msgs);
+ if (newAttributeWildcardContent != null)
+ msgs = ((InternalEObject)newAttributeWildcardContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, null, msgs);
+ msgs = basicSetAttributeWildcardContent(newAttributeWildcardContent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, newAttributeWildcardContent, newAttributeWildcardContent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAttributeWildcardContent(XSDWildcard newAttributeWildcardContent, NotificationChain msgs)
+ {
+ XSDWildcard oldAttributeWildcardContent = attributeWildcardContent;
+ attributeWildcardContent = newAttributeWildcardContent;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, oldAttributeWildcardContent, newAttributeWildcardContent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard getAttributeWildcard()
+ {
+ return attributeWildcard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAttributeWildcard(XSDWildcard newAttributeWildcard)
+ {
+ XSDWildcard oldAttributeWildcard = attributeWildcard;
+ attributeWildcard = newAttributeWildcard;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD, oldAttributeWildcard, attributeWildcard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeGroupDefinition getResolvedAttributeGroupDefinition()
+ {
+ return resolvedAttributeGroupDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setResolvedAttributeGroupDefinition(XSDAttributeGroupDefinition newResolvedAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition oldResolvedAttributeGroupDefinition = resolvedAttributeGroupDefinition;
+ resolvedAttributeGroupDefinition = newResolvedAttributeGroupDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION, oldResolvedAttributeGroupDefinition, resolvedAttributeGroupDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard getSyntheticWildcard()
+ {
+ return syntheticWildcard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSyntheticWildcard(XSDWildcard newSyntheticWildcard, NotificationChain msgs)
+ {
+ XSDWildcard oldSyntheticWildcard = syntheticWildcard;
+ syntheticWildcard = newSyntheticWildcard;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD, oldSyntheticWildcard, newSyntheticWildcard);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSyntheticWildcard(XSDWildcard newSyntheticWildcard)
+ {
+ if (newSyntheticWildcard != syntheticWildcard)
+ {
+ NotificationChain msgs = null;
+ if (syntheticWildcard != null)
+ msgs = ((InternalEObject)syntheticWildcard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD, null, msgs);
+ if (newSyntheticWildcard != null)
+ msgs = ((InternalEObject)newSyntheticWildcard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD, null, msgs);
+ msgs = basicSetSyntheticWildcard(newSyntheticWildcard, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD, newSyntheticWildcard, newSyntheticWildcard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS:
+ return ((InternalEList<?>)getContents()).basicRemove(otherEnd, msgs);
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ return basicSetAttributeWildcardContent(null, msgs);
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD:
+ return basicSetSyntheticWildcard(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_GROUP_DEFINITION_REFERENCE:
+ return isAttributeGroupDefinitionReference();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS:
+ return getContents();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES:
+ return getAttributeUses();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ return getAttributeWildcardContent();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD:
+ return getAttributeWildcard();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION:
+ return getResolvedAttributeGroupDefinition();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD:
+ return getSyntheticWildcard();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS:
+ getContents().clear();
+ getContents().addAll((Collection<? extends XSDAttributeGroupContent>)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES:
+ getAttributeUses().clear();
+ getAttributeUses().addAll((Collection<? extends XSDAttributeUse>)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ setAttributeWildcardContent((XSDWildcard)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD:
+ setAttributeWildcard((XSDWildcard)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION:
+ setResolvedAttributeGroupDefinition((XSDAttributeGroupDefinition)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD:
+ setSyntheticWildcard((XSDWildcard)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS:
+ getContents().clear();
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES:
+ getAttributeUses().clear();
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ setAttributeWildcardContent((XSDWildcard)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD:
+ setAttributeWildcard((XSDWildcard)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION:
+ setResolvedAttributeGroupDefinition((XSDAttributeGroupDefinition)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD:
+ setSyntheticWildcard((XSDWildcard)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_GROUP_DEFINITION_REFERENCE:
+ return isAttributeGroupDefinitionReference() != ATTRIBUTE_GROUP_DEFINITION_REFERENCE_EDEFAULT;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS:
+ return contents != null && !contents.isEmpty();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES:
+ return attributeUses != null && !attributeUses.isEmpty();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ return attributeWildcardContent != null;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD:
+ return attributeWildcard != null;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION:
+ return resolvedAttributeGroupDefinition != null;
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD:
+ return syntheticWildcard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String getQName()
+ {
+ XSDAttributeGroupDefinition resolvedAttributeGroupDefinition = getResolvedAttributeGroupDefinition();
+ if (resolvedAttributeGroupDefinition == this)
+ {
+ return super.getQName();
+ }
+ else
+ {
+ return resolvedAttributeGroupDefinition.getQName(this);
+ }
+ }
+
+ @Override
+ public boolean isNamedComponentReference()
+ {
+ return isAttributeGroupDefinitionReference();
+ }
+
+ @Override
+ public XSDNamedComponent getResolvedNamedComponent()
+ {
+ return getResolvedAttributeGroupDefinition();
+ }
+
+ @Override
+ public boolean isCircular()
+ {
+ return analysisState == CIRCULAR;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDAttributeGroupDefinitionImpl clonedAttributeGroupDefinition =
+ (XSDAttributeGroupDefinitionImpl)getXSDFactory().createXSDAttributeGroupDefinition();
+ clonedAttributeGroupDefinition.isReconciling = true;
+
+ if (isAttributeGroupDefinitionReference())
+ {
+ XSDAttributeGroupDefinition theResolvedAttributeGroupDefinition = getResolvedAttributeGroupDefinition();
+ clonedAttributeGroupDefinition.setResolvedAttributeGroupDefinition
+ (createUnresolvedAttributeGroupDefinition
+ (theResolvedAttributeGroupDefinition.getTargetNamespace(), theResolvedAttributeGroupDefinition.getName()));
+ }
+ else
+ {
+ if (getName() != null)
+ {
+ clonedAttributeGroupDefinition.setName(getName());
+ }
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedAttributeGroupDefinition.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(true, shareDOM));
+ }
+
+ if (!getContents().isEmpty())
+ {
+ clonedAttributeGroupDefinition.getContents().addAll(cloneConcreteComponents(getContents(), true, shareDOM));
+ }
+
+ if (getAttributeWildcardContent() != null)
+ {
+ clonedAttributeGroupDefinition.setAttributeWildcardContent
+ ((XSDWildcard)getAttributeWildcardContent().cloneConcreteComponent(true, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedAttributeGroupDefinition.setElement(getElement());
+ }
+
+ clonedAttributeGroupDefinition.isReconciling = shareDOM;
+ return clonedAttributeGroupDefinition;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeUseImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeUseImpl.java
new file mode 100644
index 0000000..c151884
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDAttributeUseImpl.java
@@ -0,0 +1,1075 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute Use</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#isRequired <em>Required</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#getConstraint <em>Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#getUse <em>Use</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#getLexicalValue <em>Lexical Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#getAttributeDeclaration <em>Attribute Declaration</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDAttributeUseImpl#getContent <em>Content</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDAttributeUseImpl
+ extends XSDComponentImpl
+ implements XSDAttributeUse
+{
+ /**
+ * The default value of the '{@link #isRequired() <em>Required</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isRequired()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean REQUIRED_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isRequired() <em>Required</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isRequired()
+ * @generated
+ * @ordered
+ */
+ protected static final int REQUIRED_EFLAG = 1 << 8;
+
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected Object value = VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConstraint()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDConstraint CONSTRAINT_EDEFAULT = XSDConstraint.DEFAULT_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_EFLAG_OFFSET = 9;
+
+ /**
+ * The flags representing the default value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_EFLAG_DEFAULT = CONSTRAINT_EDEFAULT.ordinal() << CONSTRAINT_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDConstraint Constraint}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDConstraint[] CONSTRAINT_EFLAG_VALUES = XSDConstraint.values();
+
+ /**
+ * The flag representing the value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConstraint()
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_EFLAG = 1 << CONSTRAINT_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Constraint attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_ESETFLAG = 1 << 10;
+
+ /**
+ * The default value of the '{@link #getUse() <em>Use</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUse()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDAttributeUseCategory USE_EDEFAULT = XSDAttributeUseCategory.OPTIONAL_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getUse() <em>Use</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int USE_EFLAG_OFFSET = 11;
+
+ /**
+ * The flags representing the default value of the '{@link #getUse() <em>Use</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int USE_EFLAG_DEFAULT = USE_EDEFAULT.ordinal() << USE_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDAttributeUseCategory Attribute Use Category}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDAttributeUseCategory[] USE_EFLAG_VALUES = XSDAttributeUseCategory.values();
+
+ /**
+ * The flags representing the value of the '{@link #getUse() <em>Use</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUse()
+ * @generated
+ * @ordered
+ */
+ protected static final int USE_EFLAG = 0x3 << USE_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Use attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int USE_ESETFLAG = 1 << 13;
+
+ /**
+ * The default value of the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String LEXICAL_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalValue()
+ * @generated
+ * @ordered
+ */
+ protected String lexicalValue = LEXICAL_VALUE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAttributeDeclaration() <em>Attribute Declaration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected XSDAttributeDeclaration attributeDeclaration;
+
+ /**
+ * The cached value of the '{@link #getContent() <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContent()
+ * @generated
+ * @ordered
+ */
+ protected XSDAttributeDeclaration content;
+
+ public static XSDAttributeUse createAttributeUse(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.ATTRIBUTE_ELEMENT)
+ {
+ XSDAttributeUse xsdAttributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ xsdAttributeUse.setElement((Element)node);
+
+ XSDAttributeDeclaration xsdAttributeDeclaration = XSDAttributeDeclarationImpl.createAttributeDeclaration(node);
+ xsdAttributeUse.setContent(xsdAttributeDeclaration);
+ return xsdAttributeUse;
+ }
+
+ return null;
+ }
+
+ public static List<XSDAttributeUse> sortAttributeUses(Collection<XSDAttributeUse> xsdAttributeUses)
+ {
+ XSDAttributeUse [] objects = new XSDAttributeUse[xsdAttributeUses.size()];
+ objects = xsdAttributeUses.toArray(objects);
+ Arrays.sort
+ (objects,
+ new Comparator<XSDAttributeUse>()
+ {
+ Comparator<String> collator = XSDPlugin.INSTANCE.getComparator();
+
+ @Override
+ public boolean equals(Object that)
+ {
+ return this == that;
+ }
+
+ public int compare(XSDAttributeUse o1, XSDAttributeUse o2)
+ {
+ String name1 = o1.getContent().getResolvedAttributeDeclaration().getName();
+ String name2 = o2.getContent().getResolvedAttributeDeclaration().getName();
+ if (name1 == null && name2 == null)
+ {
+ return 0;
+ }
+ else if (name1 == null)
+ {
+ return 1;
+ }
+ else if (name2 == null)
+ {
+ return -1;
+ }
+ else
+ {
+ return collator.compare(name1, name2);
+ }
+ }
+ });
+
+ return Arrays.asList(objects);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDAttributeUseImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ATTRIBUTE_USE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isRequired()
+ {
+ return (eFlags & REQUIRED_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRequired(boolean newRequired)
+ {
+ boolean oldRequired = (eFlags & REQUIRED_EFLAG) != 0;
+ if (newRequired) eFlags |= REQUIRED_EFLAG; else eFlags &= ~REQUIRED_EFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__REQUIRED, oldRequired, newRequired));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(Object newValue)
+ {
+ Object oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDConstraint getConstraint()
+ {
+ return CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConstraint(XSDConstraint newConstraint)
+ {
+ XSDConstraint oldConstraint = CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET];
+ if (newConstraint == null) newConstraint = CONSTRAINT_EDEFAULT;
+ eFlags = eFlags & ~CONSTRAINT_EFLAG | newConstraint.ordinal() << CONSTRAINT_EFLAG_OFFSET;
+ boolean oldConstraintESet = (eFlags & CONSTRAINT_ESETFLAG) != 0;
+ eFlags |= CONSTRAINT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__CONSTRAINT, oldConstraint, newConstraint, !oldConstraintESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetConstraint()
+ {
+ XSDConstraint oldConstraint = CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET];
+ boolean oldConstraintESet = (eFlags & CONSTRAINT_ESETFLAG) != 0;
+ eFlags = eFlags & ~CONSTRAINT_EFLAG | CONSTRAINT_EFLAG_DEFAULT;
+ eFlags &= ~CONSTRAINT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_ATTRIBUTE_USE__CONSTRAINT, oldConstraint, CONSTRAINT_EDEFAULT, oldConstraintESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetConstraint()
+ {
+ return (eFlags & CONSTRAINT_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeUseCategory getUse()
+ {
+ return USE_EFLAG_VALUES[(eFlags & USE_EFLAG) >>> USE_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUse(XSDAttributeUseCategory newUse)
+ {
+ XSDAttributeUseCategory oldUse = USE_EFLAG_VALUES[(eFlags & USE_EFLAG) >>> USE_EFLAG_OFFSET];
+ if (newUse == null) newUse = USE_EDEFAULT;
+ eFlags = eFlags & ~USE_EFLAG | newUse.ordinal() << USE_EFLAG_OFFSET;
+ boolean oldUseESet = (eFlags & USE_ESETFLAG) != 0;
+ eFlags |= USE_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__USE, oldUse, newUse, !oldUseESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetUse()
+ {
+ XSDAttributeUseCategory oldUse = USE_EFLAG_VALUES[(eFlags & USE_EFLAG) >>> USE_EFLAG_OFFSET];
+ boolean oldUseESet = (eFlags & USE_ESETFLAG) != 0;
+ eFlags = eFlags & ~USE_EFLAG | USE_EFLAG_DEFAULT;
+ eFlags &= ~USE_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_ATTRIBUTE_USE__USE, oldUse, USE_EDEFAULT, oldUseESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetUse()
+ {
+ return (eFlags & USE_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLexicalValue()
+ {
+ return lexicalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLexicalValue(String newLexicalValue)
+ {
+ String oldLexicalValue = lexicalValue;
+ lexicalValue = newLexicalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__LEXICAL_VALUE, oldLexicalValue, lexicalValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeDeclaration getAttributeDeclaration()
+ {
+ return attributeDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAttributeDeclaration(XSDAttributeDeclaration newAttributeDeclaration)
+ {
+ XSDAttributeDeclaration oldAttributeDeclaration = attributeDeclaration;
+ attributeDeclaration = newAttributeDeclaration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION, oldAttributeDeclaration, attributeDeclaration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeDeclaration getContent()
+ {
+ return content;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContent(XSDAttributeDeclaration newContent)
+ {
+ if (newContent != content)
+ {
+ NotificationChain msgs = null;
+ if (content != null)
+ msgs = ((InternalEObject)content).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_USE__CONTENT, null, msgs);
+ if (newContent != null)
+ msgs = ((InternalEObject)newContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ATTRIBUTE_USE__CONTENT, null, msgs);
+ msgs = basicSetContent(newContent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__CONTENT, newContent, newContent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONTENT:
+ return basicSetContent(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetContent(XSDAttributeDeclaration newContent, NotificationChain msgs)
+ {
+ XSDAttributeDeclaration oldContent = content;
+ content = newContent;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ATTRIBUTE_USE__CONTENT, oldContent, newContent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE__REQUIRED:
+ return isRequired();
+ case XSDPackage.XSD_ATTRIBUTE_USE__VALUE:
+ return getValue();
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONSTRAINT:
+ return getConstraint();
+ case XSDPackage.XSD_ATTRIBUTE_USE__USE:
+ return getUse();
+ case XSDPackage.XSD_ATTRIBUTE_USE__LEXICAL_VALUE:
+ return getLexicalValue();
+ case XSDPackage.XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION:
+ return getAttributeDeclaration();
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONTENT:
+ return getContent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE__REQUIRED:
+ setRequired((Boolean)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__VALUE:
+ setValue(newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONSTRAINT:
+ setConstraint((XSDConstraint)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__USE:
+ setUse((XSDAttributeUseCategory)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__LEXICAL_VALUE:
+ setLexicalValue((String)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION:
+ setAttributeDeclaration((XSDAttributeDeclaration)newValue);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONTENT:
+ setContent((XSDAttributeDeclaration)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE__REQUIRED:
+ setRequired(REQUIRED_EDEFAULT);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONSTRAINT:
+ unsetConstraint();
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__USE:
+ unsetUse();
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__LEXICAL_VALUE:
+ setLexicalValue(LEXICAL_VALUE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION:
+ setAttributeDeclaration((XSDAttributeDeclaration)null);
+ return;
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONTENT:
+ setContent((XSDAttributeDeclaration)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE__REQUIRED:
+ return ((eFlags & REQUIRED_EFLAG) != 0) != REQUIRED_EDEFAULT;
+ case XSDPackage.XSD_ATTRIBUTE_USE__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONSTRAINT:
+ return isSetConstraint();
+ case XSDPackage.XSD_ATTRIBUTE_USE__USE:
+ return isSetUse();
+ case XSDPackage.XSD_ATTRIBUTE_USE__LEXICAL_VALUE:
+ return LEXICAL_VALUE_EDEFAULT == null ? lexicalValue != null : !LEXICAL_VALUE_EDEFAULT.equals(lexicalValue);
+ case XSDPackage.XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION:
+ return attributeDeclaration != null;
+ case XSDPackage.XSD_ATTRIBUTE_USE__CONTENT:
+ return content != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (required: ");
+ result.append((eFlags & REQUIRED_EFLAG) != 0);
+ result.append(", value: ");
+ result.append(value);
+ result.append(", constraint: ");
+ if ((eFlags & CONSTRAINT_ESETFLAG) != 0) result.append(CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", use: ");
+ if ((eFlags & USE_ESETFLAG) != 0) result.append(USE_EFLAG_VALUES[(eFlags & USE_EFLAG) >>> USE_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", lexicalValue: ");
+ result.append(lexicalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = null;
+ XSDAttributeDeclaration theContent = getContent();
+ if (theContent != null)
+ {
+ newElement = ((XSDConcreteComponentImpl)theContent).createElement();
+ setElement(newElement);
+ }
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+ patchHelper();
+ }
+
+ protected void patchHelper()
+ {
+ XSDAttributeDeclaration newAttributeDeclaration = getContent();
+ if (newAttributeDeclaration != null)
+ {
+ newAttributeDeclaration = newAttributeDeclaration.getResolvedAttributeDeclaration();
+ }
+
+ if (newAttributeDeclaration != getAttributeDeclaration())
+ {
+ setAttributeDeclaration(newAttributeDeclaration);
+ }
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ Object newValue = null;
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getAttributeDeclaration().getTypeDefinition();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ String theLexicalValue = getLexicalValue();
+ if (theLexicalValue != null)
+ {
+ try
+ {
+ newValue = xsdSimpleTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore.
+ }
+ }
+ }
+
+ if (newValue == null ? getValue() != null : !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+
+ return true;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ if (getLexicalValue() != null)
+ {
+ XSDAttributeDeclaration theAttributeDeclaration = getAttributeDeclaration();
+ XSDSimpleTypeDefinition theTypeDefinition = theAttributeDeclaration.getTypeDefinition();
+ Element theElement = getElement();
+ if (theTypeDefinition != null)
+ {
+ if (XSDConstants.isOrIsDerivedFromID(theTypeDefinition))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "coss-attribute.3");
+ }
+ else
+ {
+ checkSimpleTypeConstraint
+ (theTypeDefinition,
+ getLexicalValue(),
+ XSDConstants.PART1,
+ "element-attribute",
+ theElement,
+ getConstraint() == XSDConstraint.FIXED_LITERAL ? XSDConstants.FIXED_ATTRIBUTE : XSDConstants.DEFAULT_ATTRIBUTE,
+ false);
+ }
+ }
+
+ if (theAttributeDeclaration.getConstraint() == XSDConstraint.FIXED_LITERAL &&
+ theAttributeDeclaration.getLexicalValue() != null &&
+ (getConstraint() != XSDConstraint.FIXED_LITERAL ||
+ theTypeDefinition != null && !theTypeDefinition.equalLiterals(theAttributeDeclaration.getElement(), theAttributeDeclaration.getLexicalValue(), theElement, getLexicalValue())))
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "coss-attruse.2", getLexicalValue(), theAttributeDeclaration.getLexicalValue());
+ }
+
+ if (getConstraint() == XSDConstraint.DEFAULT_LITERAL &&
+ isSetUse() && getUse() != XSDAttributeUseCategory.OPTIONAL_LITERAL)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-attribute.2");
+ }
+ }
+ }
+
+ @Override
+ protected Collection<Element> getContentNodes(Element changedElement)
+ {
+ return Collections.singleton(getElement());
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ XSDAttributeUseCategory newUse = null;
+ if (getElement().hasAttributeNS(null, XSDConstants.USE_ATTRIBUTE))
+ {
+ newUse = XSDAttributeUseCategory.get(getElement().getAttributeNS(null, XSDConstants.USE_ATTRIBUTE));
+ }
+
+ boolean newRequired = false;
+ XSDConstraint newConstraint = null;
+ String newLexicalValue = null;
+
+ if (newUse != XSDAttributeUseCategory.PROHIBITED_LITERAL)
+ {
+ newRequired = newUse == XSDAttributeUseCategory.REQUIRED_LITERAL;
+ if (getElement().hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ newLexicalValue = getElement().getAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE);
+ if (newLexicalValue != null)
+ {
+ newConstraint = XSDConstraint.FIXED_LITERAL;
+ }
+ }
+ else if (getElement().hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ newLexicalValue = getElement().getAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE);
+ if (newLexicalValue != null)
+ {
+ newConstraint = XSDConstraint.DEFAULT_LITERAL;
+ }
+ }
+ }
+
+ if (newUse == null)
+ {
+ if (isSetUse())
+ {
+ unsetUse();
+ }
+ }
+ else if (!isSetUse() || newUse != getUse())
+ {
+ setUse(newUse);
+ }
+
+ if (newRequired != isRequired())
+ {
+ setRequired(newRequired);
+ }
+
+ if (newConstraint == null)
+ {
+ if (isSetConstraint())
+ {
+ unsetConstraint();
+ }
+ }
+ else if (!isSetConstraint() || newConstraint != getConstraint())
+ {
+ setConstraint(newConstraint);
+ }
+
+ if (newLexicalValue == null ? getLexicalValue() != null : !newLexicalValue.equals(getLexicalValue()))
+ {
+ setLexicalValue(newLexicalValue);
+ }
+
+ XSDAttributeDeclaration theContent = getContent();
+ if (theContent != null)
+ {
+ theContent.elementAttributesChanged(changedElement);
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileContents(Element changedElement)
+ {
+ super.reconcileContents(changedElement);
+ if (changedElement == getElement())
+ {
+ XSDAttributeDeclaration theContent = getContent();
+ if (theContent != null)
+ {
+ theContent.elementContentsChanged(changedElement);
+ XSDAttributeDeclaration newAttributeDeclaration = theContent.getResolvedAttributeDeclaration();
+ if (newAttributeDeclaration != getAttributeDeclaration())
+ {
+ setAttributeDeclaration(newAttributeDeclaration);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_ATTRIBUTE_USE__USE)
+ {
+ niceSetAttribute(theElement, XSDConstants.USE_ATTRIBUTE, isSetUse() ? getUse().getName() : null);
+ }
+
+ if (eAttribute == null ||
+ eAttribute == XSDPackage.Literals.XSD_FEATURE__LEXICAL_VALUE ||
+ eAttribute == XSDPackage.Literals.XSD_ATTRIBUTE_USE__CONSTRAINT)
+ {
+ if (getLexicalValue() != null)
+ {
+ switch (getConstraint().getValue())
+ {
+ case XSDConstraint.FIXED:
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, getLexicalValue());
+ if (theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.DEFAULT_ATTRIBUTE, null);
+ }
+ break;
+ }
+ case XSDConstraint.DEFAULT:
+ {
+ niceSetAttribute(theElement, XSDConstants.DEFAULT_ATTRIBUTE, getLexicalValue());
+ if (theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, null);
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, null);
+ }
+ if (theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.DEFAULT_ATTRIBUTE, null);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ATTRIBUTE_USE__CONTENT)
+ {
+ patchHelper();
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ATTRIBUTE_USE__CONTENT)
+ {
+ patchHelper();
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDAttributeUseImpl clonedAttributeUse =
+ (XSDAttributeUseImpl)getXSDFactory().createXSDAttributeUse();
+ clonedAttributeUse.isReconciling = true;
+
+ if (isSetUse())
+ {
+ clonedAttributeUse.setUse(getUse());
+ }
+
+ clonedAttributeUse.setRequired(isRequired());
+
+ if (isSetConstraint())
+ {
+ clonedAttributeUse.setConstraint(getConstraint());
+ }
+ if (getLexicalValue() != null)
+ {
+ clonedAttributeUse.setLexicalValue(getLexicalValue());
+ }
+
+ clonedAttributeUse.setContent((XSDAttributeDeclaration)getContent().cloneConcreteComponent(deep, shareDOM));
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedAttributeUse.setElement(getElement());
+ }
+
+ clonedAttributeUse.isReconciling = shareDOM;
+ return clonedAttributeUse;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDBoundedFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDBoundedFacetImpl.java
new file mode 100644
index 0000000..a04f541
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDBoundedFacetImpl.java
@@ -0,0 +1,191 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDBoundedFacet;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bounded Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDBoundedFacetImpl#isValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDBoundedFacetImpl
+ extends XSDFundamentalFacetImpl
+ implements XSDBoundedFacet
+{
+ /**
+ * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean VALUE_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG = 1 << 8;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDBoundedFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_BOUNDED_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isValue()
+ {
+ return (eFlags & VALUE_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(boolean newValue)
+ {
+ boolean oldValue = (eFlags & VALUE_EFLAG) != 0;
+ if (newValue) eFlags |= VALUE_EFLAG; else eFlags &= ~VALUE_EFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_BOUNDED_FACET__VALUE, oldValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_BOUNDED_FACET__VALUE:
+ return isValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_BOUNDED_FACET__VALUE:
+ setValue((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_BOUNDED_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_BOUNDED_FACET__VALUE:
+ return ((eFlags & VALUE_EFLAG) != 0) != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append((eFlags & VALUE_EFLAG) != 0);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return isValue() ? Boolean.TRUE : Boolean.FALSE;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDCardinalityFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDCardinalityFacetImpl.java
new file mode 100644
index 0000000..d823672
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDCardinalityFacetImpl.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDCardinality;
+import org.eclipse.xsd.XSDCardinalityFacet;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cardinality Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDCardinalityFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDCardinalityFacetImpl
+ extends XSDFundamentalFacetImpl
+ implements XSDCardinalityFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDCardinality VALUE_EDEFAULT = XSDCardinality.FINITE_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG_DEFAULT = VALUE_EDEFAULT.ordinal() << VALUE_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDCardinality Cardinality}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDCardinality[] VALUE_EFLAG_VALUES = XSDCardinality.values();
+
+ /**
+ * The flag representing the value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG = 1 << VALUE_EFLAG_OFFSET;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDCardinalityFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_CARDINALITY_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDCardinality getValue()
+ {
+ return VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(XSDCardinality newValue)
+ {
+ XSDCardinality oldValue = VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET];
+ if (newValue == null) newValue = VALUE_EDEFAULT;
+ eFlags = eFlags & ~VALUE_EFLAG | newValue.ordinal() << VALUE_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_CARDINALITY_FACET__VALUE, oldValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CARDINALITY_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CARDINALITY_FACET__VALUE:
+ setValue((XSDCardinality)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CARDINALITY_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CARDINALITY_FACET__VALUE:
+ return (eFlags & VALUE_EFLAG) != VALUE_EFLAG_DEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET]);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComplexTypeContentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComplexTypeContentImpl.java
new file mode 100644
index 0000000..88ef0de
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComplexTypeContentImpl.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Complex Type Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDComplexTypeContentImpl
+ extends XSDComponentImpl
+ implements XSDComplexTypeContent
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDComplexTypeContentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_COMPLEX_TYPE_CONTENT;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComplexTypeDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComplexTypeDefinitionImpl.java
new file mode 100644
index 0000000..5913e4e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComplexTypeDefinitionImpl.java
@@ -0,0 +1,3548 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComplexFinal;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDContentTypeCategory;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDDisallowedSubstitutions;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDNamespaceConstraintCategory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDProhibitedSubstitutions;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Complex Type Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getDerivationMethod <em>Derivation Method</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getFinal <em>Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getContentTypeCategory <em>Content Type Category</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getProhibitedSubstitutions <em>Prohibited Substitutions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getLexicalFinal <em>Lexical Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getBlock <em>Block</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#isMixed <em>Mixed</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getContentAnnotation <em>Content Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getBaseTypeDefinition <em>Base Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getContent <em>Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getContentType <em>Content Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getAttributeUses <em>Attribute Uses</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getAttributeContents <em>Attribute Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getAttributeWildcard <em>Attribute Wildcard</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getAttributeWildcardContent <em>Attribute Wildcard Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getRootTypeDefinition <em>Root Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getSyntheticParticle <em>Synthetic Particle</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl#getSyntheticWildcard <em>Synthetic Wildcard</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDComplexTypeDefinitionImpl
+ extends XSDTypeDefinitionImpl
+ implements XSDComplexTypeDefinition
+{
+ /**
+ * The default value of the '{@link #getDerivationMethod() <em>Derivation Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDerivationMethod()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDDerivationMethod DERIVATION_METHOD_EDEFAULT = XSDDerivationMethod.RESTRICTION_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getDerivationMethod() <em>Derivation Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int DERIVATION_METHOD_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getDerivationMethod() <em>Derivation Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int DERIVATION_METHOD_EFLAG_DEFAULT = DERIVATION_METHOD_EDEFAULT.ordinal() << DERIVATION_METHOD_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDDerivationMethod Derivation Method}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDDerivationMethod[] DERIVATION_METHOD_EFLAG_VALUES = XSDDerivationMethod.values();
+
+ /**
+ * The flag representing the value of the '{@link #getDerivationMethod() <em>Derivation Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDerivationMethod()
+ * @generated
+ * @ordered
+ */
+ protected static final int DERIVATION_METHOD_EFLAG = 1 << DERIVATION_METHOD_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Derivation Method attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int DERIVATION_METHOD_ESETFLAG = 1 << 9;
+
+ /**
+ * The cached value of the '{@link #getFinal() <em>Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFinal()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDComplexFinal> final_;
+
+ /**
+ * The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ABSTRACT_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected static final int ABSTRACT_EFLAG = 1 << 10;
+
+ /**
+ * The flag representing whether the Abstract attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ABSTRACT_ESETFLAG = 1 << 11;
+
+ /**
+ * The default value of the '{@link #getContentTypeCategory() <em>Content Type Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentTypeCategory()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDContentTypeCategory CONTENT_TYPE_CATEGORY_EDEFAULT = XSDContentTypeCategory.EMPTY_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getContentTypeCategory() <em>Content Type Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONTENT_TYPE_CATEGORY_EFLAG_OFFSET = 12;
+
+ /**
+ * The flags representing the default value of the '{@link #getContentTypeCategory() <em>Content Type Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONTENT_TYPE_CATEGORY_EFLAG_DEFAULT = CONTENT_TYPE_CATEGORY_EDEFAULT.ordinal() << CONTENT_TYPE_CATEGORY_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDContentTypeCategory Content Type Category}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDContentTypeCategory[] CONTENT_TYPE_CATEGORY_EFLAG_VALUES = XSDContentTypeCategory.values();
+
+ /**
+ * The flags representing the value of the '{@link #getContentTypeCategory() <em>Content Type Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentTypeCategory()
+ * @generated
+ * @ordered
+ */
+ protected static final int CONTENT_TYPE_CATEGORY_EFLAG = 0x3 << CONTENT_TYPE_CATEGORY_EFLAG_OFFSET;
+
+ /**
+ * The cached value of the '{@link #getProhibitedSubstitutions() <em>Prohibited Substitutions</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProhibitedSubstitutions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDProhibitedSubstitutions> prohibitedSubstitutions;
+
+ /**
+ * The cached value of the '{@link #getLexicalFinal() <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalFinal()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDComplexFinal> lexicalFinal;
+
+ /**
+ * The cached value of the '{@link #getBlock() <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBlock()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDProhibitedSubstitutions> block;
+
+ /**
+ * The default value of the '{@link #isMixed() <em>Mixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMixed()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MIXED_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isMixed() <em>Mixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMixed()
+ * @generated
+ * @ordered
+ */
+ protected static final int MIXED_EFLAG = 1 << 14;
+
+ /**
+ * The flag representing whether the Mixed attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int MIXED_ESETFLAG = 1 << 15;
+
+ /**
+ * The cached value of the '{@link #getContentAnnotation() <em>Content Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation contentAnnotation;
+
+ /**
+ * The cached value of the '{@link #getBaseTypeDefinition() <em>Base Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBaseTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDTypeDefinition baseTypeDefinition;
+
+ /**
+ * The cached value of the '{@link #getContent() <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContent()
+ * @generated
+ * @ordered
+ */
+ protected XSDComplexTypeContent content;
+
+ /**
+ * The cached value of the '{@link #getContentType() <em>Content Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentType()
+ * @generated
+ * @ordered
+ */
+ protected XSDComplexTypeContent contentType;
+
+ /**
+ * The cached value of the '{@link #getAttributeUses() <em>Attribute Uses</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeUses()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAttributeUse> attributeUses;
+
+ /**
+ * The cached value of the '{@link #getAttributeContents() <em>Attribute Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeContents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAttributeGroupContent> attributeContents;
+
+ /**
+ * The cached value of the '{@link #getAttributeWildcard() <em>Attribute Wildcard</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeWildcard()
+ * @generated
+ * @ordered
+ */
+ protected XSDWildcard attributeWildcard;
+
+ /**
+ * The cached value of the '{@link #getAttributeWildcardContent() <em>Attribute Wildcard Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeWildcardContent()
+ * @generated
+ * @ordered
+ */
+ protected XSDWildcard attributeWildcardContent;
+
+ /**
+ * The cached value of the '{@link #getSyntheticParticle() <em>Synthetic Particle</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSyntheticParticle()
+ * @generated
+ * @ordered
+ */
+ protected XSDParticle syntheticParticle;
+
+ /**
+ * The cached value of the '{@link #getSyntheticWildcard() <em>Synthetic Wildcard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSyntheticWildcard()
+ * @generated
+ * @ordered
+ */
+ protected XSDWildcard syntheticWildcard;
+
+ public static XSDComplexTypeDefinition createComplexTypeDefinition(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.COMPLEXTYPE_ELEMENT)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ xsdComplexTypeDefinition.setElement((Element)node);
+ return xsdComplexTypeDefinition;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDComplexTypeDefinitionImpl()
+ {
+ super();
+ eFlags |= DERIVATION_METHOD_EFLAG_DEFAULT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDDerivationMethod getDerivationMethod()
+ {
+ return DERIVATION_METHOD_EFLAG_VALUES[(eFlags & DERIVATION_METHOD_EFLAG) >>> DERIVATION_METHOD_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDerivationMethod(XSDDerivationMethod newDerivationMethod)
+ {
+ XSDDerivationMethod oldDerivationMethod = DERIVATION_METHOD_EFLAG_VALUES[(eFlags & DERIVATION_METHOD_EFLAG) >>> DERIVATION_METHOD_EFLAG_OFFSET];
+ if (newDerivationMethod == null) newDerivationMethod = DERIVATION_METHOD_EDEFAULT;
+ eFlags = eFlags & ~DERIVATION_METHOD_EFLAG | newDerivationMethod.ordinal() << DERIVATION_METHOD_EFLAG_OFFSET;
+ boolean oldDerivationMethodESet = (eFlags & DERIVATION_METHOD_ESETFLAG) != 0;
+ eFlags |= DERIVATION_METHOD_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD, oldDerivationMethod, newDerivationMethod, !oldDerivationMethodESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetDerivationMethod()
+ {
+ XSDDerivationMethod oldDerivationMethod = DERIVATION_METHOD_EFLAG_VALUES[(eFlags & DERIVATION_METHOD_EFLAG) >>> DERIVATION_METHOD_EFLAG_OFFSET];
+ boolean oldDerivationMethodESet = (eFlags & DERIVATION_METHOD_ESETFLAG) != 0;
+ eFlags = eFlags & ~DERIVATION_METHOD_EFLAG | DERIVATION_METHOD_EFLAG_DEFAULT;
+ eFlags &= ~DERIVATION_METHOD_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD, oldDerivationMethod, DERIVATION_METHOD_EDEFAULT, oldDerivationMethodESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetDerivationMethod()
+ {
+ return (eFlags & DERIVATION_METHOD_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDComplexFinal> getFinal()
+ {
+ if (final_ == null)
+ {
+ final_ = new EDataTypeUniqueEList<XSDComplexFinal>(XSDComplexFinal.class, this, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__FINAL);
+ }
+ return final_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isAbstract()
+ {
+ return (eFlags & ABSTRACT_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAbstract(boolean newAbstract)
+ {
+ boolean oldAbstract = (eFlags & ABSTRACT_EFLAG) != 0;
+ if (newAbstract) eFlags |= ABSTRACT_EFLAG; else eFlags &= ~ABSTRACT_EFLAG;
+ boolean oldAbstractESet = (eFlags & ABSTRACT_ESETFLAG) != 0;
+ eFlags |= ABSTRACT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT, oldAbstract, newAbstract, !oldAbstractESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetAbstract()
+ {
+ boolean oldAbstract = (eFlags & ABSTRACT_EFLAG) != 0;
+ boolean oldAbstractESet = (eFlags & ABSTRACT_ESETFLAG) != 0;
+ if (ABSTRACT_EDEFAULT) eFlags |= ABSTRACT_EFLAG; else eFlags &= ~ABSTRACT_EFLAG;
+ eFlags &= ~ABSTRACT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT, oldAbstract, ABSTRACT_EDEFAULT, oldAbstractESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetAbstract()
+ {
+ return (eFlags & ABSTRACT_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDContentTypeCategory getContentTypeCategory()
+ {
+ return CONTENT_TYPE_CATEGORY_EFLAG_VALUES[(eFlags & CONTENT_TYPE_CATEGORY_EFLAG) >>> CONTENT_TYPE_CATEGORY_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContentTypeCategory(XSDContentTypeCategory newContentTypeCategory)
+ {
+ XSDContentTypeCategory oldContentTypeCategory = CONTENT_TYPE_CATEGORY_EFLAG_VALUES[(eFlags & CONTENT_TYPE_CATEGORY_EFLAG) >>> CONTENT_TYPE_CATEGORY_EFLAG_OFFSET];
+ if (newContentTypeCategory == null) newContentTypeCategory = CONTENT_TYPE_CATEGORY_EDEFAULT;
+ eFlags = eFlags & ~CONTENT_TYPE_CATEGORY_EFLAG | newContentTypeCategory.ordinal() << CONTENT_TYPE_CATEGORY_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY, oldContentTypeCategory, newContentTypeCategory));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDProhibitedSubstitutions> getProhibitedSubstitutions()
+ {
+ if (prohibitedSubstitutions == null)
+ {
+ prohibitedSubstitutions = new EDataTypeUniqueEList<XSDProhibitedSubstitutions>(XSDProhibitedSubstitutions.class, this, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS);
+ }
+ return prohibitedSubstitutions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDComplexFinal> getLexicalFinal()
+ {
+ if (lexicalFinal == null)
+ {
+ lexicalFinal = new EDataTypeUniqueEList.Unsettable<XSDComplexFinal>(XSDComplexFinal.class, this, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL);
+ }
+ return lexicalFinal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetLexicalFinal()
+ {
+ if (lexicalFinal != null) ((InternalEList.Unsettable<?>)lexicalFinal).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetLexicalFinal()
+ {
+ return lexicalFinal != null && ((InternalEList.Unsettable<?>)lexicalFinal).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDProhibitedSubstitutions> getBlock()
+ {
+ if (block == null)
+ {
+ block = new EDataTypeUniqueEList.Unsettable<XSDProhibitedSubstitutions>(XSDProhibitedSubstitutions.class, this, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BLOCK);
+ }
+ return block;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetBlock()
+ {
+ if (block != null) ((InternalEList.Unsettable<?>)block).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetBlock()
+ {
+ return block != null && ((InternalEList.Unsettable<?>)block).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isMixed()
+ {
+ return (eFlags & MIXED_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMixed(boolean newMixed)
+ {
+ boolean oldMixed = (eFlags & MIXED_EFLAG) != 0;
+ if (newMixed) eFlags |= MIXED_EFLAG; else eFlags &= ~MIXED_EFLAG;
+ boolean oldMixedESet = (eFlags & MIXED_ESETFLAG) != 0;
+ eFlags |= MIXED_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__MIXED, oldMixed, newMixed, !oldMixedESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetMixed()
+ {
+ boolean oldMixed = (eFlags & MIXED_EFLAG) != 0;
+ boolean oldMixedESet = (eFlags & MIXED_ESETFLAG) != 0;
+ if (MIXED_EDEFAULT) eFlags |= MIXED_EFLAG; else eFlags &= ~MIXED_EFLAG;
+ eFlags &= ~MIXED_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__MIXED, oldMixed, MIXED_EDEFAULT, oldMixedESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetMixed()
+ {
+ return (eFlags & MIXED_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getContentAnnotation()
+ {
+ return contentAnnotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContentAnnotation(XSDAnnotation newContentAnnotation)
+ {
+ if (newContentAnnotation != contentAnnotation)
+ {
+ NotificationChain msgs = null;
+ if (contentAnnotation != null)
+ msgs = ((InternalEObject)contentAnnotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION, null, msgs);
+ if (newContentAnnotation != null)
+ msgs = ((InternalEObject)newContentAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION, null, msgs);
+ msgs = basicSetContentAnnotation(newContentAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION, newContentAnnotation, newContentAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetContentAnnotation(XSDAnnotation newContentAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldContentAnnotation = contentAnnotation;
+ contentAnnotation = newContentAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION, oldContentAnnotation, newContentAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDTypeDefinition getBaseTypeDefinition()
+ {
+ return baseTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBaseTypeDefinition(XSDTypeDefinition newBaseTypeDefinition)
+ {
+ XSDTypeDefinition oldBaseTypeDefinition = baseTypeDefinition;
+ baseTypeDefinition = newBaseTypeDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION, oldBaseTypeDefinition, baseTypeDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDComplexTypeContent getContent()
+ {
+ return content;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContent(XSDComplexTypeContent newContent)
+ {
+ if (newContent != content)
+ {
+ NotificationChain msgs = null;
+ if (content != null)
+ msgs = ((InternalEObject)content).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT, null, msgs);
+ if (newContent != null)
+ msgs = ((InternalEObject)newContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT, null, msgs);
+ msgs = basicSetContent(newContent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT, newContent, newContent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetContent(XSDComplexTypeContent newContent, NotificationChain msgs)
+ {
+ XSDComplexTypeContent oldContent = content;
+ content = newContent;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT, oldContent, newContent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDComplexTypeContent getContentType()
+ {
+ return contentType;
+ }
+
+ @Override
+ public XSDParticle getComplexType()
+ {
+ return getContentType() instanceof XSDParticle ? (XSDParticle)getContentType() : null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContentType(XSDComplexTypeContent newContentType)
+ {
+ XSDComplexTypeContent oldContentType = contentType;
+ contentType = newContentType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE, oldContentType, contentType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAttributeUse> getAttributeUses()
+ {
+ if (attributeUses == null)
+ {
+ attributeUses = new EObjectEList<XSDAttributeUse>(XSDAttributeUse.class, this, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES);
+ }
+ return attributeUses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAttributeGroupContent> getAttributeContents()
+ {
+ if (attributeContents == null)
+ {
+ attributeContents = new EObjectContainmentEList<XSDAttributeGroupContent>(XSDAttributeGroupContent.class, this, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS);
+ }
+ return attributeContents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard getAttributeWildcard()
+ {
+ return attributeWildcard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAttributeWildcard(XSDWildcard newAttributeWildcard)
+ {
+ XSDWildcard oldAttributeWildcard = attributeWildcard;
+ attributeWildcard = newAttributeWildcard;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD, oldAttributeWildcard, attributeWildcard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard getAttributeWildcardContent()
+ {
+ return attributeWildcardContent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAttributeWildcardContent(XSDWildcard newAttributeWildcardContent)
+ {
+ if (newAttributeWildcardContent != attributeWildcardContent)
+ {
+ NotificationChain msgs = null;
+ if (attributeWildcardContent != null)
+ msgs = ((InternalEObject)attributeWildcardContent).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, null, msgs);
+ if (newAttributeWildcardContent != null)
+ msgs = ((InternalEObject)newAttributeWildcardContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, null, msgs);
+ msgs = basicSetAttributeWildcardContent(newAttributeWildcardContent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, newAttributeWildcardContent, newAttributeWildcardContent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAttributeWildcardContent(XSDWildcard newAttributeWildcardContent, NotificationChain msgs)
+ {
+ XSDWildcard oldAttributeWildcardContent = attributeWildcardContent;
+ attributeWildcardContent = newAttributeWildcardContent;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT, oldAttributeWildcardContent, newAttributeWildcardContent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.COMPLEXTYPE_ELEMENT);
+ setElement(newElement);
+
+ Element attributeParentElement = newElement;
+
+ XSDComplexTypeContent theContent = getContent();
+ if (theContent == null || theContent instanceof XSDParticle)
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theBaseTypeDefinition != null &&
+ (!XSDConstants.isURType(theBaseTypeDefinition) ||
+ XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod()))
+ {
+ Element [] contentElementPair = createContentElementPair();
+ attributeParentElement = contentElementPair[1];
+
+ newElement.appendChild(contentElementPair[0]);
+ }
+
+ if (theContent != null)
+ {
+ Element simpleContentElement = ((XSDConcreteComponentImpl)theContent).createElement();
+ attributeParentElement.appendChild(simpleContentElement);
+ }
+ }
+ else
+ {
+ Element simpleContentElement = ((XSDConcreteComponentImpl)theContent).createElement();
+ newElement.appendChild(simpleContentElement);
+
+ LOOP:
+ for (Node child = simpleContentElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ attributeParentElement = (Element)child;
+ break LOOP;
+ }
+ }
+ }
+ }
+
+ for (XSDAttributeGroupContent xsdAttributeGroupContent : getAttributeContents())
+ {
+ Element attributeElement = ((XSDConcreteComponentImpl)xsdAttributeGroupContent).createElement();
+ attributeParentElement.appendChild(attributeElement);
+ }
+
+ return newElement;
+ }
+
+ protected Element [] createContentElementPair()
+ {
+ Element [] contentElementPair = new Element [2];
+ contentElementPair[0] = createElement(XSDConstants.COMPLEXCONTENT_ELEMENT);
+ contentElementPair[1] =
+ createElement
+ (XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod() ?
+ XSDConstants.EXTENSION_ELEMENT :
+ XSDConstants.RESTRICTION_ELEMENT);
+ contentElementPair[0].appendChild(contentElementPair[1]);
+ return contentElementPair;
+ }
+
+ protected Element createDerivationElement()
+ {
+ return
+ createElement
+ (XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod() ?
+ XSDConstants.EXTENSION_ELEMENT :
+ XSDConstants.RESTRICTION_ELEMENT);
+ }
+
+ @Override
+ protected boolean considerAllContainsForBestConcreteComponent()
+ {
+ return true;
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theBaseTypeDefinition != null && (forceResolve || theBaseTypeDefinition.getContainer() == null))
+ {
+ theBaseTypeDefinition = resolveTypeDefinition(theBaseTypeDefinition.getTargetNamespace(), theBaseTypeDefinition.getName());
+ }
+ theBaseTypeDefinition = handleNewBaseTypeDefinition(theBaseTypeDefinition);
+
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ List<XSDComplexFinal> newFinal = new ArrayList<XSDComplexFinal>();
+ if (!isSetLexicalFinal())
+ {
+ for (XSDProhibitedSubstitutions value : getSchema().getFinalDefault())
+ {
+ switch (value.getValue())
+ {
+ case XSDProhibitedSubstitutions.ALL:
+ {
+ newFinal.add(XSDComplexFinal.EXTENSION_LITERAL);
+ newFinal.add(XSDComplexFinal.RESTRICTION_LITERAL);
+ break;
+ }
+ case XSDProhibitedSubstitutions.EXTENSION:
+ {
+ newFinal.add(XSDComplexFinal.EXTENSION_LITERAL);
+ break;
+ }
+ case XSDProhibitedSubstitutions.RESTRICTION:
+ {
+ newFinal.add(XSDComplexFinal.RESTRICTION_LITERAL);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (XSDComplexFinal value : getLexicalFinal())
+ {
+ switch (value.getValue())
+ {
+ case XSDComplexFinal.ALL:
+ {
+ newFinal.add(XSDComplexFinal.EXTENSION_LITERAL);
+ newFinal.add(XSDComplexFinal.RESTRICTION_LITERAL);
+ break;
+ }
+ case XSDComplexFinal.EXTENSION:
+ case XSDComplexFinal.RESTRICTION:
+ {
+ newFinal.add(value);
+ break;
+ }
+ }
+ }
+ }
+
+ Collection<XSDComplexFinal> oldFinal = new ArrayList<XSDComplexFinal>(getFinal());
+ oldFinal.removeAll(newFinal);
+ if (!oldFinal.isEmpty())
+ {
+ getFinal().removeAll(oldFinal);
+ }
+ setListContentAndOrder(getFinal(), newFinal);
+
+ List<XSDProhibitedSubstitutions> newProhibitedSubstitutions = new ArrayList<XSDProhibitedSubstitutions>();
+ if (!isSetBlock())
+ {
+ for (XSDDisallowedSubstitutions value : getSchema().getBlockDefault())
+ {
+ switch (value.getValue())
+ {
+ case XSDDisallowedSubstitutions.ALL:
+ {
+ newProhibitedSubstitutions.add(XSDProhibitedSubstitutions.EXTENSION_LITERAL);
+ newProhibitedSubstitutions.add(XSDProhibitedSubstitutions.RESTRICTION_LITERAL);
+ break;
+ }
+ case XSDDisallowedSubstitutions.RESTRICTION:
+ {
+ newProhibitedSubstitutions.add(XSDProhibitedSubstitutions.RESTRICTION_LITERAL);
+ break;
+ }
+ case XSDDisallowedSubstitutions.EXTENSION:
+ {
+ newProhibitedSubstitutions.add(XSDProhibitedSubstitutions.EXTENSION_LITERAL);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (XSDProhibitedSubstitutions value : getBlock())
+ {
+ switch (value.getValue())
+ {
+ case XSDProhibitedSubstitutions.ALL:
+ {
+ newProhibitedSubstitutions.add(XSDProhibitedSubstitutions.EXTENSION_LITERAL);
+ newProhibitedSubstitutions.add(XSDProhibitedSubstitutions.RESTRICTION_LITERAL);
+ break;
+ }
+ case XSDProhibitedSubstitutions.EXTENSION:
+ case XSDProhibitedSubstitutions.RESTRICTION:
+ {
+ newProhibitedSubstitutions.add(value);
+ break;
+ }
+ }
+ }
+ }
+
+ Collection<XSDProhibitedSubstitutions> oldProhibitedSubstitutions = new ArrayList<XSDProhibitedSubstitutions>(getProhibitedSubstitutions());
+ oldProhibitedSubstitutions.removeAll(newProhibitedSubstitutions);
+ if (!oldProhibitedSubstitutions.isEmpty())
+ {
+ getProhibitedSubstitutions().removeAll(oldProhibitedSubstitutions);
+ }
+ setListContentAndOrder(getProhibitedSubstitutions(), newProhibitedSubstitutions);
+ }
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ analysisState = UNANALYZED;
+ super.traverseToRootForAnalysis();
+ }
+
+ protected XSDParticle extensionParticle;
+ protected XSDWildcardImpl effectiveWildcard;
+ @Override
+ protected void handleAnalysis()
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ XSDComplexTypeContent newContentType = null;
+ XSDContentTypeCategory newContentTypeCategory = XSDContentTypeCategory.EMPTY_LITERAL;
+ XSDWildcard localWildcard = getAttributeWildcardContent();
+ XSDWildcard baseWildcard = null;
+ if (theBaseTypeDefinition != null && theBaseTypeDefinition.getContainer() != null)
+ {
+ if (!((XSDConcreteComponentImpl)theBaseTypeDefinition).analyze() && !XSDConstants.isURType(theBaseTypeDefinition) && theBaseTypeDefinition.isCircular())
+ {
+ analysisState = CIRCULAR;
+ }
+ if (theBaseTypeDefinition != this)
+ {
+ List<XSDAttributeUse> baseAttributeUses = Collections.emptyList();
+ if (theBaseTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ baseAttributeUses = ((XSDComplexTypeDefinition)theBaseTypeDefinition).getAttributeUses();
+ }
+ EList<XSDAttributeUse> theAttributeUses = getAttributeUses();
+ List<XSDAttributeUse> newAttributeUses = XSDAttributeGroupDefinitionImpl.getAttributeUses(getAttributeContents(), baseAttributeUses);
+ List<XSDAttributeUse> remainingAttributeUses = new ArrayList<XSDAttributeUse>(theAttributeUses);
+ remainingAttributeUses.removeAll(newAttributeUses);
+ theAttributeUses.removeAll(remainingAttributeUses);
+ setListContentAndOrder(theAttributeUses, newAttributeUses);
+
+ if (XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod() &&
+ theBaseTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ baseWildcard = ((XSDComplexTypeDefinition)theBaseTypeDefinition).getAttributeWildcard();
+ }
+ }
+ }
+
+ if (localWildcard != null)
+ {
+ ((XSDConcreteComponentImpl)localWildcard).analyze();
+ }
+ XSDWildcard newAttributeWildcard =
+ XSDAttributeGroupDefinitionImpl.getAttributeWildcard(baseWildcard, localWildcard, getAttributeContents());
+
+ if (newAttributeWildcard != null && newAttributeWildcard.getContainer() == null)
+ {
+ if (effectiveWildcard == null)
+ {
+ effectiveWildcard = (XSDWildcardImpl)getXSDFactory().createXSDWildcard();
+ // effectiveWildcard.setOwner(this);
+ setSyntheticWildcard(effectiveWildcard);
+ }
+ effectiveWildcard.setLike(newAttributeWildcard);
+ newAttributeWildcard = effectiveWildcard;
+ }
+
+ if (newAttributeWildcard != getAttributeWildcard())
+ {
+ setAttributeWildcard(newAttributeWildcard);
+ }
+
+ newContentType = getContent();
+ if (newContentType instanceof XSDSimpleTypeDefinition)
+ {
+ ((XSDConcreteComponentImpl)newContentType).analyze();
+ newContentTypeCategory = XSDContentTypeCategory.SIMPLE_LITERAL;
+ if (XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod())
+ {
+ newContentType = ((XSDSimpleTypeDefinition)newContentType).getBaseTypeDefinition();
+ }
+ }
+ else
+ {
+ newContentTypeCategory = isMixed() ? XSDContentTypeCategory.MIXED_LITERAL : XSDContentTypeCategory.ELEMENT_ONLY_LITERAL;
+ boolean isEmptyContent = isEmptyContent((XSDParticle)newContentType);
+ if (XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod())
+ {
+ if (theBaseTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition complexBaseTypeDefinition = (XSDComplexTypeDefinition)theBaseTypeDefinition;
+
+ if (isEmptyContent)
+ {
+ if (!isMixed())
+ {
+ newContentTypeCategory = complexBaseTypeDefinition.getContentTypeCategory();
+ }
+ newContentType = complexBaseTypeDefinition.getContentType();
+ }
+ else
+ {
+ XSDComplexTypeContent baseContentType = complexBaseTypeDefinition.getContentType();
+ if (baseContentType instanceof XSDParticle)
+ {
+ if (extensionParticle == null)
+ {
+ extensionParticle = getXSDFactory().createXSDParticle();
+ setSyntheticParticle(extensionParticle);
+ extensionParticle.setMinOccurs(1);
+ extensionParticle.setMaxOccurs(1);
+ XSDModelGroup xsdModelGroup = getXSDFactory().createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ extensionParticle.setContent(xsdModelGroup);
+ }
+
+ XSDModelGroup extensionGroup = (XSDModelGroup)extensionParticle.getTerm();
+ List<XSDParticle> newParticles = new ArrayList<XSDParticle>();
+ newParticles.add((XSDParticle)baseContentType);
+ if (getContent() != null)
+ {
+ newParticles.add((XSDParticle)getContent());
+ }
+ List<XSDParticle> remainingParticles = new ArrayList<XSDParticle>(extensionGroup.getParticles());
+ remainingParticles.removeAll(newParticles);
+ if (!remainingParticles.isEmpty())
+ {
+ extensionGroup.getParticles().removeAll(remainingParticles);
+ }
+ setListContentAndOrder(extensionGroup.getParticles(), newParticles);
+
+ if (isEmptyContent((XSDParticle)baseContentType))
+ {
+ newContentType = getContent();
+ }
+ else
+ {
+ newContentType = extensionParticle;
+ }
+ }
+ }
+ }
+ else if (isEmptyContent)
+ {
+ newContentTypeCategory = XSDContentTypeCategory.EMPTY_LITERAL;
+ }
+ }
+ else
+ {
+ if (isEmptyContent)
+ {
+ if (isMixed())
+ {
+ if (extensionParticle == null)
+ {
+ extensionParticle = getXSDFactory().createXSDParticle();
+ setSyntheticParticle(extensionParticle);
+ extensionParticle.setMinOccurs(1);
+ extensionParticle.setMaxOccurs(1);
+ XSDModelGroup xsdModelGroup = getXSDFactory().createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ extensionParticle.setContent(xsdModelGroup);
+ }
+ newContentType = extensionParticle;
+ }
+ else
+ {
+ newContentTypeCategory = XSDContentTypeCategory.EMPTY_LITERAL;
+ }
+ }
+ }
+ }
+
+ if (newContentTypeCategory != getContentTypeCategory())
+ {
+ setContentTypeCategory(newContentTypeCategory);
+ }
+
+ if (newContentType != getContentType())
+ {
+ setContentType(newContentType);
+ }
+
+ if (newAttributeWildcard != getAttributeWildcard())
+ {
+ setAttributeWildcard(newAttributeWildcard);
+ }
+
+ if (analysisState == ANALYZING)
+ {
+ analysisState = ANALYZED;
+ }
+ super.handleAnalysis();
+ }
+
+ protected boolean isEmptyContent(XSDParticle xsdParticle)
+ {
+ if (xsdParticle == null)
+ {
+ return true;
+ }
+ else
+ {
+ XSDParticleContent xsdParticleContent = xsdParticle.getContent();
+ if (xsdParticleContent instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdParticleContent;
+ switch (xsdModelGroup.getCompositor().getValue())
+ {
+ case XSDCompositor.SEQUENCE:
+ case XSDCompositor.ALL:
+ {
+ return xsdModelGroup.getParticles().isEmpty();
+ }
+ case XSDCompositor.CHOICE:
+ {
+ return xsdModelGroup.getParticles().isEmpty() && xsdParticle.getMinOccurs() == 0;
+ }
+ default:
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ if (getComplexType() != null && getComplexType().getTerm() instanceof XSDModelGroupImpl)
+ {
+ ((XSDModelGroupImpl)getComplexType().getTerm()).validateRoot();
+ }
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (getContainer() instanceof XSDElementDeclaration)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MIXED_ATTRIBUTE
+ });
+
+ checkComplexContent("localComplexType", XSDConstants.PART1, "element-complexType", theElement);
+ }
+ else
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ new String []
+ {
+ XSDConstants.ABSTRACT_ATTRIBUTE,
+ XSDConstants.BLOCK_ATTRIBUTE,
+ XSDConstants.FINAL_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.MIXED_ATTRIBUTE
+ });
+
+ checkComplexContent("topLevelComplexType", XSDConstants.PART1, "element-complexType", theElement);
+
+ checkBuiltInTypeConstraint
+ ("boolean",
+ null,
+ XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ XSDConstants.ABSTRACT_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("derivationSet",
+ null,
+ XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ XSDConstants.BLOCK_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("derivationSet",
+ null,
+ XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ XSDConstants.FINAL_ATTRIBUTE,
+ false);
+
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("boolean",
+ null,
+ XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ XSDConstants.MIXED_ATTRIBUTE,
+ false);
+
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.COMPLEXCONTENT_ELEMENT:
+ {
+ Element childElement = (Element)child;
+
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-complexContent",
+ childElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MIXED_ATTRIBUTE
+ });
+
+ checkElementComplexContent("complexContent", XSDConstants.PART1, "element-complexContent", childElement);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-complexContent",
+ childElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("boolean",
+ null,
+ XSDConstants.PART1,
+ "element-complexContent",
+ childElement,
+ XSDConstants.MIXED_ATTRIBUTE,
+ false);
+
+ for (Node grandChild = childElement.getFirstChild(); grandChild != null; grandChild = grandChild.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(grandChild))
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ {
+ Element grandChildElement = (Element)grandChild;
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-complexContent::extension",
+ grandChildElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.BASE_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-complexContent::extension",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkComplexContent("extensionType", XSDConstants.PART1, "element-complexContent::extension", grandChildElement);
+
+ break;
+ }
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ Element grandChildElement = (Element)grandChild;
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-complexContent::restriction",
+ grandChildElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.BASE_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-complexContent::restriction",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkComplexContent
+ ("complexRestrictionType", XSDConstants.PART1, "element-complexContent::restriction", grandChildElement);
+
+ break;
+ }
+ }
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ if (!(getContainer() instanceof XSDElementDeclaration))
+ {
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+ }
+
+ Map<String, XSDAttributeDeclaration> prohibitedAttributeURIs = null;
+
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theBaseTypeDefinition == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", "");
+ }
+ else if (theBaseTypeDefinition.getContainer() == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", theBaseTypeDefinition.getURI());
+ }
+ else
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = null;
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = null;
+ switch (getContentTypeCategory().getValue())
+ {
+ case XSDContentTypeCategory.SIMPLE:
+ {
+ if (theBaseTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ xsdComplexTypeDefinition = (XSDComplexTypeDefinition)theBaseTypeDefinition;
+ xsdSimpleTypeDefinition = xsdComplexTypeDefinition.getSimpleType();
+
+ // EATM this contradicts the more relaxed constraint of derivation-ok-restriction.5.1.2
+ // if (xsdSimpleTypeDefinition == null)
+ // {
+ // createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-ct.2.1", theBaseTypeDefinition.getURI());
+ // }
+ }
+ else
+ {
+ xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)theBaseTypeDefinition;
+ if (getDerivationMethod() == XSDDerivationMethod.RESTRICTION_LITERAL)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-ct.2.2", theBaseTypeDefinition.getURI());
+ }
+ // else if (!XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()) &&
+ // XSDConstants.isAnySimpleType(xsdSimpleTypeDefinition))
+ // {
+ // createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-ct-retricts.0", theBaseTypeDefinition.getURI());
+ // }
+ }
+ break;
+ }
+ case XSDContentTypeCategory.EMPTY:
+ case XSDContentTypeCategory.MIXED:
+ case XSDContentTypeCategory.ELEMENT_ONLY:
+ {
+ if (theBaseTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ xsdComplexTypeDefinition = (XSDComplexTypeDefinition)theBaseTypeDefinition;
+ }
+ else
+ {
+ xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)theBaseTypeDefinition;
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-ct.1", theBaseTypeDefinition.getURI());
+ }
+ break;
+ }
+ }
+
+ if (getDerivationMethod() == XSDDerivationMethod.EXTENSION_LITERAL)
+ {
+ if (xsdComplexTypeDefinition != null)
+ {
+ prohibitedAttributeURIs = getProhibitedAttributeURIs(xsdComplexTypeDefinition);
+ if (xsdComplexTypeDefinition.getFinal().contains(XSDComplexFinal.EXTENSION_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-ct-extends.1.1", theBaseTypeDefinition.getURI());
+ }
+ else
+ {
+ for (XSDAttributeUse baseXSDAttributeUse : xsdComplexTypeDefinition.getAttributeUses())
+ {
+ boolean matched = false;
+ XSDAttributeDeclaration baseXSDAttributeDeclaration = baseXSDAttributeUse.getAttributeDeclaration();
+ for (XSDAttributeUse xsdAttributeUse : getAttributeUses())
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ if (xsdAttributeDeclaration.hasSameNameAndTargetNamespace(baseXSDAttributeDeclaration))
+ {
+ if (xsdAttributeDeclaration.getTypeDefinition() != baseXSDAttributeDeclaration.getTypeDefinition())
+ {
+ getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "cos-ct-extends.1.2.2",
+ xsdAttributeDeclaration.getURI(),
+ baseXSDAttributeDeclaration.getTypeDefinition().getURI());
+ }
+
+ matched = true;
+ break;
+ }
+ }
+
+ if (!matched)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "cos-ct-extends.1.2.1",
+ baseXSDAttributeDeclaration.getURI());
+ }
+ }
+
+ // EATM this is impossible to hit by virtue of how the wildcard is constructed.
+ //
+ XSDWildcard baseXSDWildcard = xsdComplexTypeDefinition.getAttributeWildcard();
+ if (baseXSDWildcard != null)
+ {
+ XSDWildcard xsdWildcard = getAttributeWildcard();
+ if (xsdWildcard == null || !baseXSDWildcard.isWildcardSubset(xsdWildcard))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-ct-extends.1.3");
+ }
+ }
+
+ switch (xsdComplexTypeDefinition.getContentTypeCategory().getValue())
+ {
+ case XSDContentTypeCategory.SIMPLE:
+ {
+ if (getContentType() != xsdComplexTypeDefinition.getContentType())
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "cos-ct-extends.1.4.1",
+ xsdComplexTypeDefinition.getSimpleType().getURI());
+ }
+ break;
+ }
+ case XSDContentTypeCategory.EMPTY:
+ {
+ break;
+ }
+ case XSDContentTypeCategory.MIXED:
+ case XSDContentTypeCategory.ELEMENT_ONLY:
+ {
+ // EATM problems in spec since definition ignores "mixed" attribute we can't validate it here.
+ //
+ if (getContentTypeCategory() != xsdComplexTypeDefinition.getContentTypeCategory() ||
+ isSetMixed() && isMixed() != xsdComplexTypeDefinition.isMixed())
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "cos-ct-extends.1.4.2.2.2.1",
+ xsdComplexTypeDefinition.getContentTypeCategory().toString());
+ }
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ // EATM can this happen?
+ //
+ if (theBaseTypeDefinition != getContentType())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-ct-extends.2.1");
+ }
+ // else if the base isn't final for extension, EATM but we can't test for that because it's not in the spec...
+ }
+ }
+ else
+ {
+ // The null cases are already diagnosed; EATM except for errors above
+ //
+ if (xsdComplexTypeDefinition != null)
+ {
+ if (xsdComplexTypeDefinition.getFinal().contains(XSDComplexFinal.RESTRICTION_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.1", xsdComplexTypeDefinition.getURI());
+ }
+
+ XSDComplexTypeDefinitionImpl.validateAttributeGroup
+ (this,
+ getAttributeWildcardContent(),
+ xsdComplexTypeDefinition.getAttributeUses(),
+ getAttributeUses(),
+ xsdComplexTypeDefinition.getAttributeWildcard(),
+ getAttributeWildcard());
+
+ if (getSimpleType() != null)
+ {
+ if (xsdSimpleTypeDefinition != null)
+ {
+ XSDTypeDefinition badType = getSimpleType().getBadTypeDerivation(xsdSimpleTypeDefinition, true, true);
+ if (badType != null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "derivation-ok-restriction.5.1.1",
+ getSimpleType().getURI(),
+ xsdSimpleTypeDefinition.getURI());
+ }
+ }
+ else if (xsdComplexTypeDefinition.getContentTypeCategory() != XSDContentTypeCategory.MIXED_LITERAL ||
+ !xsdComplexTypeDefinition.getComplexType().isEmptiable())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.5.1.2");
+ }
+ }
+ else if (getComplexType() == null || getContentTypeCategory() == XSDContentTypeCategory.EMPTY_LITERAL)
+ {
+ if (xsdComplexTypeDefinition.getContentTypeCategory() == XSDContentTypeCategory.SIMPLE_LITERAL ||
+ xsdComplexTypeDefinition.getContentTypeCategory() != XSDContentTypeCategory.EMPTY_LITERAL &&
+ !xsdComplexTypeDefinition.getComplexType().isEmptiable())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.5.2");
+ }
+ }
+ else
+ {
+ // EATM the spec kind of trails off here without adequate diagnostics for explanation.
+ //
+ if (xsdComplexTypeDefinition.getComplexType() == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.5.3.1");
+ }
+ else if (getContentTypeCategory() == XSDContentTypeCategory.MIXED_LITERAL &&
+ xsdComplexTypeDefinition.getContentTypeCategory() != XSDContentTypeCategory.MIXED_LITERAL)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.5.3.2");
+ }
+ else if (!((XSDParticleImpl)getComplexType()).isSubset(xsdComplexTypeDefinition.getComplexType(), true))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.5.3.3");
+ }
+ }
+ }
+ }
+ }
+
+ XSDWildcard theAttributeWildcard = getAttributeWildcard();
+ if (theAttributeWildcard != null &&
+ theAttributeWildcard.getNamespaceConstraint().isEmpty() &&
+ theAttributeWildcard.getNamespaceConstraintCategory() == XSDNamespaceConstraintCategory.NOT_LITERAL)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-ct.4");
+ }
+
+ if (isCircular() && !XSDConstants.isURType(this))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "ct-props-correct.3");
+ }
+
+ XSDAttributeDeclaration idAttribute = null;
+
+ Set<String> uris = new HashSet<String>();
+ for (XSDAttributeUse xsdAttributeUse : getAttributeUses())
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ String uri = xsdAttributeDeclaration.getURI();
+ if (prohibitedAttributeURIs != null && prohibitedAttributeURIs.containsKey(uri))
+ {
+ getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "cos-ct-extends.1.5.1", uri);
+ }
+ if (!uris.add(uri))
+ {
+ getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "ct-props-correct.4", uri);
+ }
+ if (XSDConstants.isOrIsDerivedFromID(xsdAttributeDeclaration.getTypeDefinition()))
+ {
+ if (idAttribute != null)
+ {
+ getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "ct-props-correct.5", xsdAttributeDeclaration.getURI(), idAttribute.getURI());
+ }
+ else
+ {
+ idAttribute = xsdAttributeDeclaration;
+ }
+ }
+ }
+ }
+
+ protected static Map<String, XSDAttributeDeclaration> getProhibitedAttributeURIs(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ Map<String, XSDAttributeDeclaration> result = getProhibitedAttributes(xsdComplexTypeDefinition.getAttributeContents());
+ if (xsdComplexTypeDefinition.getBaseTypeDefinition() instanceof XSDComplexTypeDefinition &&
+ !xsdComplexTypeDefinition.isCircular())
+ {
+ result.putAll
+ (getProhibitedAttributes
+ (((XSDComplexTypeDefinition)xsdComplexTypeDefinition.getBaseTypeDefinition()).getAttributeContents()));
+ }
+ return result;
+ }
+
+ protected static Map<String, XSDAttributeDeclaration> getProhibitedAttributes(Collection<XSDAttributeGroupContent> xsdAttributeContents)
+ {
+ Map<String, XSDAttributeDeclaration> result = new HashMap<String, XSDAttributeDeclaration>();
+ for (XSDAttributeGroupContent xsdAttributeGroupContent : xsdAttributeContents)
+ {
+ if (xsdAttributeGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition)xsdAttributeGroupContent;
+ result.putAll(getProhibitedAttributes(xsdAttributeGroupDefinition.getContents()));
+ }
+ else
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdAttributeGroupContent;
+ if (xsdAttributeUse.getUse() == XSDAttributeUseCategory.PROHIBITED_LITERAL)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ result.put(xsdAttributeDeclaration.getURI(), xsdAttributeDeclaration);
+ }
+ }
+ }
+ return result;
+ }
+
+ public static void validateAttributeGroup
+ (XSDConcreteComponentImpl xsdConcreteComponent,
+ XSDWildcard containedWildcard,
+ EList<XSDAttributeUse> baseXSDAttributeUses,
+ EList<XSDAttributeUse> xsdAttributeUses,
+ XSDWildcard baseXSDWildcard,
+ XSDWildcard xsdWildcard)
+ {
+ List<XSDAttributeUse> unmatchedBaseAttributeUses = new ArrayList<XSDAttributeUse>(baseXSDAttributeUses);
+ for (XSDAttributeUse xsdAttributeUse : xsdAttributeUses)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ boolean matched = false;
+ for (XSDAttributeUse baseXSDAttributeUse : baseXSDAttributeUses)
+ {
+ XSDAttributeDeclaration baseXSDAttributeDeclaration = baseXSDAttributeUse.getAttributeDeclaration();
+ if (xsdAttributeDeclaration.hasSameNameAndTargetNamespace(baseXSDAttributeDeclaration))
+ {
+ if (xsdAttributeDeclaration.getTypeDefinition() != null)
+ {
+ XSDTypeDefinition badType =
+ xsdAttributeDeclaration.getTypeDefinition().getBadTypeDerivation
+ (baseXSDAttributeDeclaration.getTypeDefinition(), true, true);
+ if (badType != null)
+ {
+ xsdConcreteComponent.getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "derivation-ok-restriction.2.1.2",
+ xsdAttributeDeclaration.getURI(),
+ baseXSDAttributeDeclaration.getTypeDefinition().getURI());
+ }
+ }
+
+ if (baseXSDAttributeUse.isRequired() && !xsdAttributeUse.isRequired())
+ {
+ xsdConcreteComponent.getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.2.1.1", xsdAttributeDeclaration.getURI());
+ }
+
+ unmatchedBaseAttributeUses.remove(baseXSDAttributeUse);
+ matched = true;
+ break;
+ }
+ }
+
+ if (!matched)
+ {
+ if (baseXSDWildcard == null || !baseXSDWildcard.allows(xsdAttributeDeclaration.getTargetNamespace()))
+ {
+ xsdConcreteComponent.getDiagnosticTarget(xsdAttributeUse).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.2.2", xsdAttributeDeclaration.getURI());
+ }
+ }
+ }
+
+ for (XSDAttributeUse baseXSDAttributeUse : unmatchedBaseAttributeUses)
+ {
+ if (baseXSDAttributeUse.isRequired())
+ {
+ xsdConcreteComponent.createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "derivation-ok-restriction.3",
+ baseXSDAttributeUse.getAttributeDeclaration().getURI());
+ }
+ }
+
+ if (xsdWildcard != null)
+ {
+ if (baseXSDWildcard == null || !xsdWildcard.isWildcardSubset(baseXSDWildcard))
+ {
+ XSDConcreteComponentImpl target = xsdConcreteComponent;
+ if (containedWildcard != null)
+ {
+ target = (XSDConcreteComponentImpl)containedWildcard;
+ }
+ target.createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "derivation-ok-restriction.4");
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ switch (XSDConstants.nodeType(changedElement))
+ {
+ case XSDConstants.COMPLEXTYPE_ELEMENT:
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.ABSTRACT_ATTRIBUTE))
+ {
+ String newAbstract = changedElement.getAttributeNS(null, XSDConstants.ABSTRACT_ATTRIBUTE);
+ setAbstract(convertToBoolean(newAbstract));
+ }
+ else
+ {
+ unsetAbstract();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE))
+ {
+ setStringLexicalFinal(changedElement.getAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE));
+ }
+ else if (isSetLexicalFinal())
+ {
+ unsetLexicalFinal();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.BLOCK_ATTRIBUTE))
+ {
+ setStringBlock(changedElement.getAttributeNS(null, XSDConstants.BLOCK_ATTRIBUTE));
+ }
+ else if (isSetBlock())
+ {
+ unsetBlock();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE))
+ {
+ String newAbstract = changedElement.getAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE);
+ setMixed(convertToBoolean(newAbstract));
+ }
+ else
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair != null &&
+ contentElementPair[0] != null &&
+ contentElementPair[0].hasAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE))
+ {
+ String newAbstract = contentElementPair[0].getAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE);
+ setMixed(convertToBoolean(newAbstract));
+ }
+ else
+ {
+ unsetMixed();
+ }
+ }
+
+ break;
+ }
+ case XSDConstants.COMPLEXCONTENT_ELEMENT:
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE))
+ {
+ String newMixed = changedElement.getAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE);
+ setMixed(convertToBoolean(newMixed));
+ }
+ else
+ {
+ Element theElement = getElement();
+ if (!theElement.hasAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE))
+ {
+ unsetMixed();
+ }
+ }
+ break;
+ }
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+
+ XSDTypeDefinition newBaseTypeDefinition = getBaseTypeDefinition();
+ if (changedElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE))
+ {
+ newBaseTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.BASE_ATTRIBUTE));
+ }
+ handleNewBaseTypeDefinition(newBaseTypeDefinition);
+ break;
+ }
+ }
+ }
+
+ protected XSDTypeDefinition handleNewBaseTypeDefinition(XSDTypeDefinition newBaseTypeDefinition)
+ {
+ if (newBaseTypeDefinition == null)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema == null)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ newBaseTypeDefinition =
+ XSDSchemaImpl.getSchemaForSchema(theElement.getNamespaceURI()).resolveComplexTypeDefinition("anyType");
+ }
+ else
+ {
+ newBaseTypeDefinition = this;
+ }
+ }
+ else
+ {
+ newBaseTypeDefinition = xsdSchema.getSchemaForSchema().resolveComplexTypeDefinition("anyType");
+ }
+ }
+
+ if (eContainer instanceof XSDRedefine)
+ {
+ XSDSchema redefinedSchema = ((XSDRedefine)eContainer).getIncorporatedSchema();
+ if (redefinedSchema != null)
+ {
+ Map<XSDComponent, XSDComponent> redefinitionMap = ((XSDSchemaImpl)redefinedSchema).getRedefinitionMap();
+ if (redefinitionMap.containsKey(newBaseTypeDefinition))
+ {
+ XSDComponent replacement = redefinitionMap.get(this);
+ if (replacement != null)
+ {
+ newBaseTypeDefinition = (XSDTypeDefinition)replacement;
+ }
+ }
+ }
+ }
+
+ if (newBaseTypeDefinition != getBaseTypeDefinition())
+ {
+ setBaseTypeDefinition(newBaseTypeDefinition);
+ }
+
+ return newBaseTypeDefinition;
+ }
+
+ @Override
+ protected Node getAdoptionParentNode(EReference eReference)
+ {
+ if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT ||
+ eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS ||
+ eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT)
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair[1] != null)
+ {
+ return contentElementPair[1];
+ }
+ }
+
+ return super.getAdoptionParentNode(eReference);
+ }
+
+ @Override
+ protected Collection<Element> getContentNodes(Element changedElement)
+ {
+ Collection<Element> result = new ArrayList<Element>();
+ for (Node child = getElement().getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.SIMPLECONTENT_ELEMENT:
+ {
+ result.add((Element)child);
+
+ // DROP to case
+ }
+ case XSDConstants.COMPLEXCONTENT_ELEMENT:
+ {
+ for (Node grandChild = child.getFirstChild(); grandChild != null; grandChild = grandChild.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(grandChild))
+ {
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ result.add((Element)grandChild);
+ break;
+ }
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ for (Node greatGrandChild = grandChild.getFirstChild();
+ greatGrandChild != null;
+ greatGrandChild = greatGrandChild.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(greatGrandChild))
+ {
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ result.add((Element)greatGrandChild);
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ result.add((Element)child);
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ {
+ XSDParticle xsdParticle = XSDParticleImpl.createParticle(child);
+ if (xsdParticle != null)
+ {
+ newContents.add(xsdParticle);
+ }
+ break;
+ }
+ case XSDConstants.SIMPLECONTENT_ELEMENT:
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDSimpleTypeDefinitionImpl.createSimpleTypeDefinition(child);
+ if (xsdSimpleTypeDefinition != null)
+ {
+ newContents.add(xsdSimpleTypeDefinition);
+ }
+ break;
+ }
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ {
+ XSDAttributeUse xsdAttributeUse = XSDAttributeUseImpl.createAttributeUse(child);
+ if (xsdAttributeUse != null)
+ {
+ newContents.add(xsdAttributeUse);
+ }
+ break;
+ }
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = XSDAttributeGroupDefinitionImpl.createAttributeGroupDefinition(child);
+ if (xsdAttributeGroupDefinition != null)
+ {
+ newContents.add(xsdAttributeGroupDefinition);
+ }
+ break;
+ }
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ {
+ XSDWildcard xsdWildcard = XSDWildcardImpl.createWildcard(child);
+ if (xsdWildcard != null)
+ {
+ newContents.add(xsdWildcard);
+ }
+ break;
+ }
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ newContents.add(xsdAnnotation);
+ }
+ break;
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_TYPE_DEFINITION__ANNOTATION, newContents, remainingContents);
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION, newContents, remainingContents);
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION, newContents, remainingContents);
+
+ XSDTypeDefinition newBaseTypeDefinition = null;
+ XSDComplexTypeContent newContent = null;
+
+ if (!newContents.isEmpty() && newContents.get(0) instanceof XSDComplexTypeContent)
+ {
+ newContent = (XSDComplexTypeContent)newContents.get(0);
+ newContents.remove(0);
+ }
+
+ if (newContent != getContent())
+ {
+ remainingContents.remove(getContent());
+ setContent(newContent);
+ }
+
+ XSDWildcard newAttributeWildcard = null;
+ if (!newContents.isEmpty())
+ {
+ int lastIndex = newContents.size() - 1;
+ Object last = newContents.get(lastIndex);
+ if (last instanceof XSDWildcard)
+ {
+ newAttributeWildcard = (XSDWildcard)last;
+ if (XSDConstants.nodeType(newAttributeWildcard.getElement()) == XSDConstants.ANYATTRIBUTE_ELEMENT)
+ {
+ newContents.remove(lastIndex);
+ }
+ else
+ {
+ newAttributeWildcard = null;
+ }
+ }
+ }
+ if (newAttributeWildcard != getAttributeWildcardContent())
+ {
+ remainingContents.remove(getAttributeWildcardContent());
+ setAttributeWildcardContent(newAttributeWildcard);
+ }
+
+ if (!remainingContents.isEmpty())
+ {
+ getAttributeContents().removeAll(remainingContents);
+ }
+ if (!newContents.isEmpty())
+ {
+ for (Iterator<XSDConcreteComponent> i = newContents.iterator(); i.hasNext(); )
+ {
+ if (!(i.next() instanceof XSDAttributeGroupContent))
+ {
+ i.remove();
+ }
+ }
+ @SuppressWarnings("unchecked") List<XSDAttributeGroupContent> list = (List<XSDAttributeGroupContent>)(List<?>)newContents;
+ setListContentAndOrder(getAttributeContents(), list);
+ }
+
+ XSDDerivationMethod newDerivationMethod = null;
+ Element theElement = getElement();
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ int childNodeType = XSDConstants.nodeType(child);
+ switch (childNodeType)
+ {
+ case XSDConstants.SIMPLECONTENT_ELEMENT:
+ case XSDConstants.COMPLEXCONTENT_ELEMENT:
+ {
+ for (Node grandChild = child.getFirstChild(); grandChild != null; grandChild = grandChild.getNextSibling())
+ {
+ int grandChildNodeType = XSDConstants.nodeType(grandChild);
+ switch (grandChildNodeType)
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ newDerivationMethod =
+ grandChildNodeType == XSDConstants.EXTENSION_ELEMENT ?
+ XSDDerivationMethod.EXTENSION_LITERAL :
+ XSDDerivationMethod.RESTRICTION_LITERAL;
+
+ Element elementGrandChild = (Element)grandChild;
+ if (elementGrandChild.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE))
+ {
+ newBaseTypeDefinition =
+ resolveTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(elementGrandChild, XSDConstants.BASE_ATTRIBUTE));
+ }
+ break LOOP;
+ }
+ }
+ }
+ break LOOP;
+ }
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ {
+ break LOOP;
+ }
+ }
+ }
+
+ handleNewBaseTypeDefinition(newBaseTypeDefinition);
+
+ if (newDerivationMethod == null)
+ {
+ unsetDerivationMethod();
+ }
+ else if (!isSetDerivationMethod() || newDerivationMethod != getDerivationMethod())
+ {
+ setDerivationMethod(newDerivationMethod);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT)
+ {
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.ABSTRACT_ATTRIBUTE, isSetAbstract() ? isAbstract() ? "true" : "false" : null);
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__MIXED)
+ {
+ if (theElement != null)
+ {
+ Element targetElement = theElement;
+ if (!theElement.hasAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE))
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair != null &&
+ contentElementPair[0] != null &&
+ contentElementPair[0].hasAttributeNS(null, XSDConstants.MIXED_ATTRIBUTE))
+ {
+ targetElement = contentElementPair[0];
+ }
+ }
+ niceSetAttribute(targetElement, XSDConstants.MIXED_ATTRIBUTE, isSetMixed() ? isMixed() ? "true" : "false" : null);
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL)
+ {
+ if (theElement != null)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.FINAL_ATTRIBUTE,
+ getStringLexicalFinal());
+ }
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__BLOCK)
+ {
+ if (theElement != null)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.BLOCK_ATTRIBUTE,
+ getStringBlock());
+ }
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD)
+ {
+ if (theElement != null && !isReconciling && (eAttribute == null || !abbreviate()))
+ {
+ Element [] contentElementPair = findOrCreateContentElementPair();
+ if (contentElementPair[1] != null &&
+ isSetDerivationMethod() &&
+ !contentElementPair[1].getLocalName().equals(getDerivationMethod().getName()))
+ {
+ Element newElement = createDerivationElement();
+ forceReplace(newElement, contentElementPair[1]);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION)
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theElement != null && !isReconciling && (eReference == null || !abbreviate()))
+ {
+ Element [] contentElementPair = findOrCreateContentElementPair();
+ if (contentElementPair[1] != null)
+ {
+ XSDSimpleTypeDefinitionImpl theSimpleType = (XSDSimpleTypeDefinitionImpl)getSimpleType();
+ if (theSimpleType != null)
+ {
+ theSimpleType.updatingDOM = true;
+ }
+ niceSetAttributeURIValue
+ (contentElementPair[1],
+ XSDConstants.BASE_ATTRIBUTE,
+ theBaseTypeDefinition == null ?
+ theElement.getNamespaceURI() + "#anyType" :
+ theBaseTypeDefinition.getURI());
+ if (theSimpleType != null)
+ {
+ theSimpleType.updatingDOM = false;
+ }
+ }
+ }
+ }
+ }
+
+ protected boolean abbreviate()
+ {
+ Element theElement = getElement();
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if ((theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)) &&
+ XSDDerivationMethod.EXTENSION_LITERAL != getDerivationMethod() &&
+ !(getContent() instanceof XSDSimpleTypeDefinition) &&
+ getDerivationAnnotation() == null &&
+ getContentAnnotation() == null)
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair[1] != null)
+ {
+ for (Node child = contentElementPair[1].getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ forceEngulf(child, theElement, null);
+ niceRemoveChild(theElement, contentElementPair[0]);
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ protected Element [] findOrCreateContentElementPair()
+ {
+ Element theElement = getElement();
+ if (theElement != null && !isReconciling)
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair[0] == null || contentElementPair[1] == null)
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (((theBaseTypeDefinition != null && !XSDConstants.isURType(theBaseTypeDefinition)) ||
+ XSDDerivationMethod.EXTENSION_LITERAL == getDerivationMethod()) &&
+ !(getContent() instanceof XSDSimpleTypeDefinition))
+ {
+ contentElementPair = createContentElementPair();
+ Node startingNode = theElement.getFirstChild();
+ for (Node child = startingNode; child != null; child = child.getNextSibling())
+ {
+ if (XSDConstants.nodeType(child) == XSDConstants.ANNOTATION_ELEMENT)
+ {
+ startingNode = child.getNextSibling();
+ }
+ }
+
+ forceEngulf(contentElementPair[0], contentElementPair[1], theElement, startingNode);
+
+ changeReference(XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION);
+ }
+ }
+
+ return contentElementPair;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected Element [] getContentElementPair()
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ Element [] result = new Element [2];
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.SIMPLECONTENT_ELEMENT:
+ case XSDConstants.COMPLEXCONTENT_ELEMENT:
+ {
+ result[0] = (Element)child;
+ for (Node grandChild = child.getFirstChild(); grandChild != null; grandChild = grandChild.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(grandChild))
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ result[1] = (Element)grandChild;
+ break LOOP;
+ }
+ }
+ }
+ break LOOP;
+ }
+ }
+ }
+ return result;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ Node firstAdoptee = null;
+
+ if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT)
+ {
+ if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair != null)
+ {
+ if (contentElementPair[0] != null)
+ {
+ if (XSDConstants.nodeType(contentElementPair[0]) == XSDConstants.COMPLEXCONTENT_ELEMENT)
+ {
+ niceRemoveChild(getElement(), contentElementPair[0]);
+ }
+ if (contentElementPair[1] != null)
+ {
+ for (Node child = contentElementPair[1].getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ firstAdoptee = child;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ super.adoptContent(eReference, xsdConcreteComponent);
+
+ if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT)
+ {
+ Element theElement = getElement();
+ if (theElement != null && !isReconciling)
+ {
+ if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ changeReference(XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION);
+ }
+
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair != null && contentElementPair[1] != null)
+ {
+ if (firstAdoptee == null)
+ {
+ for (Node child = getElement().getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ firstAdoptee = child;
+ break;
+ }
+ }
+ }
+ }
+
+ if (firstAdoptee != null)
+ {
+ forceEngulf(firstAdoptee, contentElementPair[1], null);
+ }
+ }
+ }
+
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT)
+ {
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__ANNOTATION)
+ {
+ getAnnotations().add(0, (XSDAnnotation)xsdConcreteComponent);
+ }
+ else if (eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION)
+ {
+ getAnnotations().add(getAnnotation() == null ? 0 : 1, (XSDAnnotation)xsdConcreteComponent);
+ }
+ else if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION)
+ {
+ getAnnotations().add((XSDAnnotation)xsdConcreteComponent);
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ Node firstAdoptee = null;
+ if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT)
+ {
+ if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ Element [] contentElementPair = getContentElementPair();
+ if (contentElementPair != null)
+ {
+ if (contentElementPair[1] != null)
+ {
+ for (Node child = contentElementPair[1].getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.GROUP_ELEMENT:
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ firstAdoptee = child;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ super.orphanContent(eReference, xsdConcreteComponent);
+
+ if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT)
+ {
+ if (firstAdoptee != null)
+ {
+ Element theElement = getElement();
+ if (theElement != null && !isReconciling)
+ {
+ Element [] contentElementPair = findOrCreateContentElementPair();
+ if (contentElementPair != null && contentElementPair[1] != null)
+ {
+ forceEngulf(firstAdoptee, contentElementPair[1], null);
+ }
+ else
+ {
+ forceEngulf(firstAdoptee, theElement, null);
+ }
+ }
+ }
+
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT)
+ {
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__ANNOTATION ||
+ eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION ||
+ eReference == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION)
+ {
+ getAnnotations().remove(xsdConcreteComponent);
+ }
+ }
+
+ @Override
+ public XSDTypeDefinition getBaseType()
+ {
+ return getBaseTypeDefinition();
+ }
+
+ @Override
+ public XSDTypeDefinition getRootType()
+ {
+ return getRootTypeDefinition();
+ }
+
+ public XSDTypeDefinition getRootTypeDefinition()
+ {
+ XSDTypeDefinition result = this;
+ if (!isCircular())
+ {
+ for (XSDTypeDefinition theBaseType= result.getBaseType();
+ theBaseType!= null && !XSDConstants.isURType(theBaseType);
+ theBaseType = theBaseType.getBaseType())
+ {
+ result = theBaseType;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDParticle getSyntheticParticle()
+ {
+ return syntheticParticle;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSyntheticParticle(XSDParticle newSyntheticParticle, NotificationChain msgs)
+ {
+ XSDParticle oldSyntheticParticle = syntheticParticle;
+ syntheticParticle = newSyntheticParticle;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE, oldSyntheticParticle, newSyntheticParticle);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSyntheticParticle(XSDParticle newSyntheticParticle)
+ {
+ if (newSyntheticParticle != syntheticParticle)
+ {
+ NotificationChain msgs = null;
+ if (syntheticParticle != null)
+ msgs = ((InternalEObject)syntheticParticle).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE, null, msgs);
+ if (newSyntheticParticle != null)
+ msgs = ((InternalEObject)newSyntheticParticle).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE, null, msgs);
+ msgs = basicSetSyntheticParticle(newSyntheticParticle, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE, newSyntheticParticle, newSyntheticParticle));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard getSyntheticWildcard()
+ {
+ return syntheticWildcard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSyntheticWildcard(XSDWildcard newSyntheticWildcard, NotificationChain msgs)
+ {
+ XSDWildcard oldSyntheticWildcard = syntheticWildcard;
+ syntheticWildcard = newSyntheticWildcard;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD, oldSyntheticWildcard, newSyntheticWildcard);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSyntheticWildcard(XSDWildcard newSyntheticWildcard)
+ {
+ if (newSyntheticWildcard != syntheticWildcard)
+ {
+ NotificationChain msgs = null;
+ if (syntheticWildcard != null)
+ msgs = ((InternalEObject)syntheticWildcard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD, null, msgs);
+ if (newSyntheticWildcard != null)
+ msgs = ((InternalEObject)newSyntheticWildcard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD, null, msgs);
+ msgs = basicSetSyntheticWildcard(newSyntheticWildcard, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD, newSyntheticWildcard, newSyntheticWildcard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION:
+ return basicSetContentAnnotation(null, msgs);
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT:
+ return basicSetContent(null, msgs);
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS:
+ return ((InternalEList<?>)getAttributeContents()).basicRemove(otherEnd, msgs);
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ return basicSetAttributeWildcardContent(null, msgs);
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE:
+ return basicSetSyntheticParticle(null, msgs);
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD:
+ return basicSetSyntheticWildcard(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD:
+ return getDerivationMethod();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__FINAL:
+ return getFinal();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT:
+ return isAbstract();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY:
+ return getContentTypeCategory();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS:
+ return getProhibitedSubstitutions();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL:
+ return getLexicalFinal();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BLOCK:
+ return getBlock();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__MIXED:
+ return isMixed();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION:
+ return getContentAnnotation();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ return getBaseTypeDefinition();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT:
+ return getContent();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE:
+ return getContentType();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES:
+ return getAttributeUses();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS:
+ return getAttributeContents();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD:
+ return getAttributeWildcard();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ return getAttributeWildcardContent();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ROOT_TYPE_DEFINITION:
+ return getRootTypeDefinition();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE:
+ return getSyntheticParticle();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD:
+ return getSyntheticWildcard();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD:
+ setDerivationMethod((XSDDerivationMethod)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__FINAL:
+ getFinal().clear();
+ getFinal().addAll((Collection<? extends XSDComplexFinal>)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT:
+ setAbstract((Boolean)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY:
+ setContentTypeCategory((XSDContentTypeCategory)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS:
+ getProhibitedSubstitutions().clear();
+ getProhibitedSubstitutions().addAll((Collection<? extends XSDProhibitedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL:
+ getLexicalFinal().clear();
+ getLexicalFinal().addAll((Collection<? extends XSDComplexFinal>)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BLOCK:
+ getBlock().clear();
+ getBlock().addAll((Collection<? extends XSDProhibitedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__MIXED:
+ setMixed((Boolean)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION:
+ setContentAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ setBaseTypeDefinition((XSDTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT:
+ setContent((XSDComplexTypeContent)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE:
+ setContentType((XSDComplexTypeContent)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES:
+ getAttributeUses().clear();
+ getAttributeUses().addAll((Collection<? extends XSDAttributeUse>)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS:
+ getAttributeContents().clear();
+ getAttributeContents().addAll((Collection<? extends XSDAttributeGroupContent>)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD:
+ setAttributeWildcard((XSDWildcard)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ setAttributeWildcardContent((XSDWildcard)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE:
+ setSyntheticParticle((XSDParticle)newValue);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD:
+ setSyntheticWildcard((XSDWildcard)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD:
+ unsetDerivationMethod();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__FINAL:
+ getFinal().clear();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT:
+ unsetAbstract();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY:
+ setContentTypeCategory(CONTENT_TYPE_CATEGORY_EDEFAULT);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS:
+ getProhibitedSubstitutions().clear();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL:
+ unsetLexicalFinal();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BLOCK:
+ unsetBlock();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__MIXED:
+ unsetMixed();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION:
+ setContentAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ setBaseTypeDefinition((XSDTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT:
+ setContent((XSDComplexTypeContent)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE:
+ setContentType((XSDComplexTypeContent)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES:
+ getAttributeUses().clear();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS:
+ getAttributeContents().clear();
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD:
+ setAttributeWildcard((XSDWildcard)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ setAttributeWildcardContent((XSDWildcard)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE:
+ setSyntheticParticle((XSDParticle)null);
+ return;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD:
+ setSyntheticWildcard((XSDWildcard)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD:
+ return isSetDerivationMethod();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__FINAL:
+ return final_ != null && !final_.isEmpty();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT:
+ return isSetAbstract();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY:
+ return (eFlags & CONTENT_TYPE_CATEGORY_EFLAG) != CONTENT_TYPE_CATEGORY_EFLAG_DEFAULT;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS:
+ return prohibitedSubstitutions != null && !prohibitedSubstitutions.isEmpty();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL:
+ return isSetLexicalFinal();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BLOCK:
+ return isSetBlock();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__MIXED:
+ return isSetMixed();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION:
+ return contentAnnotation != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ return baseTypeDefinition != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT:
+ return content != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE:
+ return contentType != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES:
+ return attributeUses != null && !attributeUses.isEmpty();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS:
+ return attributeContents != null && !attributeContents.isEmpty();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD:
+ return attributeWildcard != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT:
+ return attributeWildcardContent != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__ROOT_TYPE_DEFINITION:
+ return getRootTypeDefinition() != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE:
+ return syntheticParticle != null;
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD:
+ return syntheticWildcard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (derivationMethod: ");
+ if ((eFlags & DERIVATION_METHOD_ESETFLAG) != 0) result.append(DERIVATION_METHOD_EFLAG_VALUES[(eFlags & DERIVATION_METHOD_EFLAG) >>> DERIVATION_METHOD_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", final: ");
+ result.append(final_);
+ result.append(", abstract: ");
+ if ((eFlags & ABSTRACT_ESETFLAG) != 0) result.append((eFlags & ABSTRACT_EFLAG) != 0); else result.append("<unset>");
+ result.append(", contentTypeCategory: ");
+ result.append(CONTENT_TYPE_CATEGORY_EFLAG_VALUES[(eFlags & CONTENT_TYPE_CATEGORY_EFLAG) >>> CONTENT_TYPE_CATEGORY_EFLAG_OFFSET]);
+ result.append(", prohibitedSubstitutions: ");
+ result.append(prohibitedSubstitutions);
+ result.append(", lexicalFinal: ");
+ result.append(lexicalFinal);
+ result.append(", block: ");
+ result.append(block);
+ result.append(", mixed: ");
+ if ((eFlags & MIXED_ESETFLAG) != 0) result.append((eFlags & MIXED_EFLAG) != 0); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public XSDSimpleTypeDefinition getSimpleType()
+ {
+ return
+ getContentType() instanceof XSDSimpleTypeDefinition ?
+ (XSDSimpleTypeDefinition)getContentType() :
+ null;
+ }
+
+ public String getStringLexicalFinal()
+ {
+ if (isSetLexicalFinal())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getLexicalFinal())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringLexicalFinal(String finalDefault)
+ {
+ if (finalDefault == null)
+ {
+ unsetLexicalFinal();
+ }
+ else
+ {
+ List<XSDComplexFinal> newLexicalFinal = new ArrayList<XSDComplexFinal>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(finalDefault); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+ XSDComplexFinal literal = XSDComplexFinal.get(token);
+ if (literal != null)
+ {
+ newLexicalFinal.add(literal);
+ }
+ }
+ if (!newLexicalFinal.equals(getLexicalFinal()))
+ {
+ Collection<XSDComplexFinal> oldContents = new ArrayList<XSDComplexFinal>(getLexicalFinal());
+ oldContents.removeAll(newLexicalFinal);
+ if (!oldContents.isEmpty())
+ {
+ getLexicalFinal().removeAll(oldContents);
+ }
+ setListContentAndOrder(getLexicalFinal(), newLexicalFinal);
+ }
+ else if (newLexicalFinal.isEmpty() && !isSetLexicalFinal())
+ {
+ getLexicalFinal().clear();
+ }
+ }
+ }
+
+ public String getStringFinal()
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getFinal())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(literal);
+ }
+ return result.toString();
+ }
+
+
+ public String getStringBlock()
+ {
+ if (isSetBlock())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getBlock())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringBlock(String block)
+ {
+ if (block == null)
+ {
+ unsetBlock();
+ }
+ else
+ {
+ List<XSDProhibitedSubstitutions> newBlock = new ArrayList<XSDProhibitedSubstitutions>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(block); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+ XSDProhibitedSubstitutions literal = XSDProhibitedSubstitutions.get(token);
+ if (literal != null)
+ {
+ newBlock.add(literal);
+ }
+ }
+ if (!newBlock.equals(getBlock()))
+ {
+ Collection<XSDProhibitedSubstitutions> oldContents = new ArrayList<XSDProhibitedSubstitutions>(getBlock());
+ oldContents.removeAll(newBlock);
+ if (!oldContents.isEmpty())
+ {
+ getBlock().removeAll(oldContents);
+ }
+ setListContentAndOrder(getBlock(), newBlock);
+ }
+ else if (newBlock.isEmpty() && !isSetBlock())
+ {
+ getBlock().clear();
+ }
+ }
+ }
+
+ public String getStringProhibitedSubstitutions()
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getProhibitedSubstitutions())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(literal);
+ }
+ return result.toString();
+ }
+
+ @Override
+ public XSDTypeDefinition getBadTypeDerivation(XSDTypeDefinition xsdTypeDefinition, boolean extension, boolean restriction)
+ {
+ if (xsdTypeDefinition == this || isCircular())
+ {
+ return null;
+ }
+ else if (getDerivationMethod() == XSDDerivationMethod.EXTENSION_LITERAL ? !extension : !restriction)
+ {
+ return this;
+ }
+ else
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (xsdTypeDefinition == theBaseTypeDefinition)
+ {
+ return null;
+ }
+ else if (theBaseTypeDefinition == null)
+ {
+ return this;
+ }
+ else if (XSDConstants.isURType(theBaseTypeDefinition))
+ {
+ return theBaseTypeDefinition;
+ }
+ else
+ {
+ return theBaseTypeDefinition.getBadTypeDerivation(xsdTypeDefinition, extension, restriction);
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDComplexTypeDefinitionImpl clonedComplexTypeDefinition =
+ (XSDComplexTypeDefinitionImpl)getXSDFactory().createXSDComplexTypeDefinition();
+ clonedComplexTypeDefinition.isReconciling = true;
+
+ if (getName() != null)
+ {
+ clonedComplexTypeDefinition.setName(getName());
+ }
+ if (isSetMixed())
+ {
+ clonedComplexTypeDefinition.setMixed(isMixed());
+ }
+ if (isSetDerivationMethod())
+ {
+ clonedComplexTypeDefinition.setDerivationMethod(getDerivationMethod());
+ }
+ if (isSetAbstract())
+ {
+ clonedComplexTypeDefinition.setAbstract(isAbstract());
+ }
+ if (isSetBlock())
+ {
+ if (!getBlock().isEmpty())
+ {
+ clonedComplexTypeDefinition.getBlock().addAll(getBlock());
+ }
+ else
+ {
+ clonedComplexTypeDefinition.getBlock().clear();
+ }
+ }
+ if (isSetLexicalFinal())
+ {
+ if (!getLexicalFinal().isEmpty())
+ {
+ clonedComplexTypeDefinition.getLexicalFinal().addAll(getLexicalFinal());
+ }
+ else
+ {
+ clonedComplexTypeDefinition.getLexicalFinal().clear();
+ }
+ }
+
+ if (getBaseTypeDefinition() != null)
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ clonedComplexTypeDefinition.setBaseTypeDefinition
+ (createUnresolvedTypeDefinition
+ (theBaseTypeDefinition.getTargetNamespace(), theBaseTypeDefinition.getName()));
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedComplexTypeDefinition.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (getDerivationAnnotation() != null)
+ {
+ clonedComplexTypeDefinition.setDerivationAnnotation
+ ((XSDAnnotation)getDerivationAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (getContentAnnotation() != null)
+ {
+ clonedComplexTypeDefinition.setContentAnnotation((XSDAnnotation)getContentAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (getContent() != null)
+ {
+ clonedComplexTypeDefinition.setContent((XSDComplexTypeContent)getContent().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (!getAttributeContents().isEmpty())
+ {
+ clonedComplexTypeDefinition.getAttributeContents().addAll(cloneConcreteComponents(getAttributeContents(), deep, shareDOM));
+ }
+ if (getAttributeWildcardContent() != null)
+ {
+ clonedComplexTypeDefinition.setAttributeWildcardContent
+ ((XSDWildcard)getAttributeWildcardContent().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedComplexTypeDefinition.setElement(getElement());
+ }
+
+ clonedComplexTypeDefinition.isReconciling = shareDOM;
+ return clonedComplexTypeDefinition;
+ }
+}
+
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComponentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComponentImpl.java
new file mode 100644
index 0000000..f1899c3
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDComponentImpl.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDComponentImpl
+ extends XSDConcreteComponentImpl
+ implements XSDComponent
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDComponentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_COMPONENT;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDConcreteComponentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDConcreteComponentImpl.java
new file mode 100644
index 0000000..aec8ebd
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDConcreteComponentImpl.java
@@ -0,0 +1,2857 @@
+/**
+ * Copyright (c) 2002-2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EContentsEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDIdentityConstraintCategory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Concrete Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl#getElement <em>Element</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl#getContainer <em>Container</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl#getRootContainer <em>Root Container</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl#getSchema <em>Schema</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDConcreteComponentImpl#getDiagnostics <em>Diagnostics</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDConcreteComponentImpl
+ extends EObjectImpl
+ implements XSDConcreteComponent
+{
+ /**
+ * The default value of the '{@link #getElement() <em>Element</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElement()
+ * @generated
+ * @ordered
+ */
+ protected static final Element ELEMENT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getElement() <em>Element</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElement()
+ * @generated
+ * @ordered
+ */
+ protected Element element = ELEMENT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDiagnostics() <em>Diagnostics</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiagnostics()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDDiagnostic> diagnostics;
+
+ protected static final int FATAL=0;
+ protected static final int ERROR=1;
+ protected static final int WARNING=2;
+ protected static final int INFORMATION=3;
+
+ protected boolean updatingDOM;
+ protected boolean isReconciling;
+ protected boolean forceResolve;
+ protected EList<XSDConcreteComponent> xsdContents;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDConcreteComponentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_CONCRETE_COMPONENT;
+ }
+
+ protected XSDFactory getXSDFactory()
+ {
+ return getXSDPackage().getXSDFactory();
+ }
+
+ protected XSDPackage getXSDPackage()
+ {
+ return (XSDPackage)eClass().getEPackage();
+ }
+
+ public static class XSDContentsEList extends EContentsEList<XSDConcreteComponent>
+ {
+ XSDContentsEList(EObject eObject, EStructuralFeature [] eStructuralFeatures)
+ {
+ super(eObject, eStructuralFeatures);
+ }
+
+ @Override
+ protected ListIterator<XSDConcreteComponent> newListIterator()
+ {
+ return new FeatureIteratorImpl(eObject, eStructuralFeatures);
+ }
+
+ @Override
+ protected boolean isIncluded(EStructuralFeature eStructuralFeature)
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ return !eReference.isTransient();
+ }
+
+ @Override
+ public List<XSDConcreteComponent> basicList()
+ {
+ return new XSDContentsEList(eObject, eStructuralFeatures);
+ }
+
+ @Override
+ public Iterator<XSDConcreteComponent> basicIterator()
+ {
+ return new FeatureIteratorImpl(eObject, eStructuralFeatures);
+ }
+
+ public static class FeatureIteratorImpl extends EContentsEList.FeatureIteratorImpl<XSDConcreteComponent>
+ {
+ public FeatureIteratorImpl(EObject eObject)
+ {
+ super(eObject, (EStructuralFeature [])((BasicEList<?>)eObject.eClass().getEAllReferences()).data());
+ }
+
+ public FeatureIteratorImpl(EObject eObject, EStructuralFeature [] eStructuralFeatures)
+ {
+ super(eObject, eStructuralFeatures);
+ }
+
+ @Override
+ protected boolean isIncluded(EStructuralFeature eStructuralFeature)
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ return !eReference.isTransient();
+ }
+ }
+ }
+
+ public EList<XSDConcreteComponent> getXSDContents()
+ {
+ if (xsdContents == null)
+ {
+ xsdContents =
+ new XSDContentsEList
+ (this,
+ (EStructuralFeature [])((BasicEList<?>)eClass().getEAllContainments()).data());
+ }
+
+ return xsdContents;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected EList<XSDConcreteComponentImpl> getXSDConcreteComponentImpls()
+ {
+ return (EList<XSDConcreteComponentImpl>)(EList<?>)getXSDContents();
+ }
+
+ public void reset()
+ {
+ for (XSDConcreteComponentImpl content : getXSDConcreteComponentImpls())
+ {
+ content.reset();
+ }
+ }
+
+ protected final Element createElement(int nodeType)
+ {
+ XSDSchema xsdSchema = getSchema();
+
+ if (xsdSchema == null)
+ {
+ return null;
+ }
+
+ Document document = null;
+ Element element = null;
+
+ LOOP:
+ for (XSDConcreteComponent container = getContainer(); container != null; container = container.getContainer())
+ {
+ element = container.getElement();
+ if (element != null)
+ {
+ for (Node root = element.getParentNode(); root != null; root = root.getParentNode())
+ {
+ if (root.getNodeType() == Node.DOCUMENT_NODE)
+ {
+ document = (Document)root;
+ break LOOP;
+ }
+ }
+ }
+ }
+ if (document == null)
+ {
+ document = xsdSchema.getDocument();
+ if (document == null)
+ {
+ document = xsdSchema.updateDocument();
+ }
+ }
+
+ String qualifier = xsdSchema.getSchemaForSchemaQNamePrefix();
+ String schemaForSchemaNamespace = xsdSchema.getSchemaForSchemaNamespace();
+
+ Element newElement =
+ document.createElementNS
+ (schemaForSchemaNamespace, (qualifier == null ? "" : qualifier + ":") + XSDConstants.ELEMENT_TAGS[nodeType]);
+
+ if (document.getDocumentElement() == null)
+ {
+ document.appendChild(newElement);
+ }
+
+ if (nodeType == XSDConstants.SCHEMA_ELEMENT)
+ {
+ for (Map.Entry<String, String> entry : xsdSchema.getQNamePrefixToNamespaceMap().entrySet())
+ {
+ String key = entry.getKey();
+ newElement.setAttributeNS(XSDConstants.XMLNS_URI_2000, key == null ? "xmlns" : "xmlns:" + key, entry.getValue());
+ }
+
+ String xmlnsAttribute = "xmlns";
+ if (qualifier != null)
+ {
+ xmlnsAttribute += ":" + qualifier;
+ }
+ newElement.setAttributeNS(XSDConstants.XMLNS_URI_2000, xmlnsAttribute, schemaForSchemaNamespace);
+ }
+
+ return newElement;
+ }
+
+ public Element createElement()
+ {
+ return null;
+ }
+
+ public void updateElement(boolean deep)
+ {
+ if (deep || getElement() == null)
+ {
+ updateElement();
+ }
+ else
+ {
+ changeAttribute(null);
+ changeReference(null);
+ }
+ }
+
+ public void updateElement()
+ {
+ if (getElement() == null)
+ {
+ XSDConcreteComponent container = getContainer();
+ if (container == null)
+ {
+ if (!(this instanceof XSDSchema))
+ {
+ return;
+ }
+ }
+ else if (container.getElement() == null)
+ {
+ container.updateElement();
+ return;
+ }
+
+ isReconciling = true;
+ createElement();
+ isReconciling = false;
+ }
+
+ changeAttribute(null);
+ changeReference(null);
+
+ for (EReference eReference : eClass().getEAllContainments())
+ {
+ if (!eReference.isTransient())
+ {
+ if (eReference.isMany())
+ {
+ @SuppressWarnings("unchecked")
+ Collection<XSDConcreteComponent> xsdConcreteComponents = ((Collection<XSDConcreteComponent>)eGet(eReference));
+ for (XSDConcreteComponent xsdConcreteComponent : xsdConcreteComponents)
+ {
+ handleElementForAdopt(eReference, xsdConcreteComponent);
+ xsdConcreteComponent.updateElement();
+ }
+ }
+ else
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)eGet(eReference);
+ if (xsdConcreteComponent != null)
+ {
+ handleElementForAdopt(eReference, xsdConcreteComponent);
+ xsdConcreteComponent.updateElement();
+ }
+ }
+ }
+ }
+ }
+
+ protected void updatePrefix(Node node, String namespace, String oldPrefix, String newPrefix)
+ {
+ if ((namespace == null ? node.getNamespaceURI() == null : namespace.equals(node.getNamespaceURI())) &&
+ (oldPrefix == null ? node.getPrefix() == null : oldPrefix.equals(node.getPrefix())))
+ {
+ node.setPrefix(newPrefix);
+ }
+
+ for (Node child = node.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ updatePrefix(child, namespace, oldPrefix, newPrefix);
+ }
+ }
+
+ protected boolean isUpdatingDOM()
+ {
+ return updatingDOM;
+ }
+
+ public void elementChanged(Element changedElement)
+ {
+ if (!isUpdatingDOM())
+ {
+ if (!isReconciling)
+ {
+ // System.out.println("**** changeFor " + eClass().getName());
+
+ isReconciling = true;
+ reconcile(changedElement);
+
+ XSDConcreteComponent theContainer = getContainer();
+ if (theContainer != null && theContainer.getElement() == changedElement)
+ {
+ theContainer.elementChanged(changedElement);
+ }
+
+ isReconciling = false;
+ traverseToRootForPatching();
+ }
+ else
+ {
+ // System.out.println("**** cyclic internal reconcile avoided " + eClass().getName());
+ }
+ }
+ else
+ {
+ // System.out.println("**** cyclic DOM reconcile avoided " + eClass().getName());
+ }
+ }
+
+ public void elementAttributesChanged(Element changedElement)
+ {
+ if (!isUpdatingDOM())
+ {
+ if (!isReconciling)
+ {
+ // System.out.println("**** changeFor " + eClass().getName());
+
+ isReconciling = true;
+ reconcileAttributes(changedElement);
+
+ XSDConcreteComponent theContainer = getContainer();
+ if (theContainer != null && theContainer.getElement() == changedElement)
+ {
+ theContainer.elementAttributesChanged(changedElement);
+ }
+
+ isReconciling = false;
+ traverseToRootForPatching();
+ }
+ else
+ {
+ // System.out.println("**** cyclic internal reconcile avoided " + eClass().getName());
+ }
+ }
+ else
+ {
+ // System.out.println("**** cyclic DOM reconcile avoided " + eClass().getName());
+ }
+ }
+
+ public void elementContentsChanged(Element changedElement)
+ {
+ if (!isUpdatingDOM())
+ {
+ if (!isReconciling)
+ {
+ // System.out.println("**** changeFor " + eClass().getName());
+
+ isReconciling = true;
+ reconcileContents(changedElement);
+
+ XSDConcreteComponent theContainer = getContainer();
+ if (theContainer != null && theContainer.getElement() == changedElement)
+ {
+ theContainer.elementContentsChanged(changedElement);
+ }
+
+ isReconciling = false;
+ traverseToRootForPatching();
+ }
+ else
+ {
+ // System.out.println("**** cyclic internal reconcile avoided " + eClass().getName());
+ }
+ }
+ else
+ {
+ // System.out.println("**** cyclic DOM reconcile avoided " + eClass().getName());
+ }
+ }
+
+ protected void traverseToRootForPatching()
+ {
+ if (!isReconciling)
+ {
+ XSDConcreteComponentImpl container = (XSDConcreteComponentImpl)getContainer();
+ if (container != null)
+ {
+ container.traverseToRootForPatching();
+ }
+ }
+ }
+
+ protected void traverseToRootForAnalysis()
+ {
+ if (!isReconciling)
+ {
+ XSDConcreteComponentImpl container = (XSDConcreteComponentImpl)getContainer();
+ if (container != null)
+ {
+ container.traverseToRootForAnalysis();
+ }
+ }
+ }
+
+ protected void patch()
+ {
+ for (XSDConcreteComponentImpl content : getXSDConcreteComponentImpls())
+ {
+ content.forceResolve = forceResolve;
+ content.isReconciling = true;
+ content.patch();
+ content.isReconciling = false;
+ content.forceResolve = false;
+ }
+ }
+
+ protected final int UNANALYZED = 0;
+ protected final int ANALYZING = 1;
+ protected final int ANALYZED = 2;
+ protected final int CIRCULAR = 3;
+
+ protected boolean analyze()
+ {
+ boolean result = true;
+ for (XSDConcreteComponentImpl content : getXSDConcreteComponentImpls())
+ {
+ content.isReconciling = true;
+ if (!content.analyze())
+ {
+ result = false;
+ }
+ content.isReconciling = false;
+ }
+ return result;
+ }
+
+ public void validate()
+ {
+ for (XSDConcreteComponentImpl content : getXSDConcreteComponentImpls())
+ {
+ content.validate();
+ }
+ }
+
+ public void clearDiagnostics()
+ {
+ Collection<XSDDiagnostic> theDiagnostics = getDiagnostics();
+ if (!theDiagnostics.isEmpty())
+ {
+ theDiagnostics.clear();
+ }
+ for (XSDConcreteComponent content : getXSDContents())
+ {
+ content.clearDiagnostics();
+ }
+ }
+
+ protected XSDDiagnostic reportConstraintViolation
+ (String part, String anchor, Element element, String attributeName, Object [] substitutions)
+ {
+ XSDDiagnostic xsdDiagnostic = getXSDFactory().createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString("_UI_XSDError_message", new Object [] { populateDiagnostic(xsdDiagnostic, anchor, substitutions) }));
+ xsdDiagnostic.setPrimaryComponent(this);
+ Node node = element;
+ if (attributeName != null)
+ {
+ Attr attr = element.getAttributeNodeNS(null, attributeName);
+ if (attr != null)
+ {
+ node = attr;
+ }
+ }
+ xsdDiagnostic.setNode(node);
+
+ getDiagnostics().add(xsdDiagnostic);
+ return xsdDiagnostic;
+ }
+
+ protected XSDDiagnostic checkElementComplexContent
+ (String elementName,
+ String part,
+ String anchor,
+ Element element)
+ {
+ XSDElementDeclaration xsdElementDeclaration = getSchema().getSchemaForSchema().resolveElementDeclaration(elementName);
+ return checkComplexContent((XSDComplexTypeDefinition)xsdElementDeclaration.getTypeDefinition(), part, anchor, element);
+ }
+
+ protected void printDFA(XSDParticle.DFA dfa)
+ {
+ ((XSDParticleImpl.XSDNFA)dfa).dump(System.err);
+ }
+
+ protected XSDDiagnostic checkComplexContent
+ (String builtInTypeName,
+ String part,
+ String anchor,
+ Element element)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = getSchema().getSchemaForSchema().resolveComplexTypeDefinition(builtInTypeName);
+ return checkComplexContent(xsdComplexTypeDefinition, part, anchor, element);
+ }
+
+ protected XSDDiagnostic checkComplexContent
+ (XSDComplexTypeDefinition xsdComplexTypeDefinition,
+ String part,
+ String anchor,
+ Element element)
+ {
+ List<XSDDiagnostic> xsdDiagnostics = XSDUtil.checkComplexContent(xsdComplexTypeDefinition, part, anchor, element);
+ for (XSDDiagnostic xsdDiagnostic : xsdDiagnostics)
+ {
+ xsdDiagnostic.setPrimaryComponent(this);
+ }
+ getDiagnostics().addAll(xsdDiagnostics);
+ return xsdDiagnostics.isEmpty() ? null : xsdDiagnostics.get(xsdDiagnostics.size() - 1);
+ }
+
+ protected XSDDiagnostic checkAttributeTypeConstraint
+ (String builtInTypeName,
+ String builtInAttributeName,
+ String value,
+ String part,
+ String anchor,
+ Element element,
+ String attributeName,
+ boolean isRequired)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = getSchema().getSchemaForSchema().resolveComplexTypeDefinition(builtInTypeName);
+ return checkAttributeTypeConstraint
+ (xsdComplexTypeDefinition,
+ builtInAttributeName,
+ value,
+ part,
+ anchor,
+ element,
+ attributeName,
+ isRequired);
+ }
+
+ protected XSDDiagnostic checkAttributeTypeConstraint
+ (XSDComplexTypeDefinition xsdComplexTypeDefinition,
+ String builtInAttributeName,
+ String value,
+ String part,
+ String anchor,
+ Element element,
+ String attributeName,
+ boolean isRequired)
+ {
+ for (XSDAttributeUse xsdAttributeUse : xsdComplexTypeDefinition.getAttributeUses())
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
+ if (builtInAttributeName.equals(xsdAttributeDeclaration.getName()))
+ {
+ XSDDiagnostic result =
+ checkSimpleTypeConstraint
+ (xsdAttributeDeclaration.getTypeDefinition(), value, part, anchor, element, attributeName, isRequired);
+ return result;
+ }
+ }
+
+ return null;
+ }
+
+ protected XSDDiagnostic checkBuiltInTypeConstraint
+ (String builtInTypeName, String value, String part, String anchor, Element element, String attributeName, boolean isRequired)
+ {
+ XSDSimpleTypeDefinition builtInType = getSchema().getSchemaForSchema().resolveSimpleTypeDefinition(builtInTypeName);
+ return checkSimpleTypeConstraint(builtInType, value, part, anchor, element, attributeName, isRequired);
+ }
+
+ protected XSDDiagnostic checkSimpleTypeConstraint
+ (XSDSimpleTypeDefinition xsdTypeDefinition,
+ String value,
+ String part,
+ String anchor,
+ Element element,
+ String attributeName,
+ boolean isRequired)
+ {
+ XSDDiagnostic result = null;
+ if (element != null && value == null && element.hasAttributeNS(null, attributeName))
+ {
+ value = element.getAttributeNS(null, attributeName);
+ }
+
+ if (value == null)
+ {
+ if (isRequired)
+ {
+ result = createRequiredAttributeDiagnostic(part, anchor, element, attributeName);
+ }
+ }
+ else
+ {
+ XSDSimpleTypeDefinition.Assessment assessment = xsdTypeDefinition.assess(element, value);
+ Collection<XSDDiagnostic> allDiagnostics = assessment.getDiagnostics();
+ if (!allDiagnostics.isEmpty())
+ {
+ ((XSDSimpleTypeDefinitionImpl.AssessmentImpl)assessment).assignDiagnostics(this, element, attributeName);
+ getDiagnostics().addAll(allDiagnostics);
+ result = allDiagnostics.iterator().next();
+ result.setAnnotationURI(part + "#" + anchor);
+ }
+ }
+
+ return result;
+ }
+
+ protected Collection<XSDDiagnostic> checkAttributes(String part, String anchor, Element element, String [] allowedAttributeNames)
+ {
+ Collection<XSDDiagnostic> result = null;
+ if (element != null)
+ {
+ NamedNodeMap attributes = element.getAttributes();
+ LOOP:
+ for (int i = 0, length = attributes.getLength(); i < length; ++i)
+ {
+ Attr attr = (Attr)attributes.item(i);
+ if (attr.getNamespaceURI() == null)
+ {
+ String localName = attr.getLocalName();
+
+ for (int j = 0; j < allowedAttributeNames.length; ++j)
+ {
+ if (allowedAttributeNames[j].equals(localName))
+ {
+ continue LOOP;
+ }
+ }
+
+ XSDDiagnostic xsdDiagnostic = getXSDFactory().createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(xsdDiagnostic, "cvc-complex-type.3", new Object [] { localName })
+ }));
+ xsdDiagnostic.setAnnotationURI(part + "#" + anchor);
+ xsdDiagnostic.setPrimaryComponent(this);
+ xsdDiagnostic.setNode(attr);
+ getDiagnostics().add(xsdDiagnostic);
+ if (result == null)
+ {
+ result = new ArrayList<XSDDiagnostic>();
+ }
+ result.add(xsdDiagnostic);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ protected XSDDiagnostic createRequiredAttributeDiagnostic(String part, String anchor, Element element, String attributeName)
+ {
+ XSDDiagnostic result = getXSDFactory().createXSDDiagnostic();
+ result.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ result.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(result, "cvc-complex-type.4", new Object [] { attributeName })
+ }));
+ result.setAnnotationURI(part + "#" + anchor);
+ result.setPrimaryComponent(this);
+ result.setNode(element);
+ getDiagnostics().add(result);
+ return result;
+ }
+
+ protected XSDConcreteComponentImpl getDiagnosticTarget(XSDConcreteComponent xsdConcreteComponent)
+ {
+ return
+ EcoreUtil.isAncestor(this, xsdConcreteComponent) &&
+ !xsdConcreteComponent.eContainmentFeature().isTransient() ?
+ (XSDConcreteComponentImpl)xsdConcreteComponent :
+ this;
+ }
+
+ protected XSDDiagnostic createDiagnostic(XSDDiagnosticSeverity severity, String key)
+ {
+ XSDDiagnostic xsdDiagnostic = getXSDFactory().createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(severity);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message", new Object [] { populateDiagnostic(xsdDiagnostic, key, null) }));
+ xsdDiagnostic.setPrimaryComponent(this);
+ xsdDiagnostic.setNode(getElement());
+
+ Element theElement = getElement();
+ xsdDiagnostic.setNode(theElement);
+
+ getDiagnostics().add(xsdDiagnostic);
+ return xsdDiagnostic;
+ }
+
+ protected XSDDiagnostic createDiagnostic(XSDDiagnosticSeverity severity, String key, Object s1)
+ {
+ XSDDiagnostic xsdDiagnostic = getXSDFactory().createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(severity);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message", new Object [] { populateDiagnostic(xsdDiagnostic, key, new Object [] { s1 }) }));
+ xsdDiagnostic.setPrimaryComponent(this);
+ xsdDiagnostic.setNode(getElement());
+
+ Element theElement = getElement();
+ xsdDiagnostic.setNode(theElement);
+
+ getDiagnostics().add(xsdDiagnostic);
+ return xsdDiagnostic;
+ }
+
+ protected XSDDiagnostic createDiagnostic(XSDDiagnosticSeverity severity, String key, Object s1, Object s2)
+ {
+ XSDDiagnostic xsdDiagnostic = getXSDFactory().createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(severity);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message", new Object [] { populateDiagnostic(xsdDiagnostic, key, new Object [] { s1, s2 }) }));
+ xsdDiagnostic.setPrimaryComponent(this);
+ xsdDiagnostic.setNode(getElement());
+
+ Element theElement = getElement();
+ xsdDiagnostic.setNode(theElement);
+
+ getDiagnostics().add(xsdDiagnostic);
+ return xsdDiagnostic;
+ }
+
+ protected XSDDiagnostic createDiagnostic(XSDDiagnosticSeverity severity, String key, Object s1, Object s2, Object s3)
+ {
+ XSDDiagnostic xsdDiagnostic = getXSDFactory().createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(severity);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message", new Object [] { populateDiagnostic(xsdDiagnostic, key, new Object [] { s1, s2, s3 }) }));
+ xsdDiagnostic.setPrimaryComponent(this);
+ xsdDiagnostic.setNode(getElement());
+
+ Element theElement = getElement();
+ xsdDiagnostic.setNode(theElement);
+
+ getDiagnostics().add(xsdDiagnostic);
+ return xsdDiagnostic;
+ }
+
+ protected static String populateDiagnostic(XSDDiagnostic xsdDiagnostic, String key, Object [] substitutions)
+ {
+ xsdDiagnostic.setKey(key);
+ if (substitutions != null)
+ {
+ List<String> values = xsdDiagnostic.getSubstitutions();
+ for (int i = 0; i < substitutions.length; ++i)
+ {
+ Object value = substitutions[i];
+ values.add(value == null ? null : value.toString());
+ }
+ return XSDPlugin.INSTANCE.getString(key, substitutions);
+ }
+ else
+ {
+ return XSDPlugin.INSTANCE.getString(key);
+ }
+ }
+
+ protected void reconcile(Element changedElement)
+ {
+ reconcileAttributes(changedElement);
+ reconcileContents(changedElement);
+ }
+
+ protected void reconcileAttributes(Element changedElement)
+ {
+ // Do nothing.
+ }
+
+ protected Collection<Element> getContentNodes(Element changedElement)
+ {
+ Collection<Element> result = new ArrayList<Element>();
+ for (Node child = getElement().getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (child.getNodeType() == Node.ELEMENT_NODE)
+ {
+ result.add((Element)child);
+ }
+ }
+ return result;
+ }
+
+ protected void reconcileContents(Element changedElement)
+ {
+ XSDSchemaImpl xsdSchema = (XSDSchemaImpl)getSchema();
+ List<XSDConcreteComponent> newContents = new ArrayList<XSDConcreteComponent>();
+ List<XSDConcreteComponent> remainingContents = new ArrayList<XSDConcreteComponent>(getXSDContents());
+ Collection<Element> contentNodes = getContentNodes(changedElement);
+ LOOP:
+ for (Node child : contentNodes)
+ {
+ if (child.getNodeType() == Node.ELEMENT_NODE && (xsdSchema == null || child != xsdSchema.getDeletionNode()))
+ {
+ for (Iterator<XSDConcreteComponent> contents = remainingContents.iterator(); contents.hasNext(); )
+ {
+ XSDConcreteComponent remainingConcreteComponent = contents.next();
+ if (remainingConcreteComponent.getElement() == child)
+ {
+ newContents.add(remainingConcreteComponent);
+ contents.remove();
+ continue LOOP;
+ }
+ }
+
+ if (!remainingContents.isEmpty())
+ {
+ XSDConcreteComponent potentialReplacement = remainingContents.get(0);
+ Element potentialReplacedElement = potentialReplacement.getElement();
+ if (potentialReplacedElement != null &&
+ potentialReplacedElement.getParentNode() != changedElement &&
+ potentialReplacedElement.getLocalName().equals(child.getLocalName()))
+ {
+ remainingContents.remove(0);
+ potentialReplacement.setElement((Element)child);
+ newContents.add(potentialReplacement);
+ continue;
+ }
+ }
+
+ handleUnreconciledElement((Element)child, newContents, remainingContents);
+ }
+ }
+
+ handleReconciliation(newContents, remainingContents);
+ }
+
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ // Do nothing.
+ }
+
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ // Do nothing.
+ }
+
+ protected void handleAnnotationReconciliation
+ (EReference eReference, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation newAnnotation = null;
+ XSDAnnotation oldAnnotation = (XSDAnnotation)eGet(eReference);
+ if (!newContents.isEmpty())
+ {
+ XSDConcreteComponent xsdConcreteComponent = newContents.get(0);
+ if (xsdConcreteComponent instanceof XSDAnnotation)
+ {
+ newAnnotation = (XSDAnnotation)xsdConcreteComponent;
+ newContents.remove(0);
+ }
+ }
+
+ if (newAnnotation != oldAnnotation)
+ {
+ eSet(eReference, newAnnotation);
+ }
+
+ if (oldAnnotation != null)
+ {
+ remainingContents.remove(oldAnnotation);
+ }
+ }
+
+ @Override
+ public void eNotify(Notification msg)
+ {
+ int eventType = msg.getEventType();
+ Object feature = msg.getFeature();
+ Object oldValue = msg.getOldValue();
+ Object newValue = msg.getNewValue();
+ if (eClass().getEAllReferences().contains(feature))
+ {
+ EReference eReference = (EReference)feature;
+ if (feature == XSDPackage.Literals.XSD_CONCRETE_COMPONENT__DIAGNOSTICS)
+ {
+ switch (eventType)
+ {
+ case Notification.ADD:
+ {
+ adoptDiagnostic((XSDDiagnostic)newValue);
+ break;
+ }
+ case Notification.ADD_MANY:
+ {
+ @SuppressWarnings("unchecked") Collection<XSDDiagnostic> xsdDiagnostics = ((Collection<XSDDiagnostic>)newValue);
+ for (XSDDiagnostic xsdDiagnostic : xsdDiagnostics)
+ {
+ adoptDiagnostic(xsdDiagnostic);
+ }
+ break;
+ }
+ case Notification.REMOVE:
+ {
+ if (oldValue != null)
+ {
+ orphanDiagnostic((XSDDiagnostic)oldValue);
+ }
+ break;
+ }
+ case Notification.REMOVE_MANY:
+ {
+ @SuppressWarnings("unchecked") Collection<XSDDiagnostic> xsdDiagnostics = ((Collection<XSDDiagnostic>)oldValue);
+ for (XSDDiagnostic xsdDiagnostic : xsdDiagnostics)
+ {
+ orphanDiagnostic(xsdDiagnostic);
+ }
+ break;
+ }
+ case Notification.MOVE:
+ {
+ // Don't care.
+ //
+ break;
+ }
+ case Notification.SET:
+ case Notification.UNSET:
+ {
+ if (oldValue != null)
+ {
+ orphanDiagnostic((XSDDiagnostic)oldValue);
+ }
+ if (newValue != null)
+ {
+ adoptDiagnostic((XSDDiagnostic)newValue);
+ }
+ break;
+ }
+ }
+ }
+ else if (eReference.isContainment() && !eReference.isTransient())
+ {
+ switch (eventType)
+ {
+ case Notification.ADD:
+ {
+ adoptContent(eReference, (XSDConcreteComponent)newValue);
+ break;
+ }
+ case Notification.ADD_MANY:
+ {
+ @SuppressWarnings("unchecked") Collection<XSDConcreteComponent> xsdConcreteComponents = ((Collection<XSDConcreteComponent>)newValue);
+ for (XSDConcreteComponent xsdConcreteComponent : xsdConcreteComponents)
+ {
+ adoptContent(eReference, xsdConcreteComponent);
+ }
+ break;
+ }
+ case Notification.REMOVE:
+ {
+ if (oldValue != null)
+ {
+ orphanContent(eReference, (XSDConcreteComponent)oldValue);
+ }
+ break;
+ }
+ case Notification.REMOVE_MANY:
+ {
+ @SuppressWarnings("unchecked") Collection<XSDConcreteComponent> xsdConcreteComponents = ((Collection<XSDConcreteComponent>)oldValue);
+ for (XSDConcreteComponent xsdConcreteComponent : xsdConcreteComponents)
+ {
+ orphanContent(eReference, xsdConcreteComponent);
+ }
+ break;
+ }
+ case Notification.MOVE:
+ {
+ moveContent(eReference, (XSDConcreteComponent)newValue);
+ break;
+ }
+ case Notification.SET:
+ case Notification.UNSET:
+ {
+ if (oldValue != null)
+ {
+ orphanContent(eReference, (XSDConcreteComponent)oldValue);
+ }
+ if (newValue != null)
+ {
+ adoptContent(eReference, (XSDConcreteComponent)newValue);
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ switch (eventType)
+ {
+ case Notification.ADD:
+ case Notification.ADD_MANY:
+ case Notification.REMOVE:
+ case Notification.REMOVE_MANY:
+ case Notification.MOVE:
+ case Notification.SET:
+ case Notification.UNSET:
+ {
+ changeReference(eReference);
+ break;
+ }
+ }
+ }
+ }
+ else if (eClass().getEAllAttributes().contains(feature))
+ {
+ EAttribute eAttribute = (EAttribute)feature;
+ switch (eventType)
+ {
+ case Notification.ADD:
+ case Notification.ADD_MANY:
+ case Notification.REMOVE:
+ case Notification.REMOVE_MANY:
+ case Notification.MOVE:
+ case Notification.SET:
+ case Notification.UNSET:
+ {
+ changeAttribute(eAttribute);
+ break;
+ }
+ }
+ }
+ super.eNotify(msg);
+ }
+
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (eAttribute == XSDPackage.Literals.XSD_CONCRETE_COMPONENT__ELEMENT)
+ {
+ Element theElement = getElement();
+ if (theElement != null && !isReconciling)
+ {
+ for (Node rootDocument = theElement.getParentNode(); rootDocument != null; rootDocument = rootDocument.getParentNode())
+ {
+ if (rootDocument.getNodeType() == Node.DOCUMENT_NODE)
+ {
+ isReconciling = true;
+ if (getSchema() == null)
+ {
+ reconcileAttributes(getElement());
+ isReconciling = false;
+ }
+ else
+ {
+ reconcile(getElement());
+ isReconciling = false;
+ traverseToRootForPatching();
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ protected void changeReference(EReference eReference)
+ {
+ // Do nothing.
+ }
+
+ protected Node getAdoptionParentNode(EReference eReference)
+ {
+ return getElement();
+ }
+
+ protected void handleElementForAdopt(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ Node adoptionParent = getAdoptionParentNode(eReference);
+ Element childElement = xsdConcreteComponent.getElement();
+ Element referencedElement = null;
+ for (Iterator<XSDConcreteComponent> contents = getXSDContents().iterator(); contents.hasNext(); )
+ {
+ if (contents.next() == xsdConcreteComponent)
+ {
+ if (contents.hasNext())
+ {
+ referencedElement = contents.next().getElement();
+ while (referencedElement != null)
+ {
+ Node parent = referencedElement.getParentNode();
+ if (parent == null )
+ {
+ referencedElement = null;
+ break;
+ }
+ else if (parent == adoptionParent)
+ {
+ break;
+ }
+ else if (parent.getNodeType() == Node.ELEMENT_NODE)
+ {
+ referencedElement = (Element)parent;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ XSDConcreteComponentImpl xsdConcreteComponentImpl = (XSDConcreteComponentImpl)xsdConcreteComponent;
+ boolean newChild = childElement == null;
+ if (newChild)
+ {
+ xsdConcreteComponentImpl.isReconciling = true;
+ childElement = xsdConcreteComponentImpl.createElement();
+ xsdConcreteComponentImpl.isReconciling = false;
+ if (childElement == null)
+ {
+ System.out.println("not created! " + xsdConcreteComponent);
+ }
+ }
+
+ boolean isAttached = false;
+ for (Node rootDocument = childElement; rootDocument != null; rootDocument = rootDocument.getParentNode())
+ {
+ if (XSDConstants.nodeType(rootDocument) == XSDConstants.SCHEMA_ELEMENT)
+ {
+ isAttached = true;
+ break;
+ }
+ }
+
+ if (!isAttached)
+ {
+ // Special rule for annotations that must appear first,
+ // or facets of simple types within a restriction which must appear before any attributes.
+ //
+ if (referencedElement == null)
+ {
+ if (eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS &&
+ XSDConstants.nodeType(adoptionParent) == XSDConstants.RESTRICTION_ELEMENT)
+ {
+ for (Node child = adoptionParent.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ int nodeType = XSDConstants.nodeType(child);
+ if (nodeType == XSDConstants.ATTRIBUTE_ELEMENT ||
+ nodeType == XSDConstants.ATTRIBUTEGROUP_ELEMENT ||
+ nodeType == XSDConstants.ANYATTRIBUTE_ELEMENT)
+ {
+ referencedElement = (Element)child;
+ break;
+ }
+ }
+ }
+ else if (XSDConstants.nodeType(childElement) == XSDConstants.ANNOTATION_ELEMENT && !eReference.isMany())
+ {
+ for (Node child = adoptionParent.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (child.getNodeType() == Node.ELEMENT_NODE)
+ {
+ referencedElement = (Element)child;
+ break;
+ }
+ }
+ }
+ }
+
+ niceInsertBefore(adoptionParent, childElement, referencedElement);
+ if (!newChild)
+ {
+ xsdConcreteComponentImpl.isReconciling = true;
+ xsdConcreteComponentImpl.reconcile(childElement);
+ xsdConcreteComponentImpl.isReconciling = false;
+ }
+ }
+ else
+ {
+ // System.out.println("bad adoption " + xsdConcreteComponent);
+ }
+ }
+
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ if (isReconciling)
+ {
+ if (xsdConcreteComponent.getElement() != null)
+ {
+ xsdConcreteComponent.elementChanged(xsdConcreteComponent.getElement());
+ }
+ }
+ else
+ {
+ Element childElement = xsdConcreteComponent.getElement();
+ if (getElement() != null && (childElement == null || childElement.getParentNode() == null))
+ {
+ if (childElement != null && childElement.getOwnerDocument() != getElement().getOwnerDocument())
+ {
+ xsdConcreteComponent.setElement(null);
+ childElement = null;
+ }
+
+ handleElementForAdopt(eReference, xsdConcreteComponent);
+ xsdConcreteComponent.updateElement();
+ }
+ }
+
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ ((XSDConcreteComponentImpl)xsdConcreteComponent).adoptBy(xsdSchema);
+ }
+ }
+
+ protected void adoptBy(XSDSchema xsdSchema)
+ {
+ List<XSDDiagnostic> theDiagnostics = getDiagnostics();
+ if (!theDiagnostics.isEmpty())
+ {
+ xsdSchema.getDiagnostics().addAll(theDiagnostics);
+ }
+
+ for (XSDConcreteComponentImpl childXSDConcreteComponent : getXSDConcreteComponentImpls())
+ {
+ childXSDConcreteComponent.adoptBy(xsdSchema);
+ }
+ }
+
+ protected void adoptDiagnostic(XSDDiagnostic xsdDiagnostic)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ xsdSchema.getAllDiagnostics().add(xsdDiagnostic);
+ }
+ }
+
+
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ if (!isReconciling)
+ {
+ Element parent = getElement();
+ if (parent != null)
+ {
+ Element contentElement = xsdConcreteComponent.getElement();
+ if (contentElement != null)
+ {
+ if (parent == contentElement)
+ {
+ XSDConcreteComponentImpl parentComponent = (XSDConcreteComponentImpl)getContainer();
+ boolean oldParentUpdatingDOM = parentComponent.updatingDOM;
+ parentComponent.updatingDOM = true;
+ niceRemoveChild(contentElement.getParentNode(), contentElement);
+ parentComponent.updatingDOM = oldParentUpdatingDOM;
+ }
+ else
+ {
+ niceRemoveChild(contentElement.getParentNode(), contentElement);
+ }
+ }
+ }
+ }
+
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ ((XSDConcreteComponentImpl)xsdConcreteComponent).orphanBy(xsdSchema);
+ }
+ }
+
+ protected void orphanBy(XSDSchema xsdSchema)
+ {
+ List<XSDDiagnostic> theDiagnostics = getDiagnostics();
+ if (!theDiagnostics.isEmpty())
+ {
+ xsdSchema.getAllDiagnostics().removeAll(theDiagnostics);
+ }
+ for (XSDConcreteComponentImpl childXSDConcreteComponent : getXSDConcreteComponentImpls())
+ {
+ childXSDConcreteComponent.orphanBy(xsdSchema);
+ }
+ }
+
+ protected void orphanDiagnostic(XSDDiagnostic xsdDiagnostic)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ xsdSchema.getAllDiagnostics().remove(xsdDiagnostic);
+ }
+ }
+
+
+ public void moveContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ if (isReconciling)
+ {
+ // System.out.println("**** cyclic dom writeback avoided " + eClass().getName());
+ return;
+ }
+ //System.out.println("moving " + xsdConcreteComponent);
+ Node parent = getAdoptionParentNode(eReference);
+ if (parent != null)
+ {
+ Element child = xsdConcreteComponent.getElement();
+ if (child != null)
+ {
+ List<XSDConcreteComponent> contents = getXSDContents();
+ int index = contents.indexOf(xsdConcreteComponent);
+ niceRemoveChild(parent, child);
+ niceInsertBefore
+ (parent,
+ child,
+ ++index == contents.size() ?
+ null :
+ contents.get(index).getElement());
+ }
+ }
+ //System.out.println("moved " + xsdConcreteComponent);
+ }
+
+ public void niceInsertBefore(Node parent, Node newChild, Node referenceChild)
+ {
+ if (isReconciling || parent == newChild)
+ {
+ // System.out.println("**** cyclic dom writeback avoided " + eClass().getName());
+ return;
+ }
+
+ forceNiceInsertBefore(parent, newChild, referenceChild);
+ }
+
+ public void forceNiceInsertBefore(Node parent, Node newChild, Node referenceChild)
+ {
+ updatingDOM = true;
+
+ LOOP:
+ for (Node child = referenceChild == null ? parent.getLastChild() : referenceChild.getPreviousSibling();
+ child != null;
+ child = child.getPreviousSibling())
+ {
+ switch (child.getNodeType())
+ {
+ case Node.TEXT_NODE:
+ {
+ Text text = (Text)child;
+ String data = text.getData();
+
+/*
+ System.out.print("xx " + data.length() + ":: ");
+ for (int i = 0; i < data.length(); ++i)
+ {
+ System.out.print(" " + Integer.toHexString((int)data.charAt(i)));
+ }
+ System.out.println();
+*/
+
+ int index = data.lastIndexOf('\n');
+ if (index != -1)
+ {
+// System.out.println("In here");
+
+ StringBuffer indent = new StringBuffer();
+ for (Node ancestor = parent.getParentNode();
+ ancestor != null && ancestor.getNodeType() != Node.DOCUMENT_NODE;
+ ancestor = ancestor.getParentNode())
+ {
+ indent.append(" ");
+ }
+
+ if (index + 1 < data.length() && data.charAt(index + 1) == '\r')
+ {
+ ++index;
+ }
+ if (index + 1 == data.length())
+ {
+ text.appendData(indent + " ");
+ }
+ else
+ {
+ text.replaceData(index + 1, data.length() - index - 1, indent + " ");
+ }
+
+ // setCorrectIndentation(indent, newText);
+ if (referenceChild != null)
+ {
+ indent.append(" ");
+ }
+ Text newText = parent.getOwnerDocument().createTextNode("\n" + indent);
+// System.out.println("Inserted..." + newText);
+ parent.insertBefore(newText, referenceChild);
+ referenceChild = newText;
+ break LOOP;
+ }
+
+ break;
+ }
+ case Node.ELEMENT_NODE:
+ {
+ break LOOP;
+ }
+ }
+ }
+
+// System.out.println("Inserted..." + newChild);
+ parent.insertBefore(newChild, referenceChild);
+
+ updatingDOM = false;
+ }
+
+ public void niceRemoveChild(Node parent, Node child)
+ {
+ if (isReconciling)
+ {
+ // System.out.println("**** cyclic dom writeback avoided " + eClass().getName());
+ return;
+ }
+ forceNiceRemoveChild(parent, child);
+ }
+
+ public void forceNiceRemoveChild(Node parent, Node child)
+ {
+ updatingDOM = true;
+
+ boolean done = false;
+
+// System.out.println("?*");
+ Node previous = child.getPreviousSibling();
+ if (previous != null && previous.getNodeType() == Node.TEXT_NODE)
+ {
+ Text text = (Text)previous;
+ String data = text.getData();
+ int index = data.lastIndexOf('\n');
+ if (index != -1)
+ {
+ if (index - 1 > 0 && data.charAt(index - 1) == '\r')
+ {
+//System.out.println("1*");
+ text.deleteData(index - 1, data.length() - index + 1);
+ }
+ else
+ {
+//System.out.println("2*");
+ text.deleteData(index, data.length() - index);
+ }
+ done = true;
+ }
+ else
+ {
+ //System.out.println("No return before!");
+ }
+ }
+ else
+ {
+ // System.out.println("No text node before!");
+ }
+
+
+ if (!done)
+ {
+ for (Node next = child.getNextSibling(); next != null; next = next.getNextSibling())
+ {
+ if (next.getNodeType() == Node.TEXT_NODE)
+ {
+ Text text = (Text)next;
+ String data = text.getData();
+/*
+ System.out.print("xx " + data.length() + ":: ");
+ for (int i = 0; i < data.length(); ++i)
+ {
+ System.out.print(" " + Integer.toHexString((int)data.charAt(i)));
+ }
+ System.out.println();
+*/
+
+ int index = data.indexOf('\n');
+ if (index != -1)
+ {
+ if (index + 1 < data.length() && data.charAt(index + 1) == '\r')
+ {
+ // System.out.println("3*");
+ text.deleteData(0, index + 2);
+ }
+ else
+ {
+ //System.out.println("4*");
+ text.deleteData(0, index + 1);
+ }
+ break;
+ }
+ else
+ {
+ // System.out.println("No return after!");
+ }
+ }
+ else if (next.getNodeType() == Node.ELEMENT_NODE)
+ {
+ break;
+ }
+ }
+ }
+
+// System.out.println("Removing from--------\n " + parent);
+//System.out.println("Removing--------\n " + child);
+ parent.removeChild(child);
+
+ updatingDOM=false;
+ }
+
+ public void forceReplace(Element replacementElement, Element referenceElement)
+ {
+ isReconciling = true;
+ updatingDOM = true;
+
+ XSDConcreteComponentImpl container = (XSDConcreteComponentImpl)getContainer();
+ container.isReconciling = true;
+ container.updatingDOM = true;
+
+ Node parent = referenceElement.getParentNode();
+ XSDConcreteComponentImpl containerOfContainer =
+ parent != container.getElement() ?
+ (XSDConcreteComponentImpl)container.getContainer() :
+ null;
+ if (containerOfContainer != null)
+ {
+ containerOfContainer.isReconciling = true;
+ containerOfContainer.updatingDOM = true;
+ }
+
+ for (Node child = referenceElement.getFirstChild(); child != null; )
+ {
+ Node node = child;
+ child = child.getNextSibling();
+ referenceElement.removeChild(node);
+ replacementElement.appendChild(node);
+ }
+
+ org.w3c.dom.NamedNodeMap attributes = referenceElement.getAttributes();
+ for (int i = 0, length = attributes.getLength(); i < length; ++i)
+ {
+ replacementElement.setAttributeNode((org.w3c.dom.Attr)attributes.item(i).cloneNode(true));
+ }
+
+ forceNiceInsertBefore(parent, replacementElement, referenceElement);
+ forceNiceRemoveChild(parent, referenceElement);
+
+ updatingDOM = false;
+ isReconciling = false;
+
+ container.updatingDOM = false;
+ container.isReconciling = false;
+
+ if (containerOfContainer != null)
+ {
+ containerOfContainer.updatingDOM = false;
+ containerOfContainer.isReconciling = false;
+ }
+ }
+
+ public void forceEngulf(Element newElement, Element engulfingElement, Element referenceElement, Node referenceChild)
+ {
+ isReconciling = true;
+ updatingDOM = true;
+
+ forceNiceInsertBefore(referenceElement, newElement, referenceChild);
+
+ for (Node child = referenceChild; child != null; )
+ {
+ Node node = child;
+ child = child.getNextSibling();
+ forceNiceRemoveChild(referenceElement, node);
+ forceNiceInsertBefore(engulfingElement, node, null);
+ }
+
+ updatingDOM = false;
+ isReconciling = false;
+ }
+
+ public void forceEngulf(Node firstAdoptee, Element engulfingElement, Node referenceChild)
+ {
+ isReconciling = true;
+ updatingDOM = true;
+
+ Node parent = firstAdoptee.getParentNode();
+ for (Node child = firstAdoptee; child != null; )
+ {
+ Node node = child;
+ child = child.getNextSibling();
+ forceNiceRemoveChild(parent, node);
+ forceNiceInsertBefore(engulfingElement, node, referenceChild);
+ }
+
+ updatingDOM = false;
+ isReconciling = false;
+ }
+
+ protected void niceSetAttribute(Element element, String attribute, String value)
+ {
+ if (isReconciling)
+ {
+ // System.out.println("**** cyclic dom attribute writeback avoided " + eClass().getName());
+ return;
+ }
+
+ if (value == null)
+ {
+ if (element.hasAttributeNS(null, attribute))
+ {
+ updatingDOM = true;
+ element.removeAttribute(attribute);
+ updatingDOM=false;
+ }
+ }
+ else if (!element.hasAttributeNS(null, attribute) || !element.getAttributeNS(null, attribute).equals(value))
+ {
+ updatingDOM = true;
+ element.setAttributeNS(null, attribute, value);
+ updatingDOM=false;
+ }
+ }
+
+ protected String niceCreateNamespaceAttribute(String namespace)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (namespace == null)
+ {
+ namespace = "";
+ }
+ if (xsdSchema != null && xsdSchema.getElement() != null)
+ {
+ Element schemaElement = xsdSchema.getElement();
+ if (XSDConstants.isSchemaForSchemaNamespace(namespace))
+ {
+ if (!schemaElement.hasAttributeNS(XSDConstants.XMLNS_URI_2000, "xsd"))
+ {
+ schemaElement.setAttributeNS(XSDConstants.XMLNS_URI_2000, "xmlns:xsd", namespace);
+ xsdSchema.getQNamePrefixToNamespaceMap().put("xsd", namespace);
+ return "xsd";
+ }
+ }
+
+ String qualifier = "Q";
+ String result;
+ int count = 1;
+ while (schemaElement.hasAttributeNS(XSDConstants.XMLNS_URI_2000, result = qualifier + count))
+ {
+ ++count;
+ }
+ schemaElement.setAttributeNS(XSDConstants.XMLNS_URI_2000, "xmlns:" + result, namespace);
+ xsdSchema.getQNamePrefixToNamespaceMap().put(result, namespace);
+ return result;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected void niceSetAttributeURIValue(Element element, String attribute, String uriList)
+ {
+ if (isReconciling)
+ {
+ // System.out.println("**** cyclic dom attribute writeback avoided " + eClass().getName());
+ return;
+ }
+
+ if (uriList == null)
+ {
+ updatingDOM = true;
+ element.removeAttribute(attribute);
+ updatingDOM=false;
+ }
+ else
+ {
+ StringBuffer value = new StringBuffer();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(uriList, " "); stringTokenizer.hasMoreElements(); )
+ {
+ String uri = stringTokenizer.nextToken();
+ String namespace = null;
+ String localName = uri;
+ int index = uri.lastIndexOf("#");
+ if (index != -1)
+ {
+ if (index > 0)
+ {
+ namespace = uri.substring(0, index);
+ }
+ localName = uri.substring(index + 1);
+ }
+ String qualifier = XSDConstants.lookupQualifier(element, namespace);
+ if (qualifier == null)
+ {
+ qualifier = niceCreateNamespaceAttribute(namespace);
+ }
+
+ String qName = qualifier == null || qualifier.length() == 0 ? localName : qualifier + ":" + localName;
+
+ if (value.length() != 0)
+ {
+ value.append(' ');
+ }
+ value.append(qName);
+ }
+
+ if (!element.hasAttributeNS(null, attribute) || !element.getAttributeNS(null, attribute).equals(value.toString()))
+ {
+ updatingDOM = true;
+ element.setAttributeNS(null, attribute, value.toString());
+ updatingDOM=false;
+ }
+ }
+ }
+
+ public XSDConcreteComponent getContainer()
+ {
+ return
+ eContainer instanceof XSDConcreteComponent ?
+ (XSDConcreteComponent)eContainer :
+ null;
+ }
+
+ public XSDConcreteComponent getRootContainer()
+ {
+ for (XSDConcreteComponent root = this;;)
+ {
+ XSDConcreteComponent parent = root.getContainer();
+ if (parent == null)
+ {
+ return root;
+ }
+ root = parent;
+ }
+ }
+
+ public boolean contains(XSDConcreteComponent xsdConcreteComponent)
+ {
+ while (xsdConcreteComponent != null)
+ {
+ if (xsdConcreteComponent == this)
+ {
+ return true;
+ }
+ xsdConcreteComponent = xsdConcreteComponent.getContainer();
+ }
+ return false;
+ }
+
+ public XSDSchema getSchema()
+ {
+ for (XSDConcreteComponent container = this; container != null; container = container.getContainer())
+ {
+ if (container instanceof XSDSchema)
+ {
+ return (XSDSchema)container;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDDiagnostic> getDiagnostics()
+ {
+ if (diagnostics == null)
+ {
+ diagnostics = new EObjectContainmentEList<XSDDiagnostic>(XSDDiagnostic.class, this, XSDPackage.XSD_CONCRETE_COMPONENT__DIAGNOSTICS);
+ }
+ return diagnostics;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CONCRETE_COMPONENT__DIAGNOSTICS:
+ return ((InternalEList<?>)getDiagnostics()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CONCRETE_COMPONENT__ELEMENT:
+ return getElement();
+ case XSDPackage.XSD_CONCRETE_COMPONENT__CONTAINER:
+ return getContainer();
+ case XSDPackage.XSD_CONCRETE_COMPONENT__ROOT_CONTAINER:
+ return getRootContainer();
+ case XSDPackage.XSD_CONCRETE_COMPONENT__SCHEMA:
+ return getSchema();
+ case XSDPackage.XSD_CONCRETE_COMPONENT__DIAGNOSTICS:
+ return getDiagnostics();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CONCRETE_COMPONENT__ELEMENT:
+ setElement((Element)newValue);
+ return;
+ case XSDPackage.XSD_CONCRETE_COMPONENT__DIAGNOSTICS:
+ getDiagnostics().clear();
+ getDiagnostics().addAll((Collection<? extends XSDDiagnostic>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CONCRETE_COMPONENT__ELEMENT:
+ setElement(ELEMENT_EDEFAULT);
+ return;
+ case XSDPackage.XSD_CONCRETE_COMPONENT__DIAGNOSTICS:
+ getDiagnostics().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_CONCRETE_COMPONENT__ELEMENT:
+ return ELEMENT_EDEFAULT == null ? element != null : !ELEMENT_EDEFAULT.equals(element);
+ case XSDPackage.XSD_CONCRETE_COMPONENT__CONTAINER:
+ return getContainer() != null;
+ case XSDPackage.XSD_CONCRETE_COMPONENT__ROOT_CONTAINER:
+ return getRootContainer() != null;
+ case XSDPackage.XSD_CONCRETE_COMPONENT__SCHEMA:
+ return getSchema() != null;
+ case XSDPackage.XSD_CONCRETE_COMPONENT__DIAGNOSTICS:
+ return diagnostics != null && !diagnostics.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (element: ");
+ result.append(element);
+ result.append(')');
+ return result.toString();
+ }
+
+ public XSDConcreteComponent getBestConcreteComponent(List<Element> elementPath)
+ {
+ XSDConcreteComponent result = this;
+ for (XSDConcreteComponentImpl childXSDConcreteComponent : getXSDConcreteComponentImpls())
+ {
+ if (elementPath.contains(childXSDConcreteComponent.getElement()))
+ {
+ result = childXSDConcreteComponent;
+ XSDConcreteComponent betterXSDConcreteComponent = childXSDConcreteComponent.getBestConcreteComponent(elementPath);
+ if (betterXSDConcreteComponent != null)
+ {
+ result = betterXSDConcreteComponent;
+ }
+
+ if (!considerAllContainsForBestConcreteComponent())
+ {
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ protected boolean considerAllContainsForBestConcreteComponent()
+ {
+ return false;
+ }
+
+ public static <T> void setListContentAndOrder(EList<T> targetList, List<? extends T> prototypeList)
+ {
+ for (int index = 0, size = prototypeList.size(); index < size; ++index)
+ {
+ T prototypeObject = prototypeList.get(index);
+ if (targetList.size() <= index)
+ {
+ targetList.add(prototypeObject);
+ }
+ else
+ {
+ Object targetObject = targetList.get(index);
+ if (targetObject == null ? prototypeObject != null : !targetObject.equals(prototypeObject))
+ {
+ if (targetList.contains(prototypeObject))
+ {
+ targetList.move(index, prototypeObject);
+ }
+ else
+ {
+ targetList.add(index, prototypeObject);
+ }
+ }
+ }
+ }
+ }
+
+ protected String getURIReferenceLabel()
+ {
+ return null;
+ }
+
+ @Override
+ public String eURIFragmentSegment(EStructuralFeature eStructuralFeature, EObject eObject)
+ {
+ StringBuffer result = new StringBuffer();
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)eObject;
+ String sort = xsdConcreteComponent.eClass().getName();
+ int sortCount = 0;
+ int labelCount = 0;
+ String uriReferenceLabel = ((XSDConcreteComponentImpl)xsdConcreteComponent).getURIReferenceLabel();
+ @SuppressWarnings("unchecked") EList<XSDConcreteComponentImpl> eContents = (EList<XSDConcreteComponentImpl>)(EList<?>)eContents();
+ for (XSDConcreteComponentImpl sibling : eContents)
+ {
+ if (sibling == eObject)
+ {
+ break;
+ }
+ if (sibling.eClass().getName().equals(sort))
+ {
+ ++sortCount;
+ if (uriReferenceLabel != null &&
+ uriReferenceLabel.equals(sibling.getURIReferenceLabel()))
+ {
+ ++labelCount;
+ }
+ }
+ }
+
+ if (uriReferenceLabel != null)
+ {
+ result.append(uriReferenceLabel);
+ if (labelCount != 0)
+ {
+ result.append("=");
+ result.append(labelCount);
+ }
+ result.append(";");
+ }
+ result.append(sort);
+ if (sortCount != 0)
+ {
+ result.append("=");
+ result.append(sortCount);
+ }
+
+ return result.toString();
+ }
+
+ @Override
+ public EObject eObjectForURIFragmentSegment(String uriFragmentSegment)
+ {
+ EObject result = null;
+ if (uriFragmentSegment.startsWith("@"))
+ {
+ result = super.eObjectForURIFragmentSegment(uriFragmentSegment);
+ }
+ else
+ {
+ StringTokenizer stringTokenizer = new StringTokenizer(uriFragmentSegment, ";=,", true);
+
+ String uriReferenceLabel = null;
+ String sort = stringTokenizer.nextToken();
+ if (Character.isDigit(sort.charAt(0)))
+ {
+ int diagnosticIndex = 0;
+ try
+ {
+ diagnosticIndex = Integer.parseInt(sort);
+ }
+ catch (NumberFormatException exception)
+ {
+ // Ignore.
+ }
+ List<XSDDiagnostic> theDiagnostics = getDiagnostics();
+ if (theDiagnostics.size() > diagnosticIndex)
+ {
+ result = theDiagnostics.get(diagnosticIndex);
+ }
+ }
+ else
+ {
+ EReference eReference = null;
+ int labelCount = 0;
+ int sortCount = 0;
+ String prefix = stringTokenizer.hasMoreTokens() ? stringTokenizer.nextToken() : "";
+ if (prefix.equals(","))
+ {
+ String relationName = sort;
+ eReference = (EReference)eClass().getEStructuralFeature(relationName);
+ sort = stringTokenizer.nextToken();
+ prefix = stringTokenizer.nextToken();
+ }
+
+ if (prefix.equals("="))
+ {
+ String sortCountString = stringTokenizer.nextToken();
+ try
+ {
+ sortCount = Integer.parseInt(sortCountString);
+ }
+ catch (NumberFormatException exception)
+ {
+ // Ignore.
+ }
+ prefix = stringTokenizer.hasMoreTokens() ? stringTokenizer.nextToken() : "";
+ }
+ if (prefix.equals(";"))
+ {
+ uriReferenceLabel = sort;
+ labelCount = sortCount;
+ sort = stringTokenizer.nextToken();
+ sortCount = 0;
+ if (stringTokenizer.hasMoreTokens())
+ {
+ prefix = stringTokenizer.nextToken();
+ if (prefix.equals("="))
+ {
+ String sortCountString = stringTokenizer.nextToken();
+ try
+ {
+ sortCount = Integer.parseInt(sortCountString);
+ }
+ catch (NumberFormatException exception)
+ {
+ // Ignore.
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ Collection<XSDConcreteComponentImpl> collection =
+ eReference == null ?
+ (Collection<XSDConcreteComponentImpl>)(Collection<?>)eContents() :
+ eReference.isMany() ?
+ (Collection<XSDConcreteComponentImpl>)eGet(eReference) :
+ Collections.singleton((XSDConcreteComponentImpl)eGet(eReference));
+
+ EObject candidate = null;
+ for (XSDConcreteComponentImpl child : collection)
+ {
+ if (sortCount >= 0 && child.eClass().getName().equals(sort))
+ {
+ --sortCount;
+ candidate = child;
+ if (sortCount == -1 && uriReferenceLabel == null)
+ {
+ break;
+ }
+ }
+ if (uriReferenceLabel != null &&
+ uriReferenceLabel.equals(child.getURIReferenceLabel()) &&
+ child.eClass().getName().equals(sort))
+ {
+ if (labelCount-- == 0)
+ {
+ candidate = child;
+ break;
+ }
+ }
+ }
+
+ result = candidate;
+ }
+ }
+
+ return result;
+ }
+
+ public XSDTypeDefinition resolveTypeDefinitionURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveTypeDefinition(null, uri);
+ }
+ else
+ {
+ return resolveTypeDefinition(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDTypeDefinition resolveTypeDefinition(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveTypeDefinition(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedTypeDefinition(null, localName);
+ }
+ }
+
+ public XSDTypeDefinition resolveTypeDefinition(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveTypeDefinition(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedTypeDefinition(namespace, localName);
+ }
+ }
+
+ protected XSDTypeDefinition createUnresolvedTypeDefinition(String namespace, String localName)
+ {
+ return createUnresolvedSimpleTypeDefinition(namespace, localName);
+ }
+
+
+
+ public XSDSimpleTypeDefinition resolveSimpleTypeDefinitionURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveSimpleTypeDefinition(null, uri);
+ }
+ else
+ {
+ return resolveSimpleTypeDefinition(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveSimpleTypeDefinition(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedSimpleTypeDefinition(null, localName);
+ }
+ }
+
+ public XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveSimpleTypeDefinition(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedSimpleTypeDefinition(namespace, localName);
+ }
+ }
+
+ protected XSDSimpleTypeDefinition createUnresolvedSimpleTypeDefinition(String namespace, String localName)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ if (localName != null)
+ {
+ xsdSimpleTypeDefinition.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdSimpleTypeDefinition.setTargetNamespace(namespace);
+ }
+ xsdSimpleTypeDefinition.setVariety(XSDVariety.ATOMIC_LITERAL);
+ return xsdSimpleTypeDefinition;
+ }
+
+ public XSDComplexTypeDefinition resolveComplexTypeDefinitionURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveComplexTypeDefinition(null, uri);
+ }
+ else
+ {
+ return resolveComplexTypeDefinition(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDComplexTypeDefinition resolveComplexTypeDefinition(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveComplexTypeDefinition(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedComplexTypeDefinition(null, localName);
+ }
+ }
+
+ public XSDComplexTypeDefinition resolveComplexTypeDefinition(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveComplexTypeDefinition(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedComplexTypeDefinition(namespace, localName);
+ }
+ }
+
+ protected XSDComplexTypeDefinition createUnresolvedComplexTypeDefinition(String namespace, String localName)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ if (localName != null)
+ {
+ xsdComplexTypeDefinition.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdComplexTypeDefinition.setTargetNamespace(namespace);
+ }
+ return xsdComplexTypeDefinition;
+ }
+
+
+
+
+ public XSDAttributeDeclaration resolveAttributeDeclarationURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveAttributeDeclaration(null, uri);
+ }
+ else
+ {
+ return resolveAttributeDeclaration(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDAttributeDeclaration resolveAttributeDeclaration(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveAttributeDeclaration(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedAttributeDeclaration(null, localName);
+ }
+ }
+
+ public XSDAttributeDeclaration resolveAttributeDeclaration(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveAttributeDeclaration(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedAttributeDeclaration(namespace, localName);
+ }
+ }
+
+ protected XSDAttributeDeclaration createUnresolvedAttributeDeclaration(String namespace, String localName)
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ if (localName != null)
+ {
+ xsdAttributeDeclaration.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdAttributeDeclaration.setTargetNamespace(namespace);
+ }
+ xsdAttributeDeclaration.setResolvedAttributeDeclaration(xsdAttributeDeclaration);
+ return xsdAttributeDeclaration;
+ }
+
+
+
+ public XSDElementDeclaration resolveElementDeclarationURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveElementDeclaration(null, uri);
+ }
+ else
+ {
+ return resolveElementDeclaration(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDElementDeclaration resolveElementDeclaration(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveElementDeclaration(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedElementDeclaration(null, localName);
+ }
+ }
+
+ public XSDElementDeclaration resolveElementDeclaration(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveElementDeclaration(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedElementDeclaration(namespace, localName);
+ }
+ }
+
+ protected XSDElementDeclaration createUnresolvedElementDeclaration(String namespace, String localName)
+ {
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ if (localName != null)
+ {
+ xsdElementDeclaration.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdElementDeclaration.setTargetNamespace(namespace);
+ }
+ xsdElementDeclaration.setResolvedElementDeclaration(xsdElementDeclaration);
+ return xsdElementDeclaration;
+ }
+
+
+
+
+
+ public XSDAttributeGroupDefinition resolveAttributeGroupDefinitionURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveAttributeGroupDefinition(null, uri);
+ }
+ else
+ {
+ return resolveAttributeGroupDefinition(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveAttributeGroupDefinition(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedAttributeGroupDefinition(null, localName);
+ }
+ }
+
+ public XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveAttributeGroupDefinition(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedAttributeGroupDefinition(namespace, localName);
+ }
+ }
+
+ protected XSDAttributeGroupDefinition createUnresolvedAttributeGroupDefinition(String namespace, String localName)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ if (localName != null)
+ {
+ xsdAttributeGroupDefinition.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdAttributeGroupDefinition.setTargetNamespace(namespace);
+ }
+ xsdAttributeGroupDefinition.setResolvedAttributeGroupDefinition(xsdAttributeGroupDefinition);
+ return xsdAttributeGroupDefinition;
+ }
+
+
+
+ public XSDModelGroupDefinition resolveModelGroupDefinitionURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveModelGroupDefinition(null, uri);
+ }
+ else
+ {
+ return resolveModelGroupDefinition(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDModelGroupDefinition resolveModelGroupDefinition(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveModelGroupDefinition(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedModelGroupDefinition(null, localName);
+ }
+ }
+
+ public XSDModelGroupDefinition resolveModelGroupDefinition(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveModelGroupDefinition(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedModelGroupDefinition(namespace, localName);
+ }
+ }
+
+ protected XSDModelGroupDefinition createUnresolvedModelGroupDefinition(String namespace, String localName)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = XSDFactory.eINSTANCE.createXSDModelGroupDefinition();
+ if (localName != null)
+ {
+ xsdModelGroupDefinition.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdModelGroupDefinition.setTargetNamespace(namespace);
+ }
+ xsdModelGroupDefinition.setResolvedModelGroupDefinition(xsdModelGroupDefinition);
+ XSDModelGroup xsdModelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ xsdModelGroupDefinition.setModelGroup(xsdModelGroup);
+ return xsdModelGroupDefinition;
+ }
+
+ public XSDIdentityConstraintDefinition resolveIdentityConstraintDefinitionURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveIdentityConstraintDefinition(null, uri);
+ }
+ else
+ {
+ return resolveIdentityConstraintDefinition(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveIdentityConstraintDefinition(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedIdentityConstraintDefinition(null, localName);
+ }
+ }
+
+ public XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveIdentityConstraintDefinition(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedIdentityConstraintDefinition(namespace, localName);
+ }
+ }
+
+ protected XSDIdentityConstraintDefinition createUnresolvedIdentityConstraintDefinition(String namespace, String localName)
+ {
+ XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition =
+ XSDFactory.eINSTANCE.createXSDIdentityConstraintDefinition();
+ xsdIdentityConstraintDefinition.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEY_LITERAL);
+ if (localName != null)
+ {
+ xsdIdentityConstraintDefinition.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdIdentityConstraintDefinition.setTargetNamespace(namespace);
+ }
+ return xsdIdentityConstraintDefinition;
+ }
+
+ public XSDNotationDeclaration resolveNotationDeclarationURI(String uri)
+ {
+ int index = uri.lastIndexOf("#");
+ if (index == -1)
+ {
+ return resolveNotationDeclaration(null, uri);
+ }
+ else
+ {
+ return resolveNotationDeclaration(uri.substring(0, index), uri.substring(index + 1));
+ }
+ }
+
+ public XSDNotationDeclaration resolveNotationDeclaration(String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveNotationDeclaration(xsdSchema.getTargetNamespace(), localName);
+ }
+ else
+ {
+ return createUnresolvedNotationDeclaration(null, localName);
+ }
+ }
+
+ public XSDNotationDeclaration resolveNotationDeclaration(String namespace, String localName)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.resolveNotationDeclaration(namespace, localName);
+ }
+ else
+ {
+ return createUnresolvedNotationDeclaration(namespace, localName);
+ }
+ }
+
+ protected XSDNotationDeclaration createUnresolvedNotationDeclaration(String namespace, String localName)
+ {
+ XSDNotationDeclaration xsdNotationDeclaration =
+ XSDFactory.eINSTANCE.createXSDNotationDeclaration();
+ if (localName != null)
+ {
+ xsdNotationDeclaration.setName(localName);
+ }
+ if (namespace != null)
+ {
+ xsdNotationDeclaration.setTargetNamespace(namespace);
+ }
+ return xsdNotationDeclaration;
+ }
+
+ public Collection<XSDConcreteComponent> getComponentsWithApplicationInformation(String sourceURI)
+ {
+ Collection<XSDConcreteComponent> result = new HashSet<XSDConcreteComponent>();
+ getComponentsWithInformation(result, XSDConstants.APPINFO_ELEMENT, sourceURI);
+ return result;
+ }
+
+ public Collection<XSDConcreteComponent> getComponentsWithUserInformation(String sourceURI)
+ {
+ Collection<XSDConcreteComponent> result = new HashSet<XSDConcreteComponent>();
+ getComponentsWithInformation(result, XSDConstants.DOCUMENTATION_ELEMENT, sourceURI);
+ return result;
+ }
+
+ protected void getComponentsWithInformation(Collection<XSDConcreteComponent> result, int nodeType, String sourceURI)
+ {
+ for (XSDConcreteComponentImpl xsdConcreteComponent : getXSDConcreteComponentImpls())
+ {
+ xsdConcreteComponent.getComponentsWithInformation(result, nodeType, sourceURI);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getElement()
+ {
+ return element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setElementGen(Element newElement)
+ {
+ Element oldElement = element;
+ element = newElement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_CONCRETE_COMPONENT__ELEMENT, oldElement, element));
+ }
+
+/*
+ public void unsetElement()
+ {
+ isReconciling = true;
+ unsetElementGen();
+ for (Iterator contents = getXSDContents().iterator(); contents.hasNext(); )
+ {
+ XSDConcreteComponentImpl content = (XSDConcreteComponentImpl)contents.next();
+ content.unsetElement();
+ }
+ isReconciling = false;
+ }
+*/
+
+ public void setElement(Element element)
+ {
+ if (element == null)
+ {
+ isReconciling = true;
+ setElementGen(null);
+ for (XSDConcreteComponentImpl content : getXSDConcreteComponentImpls())
+ {
+ content.setElement(null);
+ }
+ isReconciling = false;
+ }
+ else
+ {
+ setElementGen(element);
+ }
+ }
+
+ /**
+ */
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ throw new RuntimeException("Unimplemented: XSDConcreteComponent.cloneConcreteComponent(boolean deep, boolean shareDOM)");
+ }
+
+ protected static <T extends XSDConcreteComponent> List<T> cloneConcreteComponents(List<T> xsdConcreteComponents, boolean deep, boolean shareDOM)
+ {
+ List<T> result = new ArrayList<T>(xsdConcreteComponents.size());
+ for (XSDConcreteComponent xsdConcreteComponent : xsdConcreteComponents)
+ {
+ try
+ {
+ @SuppressWarnings("unchecked")
+ T clonedConcreteComponent = (T)xsdConcreteComponent.cloneConcreteComponent(deep, shareDOM);
+ result.add(clonedConcreteComponent);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public boolean eNotificationRequired()
+ {
+ return true;
+ }
+
+ protected boolean convertToBoolean(String value)
+ {
+ value = XMLTypeUtil.normalize(value, true);
+ return "true".equals(value) || "1".equals(value);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDConstrainingFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDConstrainingFacetImpl.java
new file mode 100644
index 0000000..c96631d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDConstrainingFacetImpl.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDConstrainingFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Constraining Facet</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDConstrainingFacetImpl
+ extends XSDFacetImpl
+ implements XSDConstrainingFacet
+{
+ public static XSDConstrainingFacet createConstrainingFacet(Node node)
+ {
+ XSDConstrainingFacet result = XSDFixedFacetImpl.createFixedFacet(node);
+ if (result == null)
+ {
+ result = XSDRepeatableFacetImpl.createRepeatableFacet(node);
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDConstrainingFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_CONSTRAINING_FACET;
+ }
+
+ @Override
+ public void validate()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (!xsdSimpleTypeDefinition.getValidFacets().contains(getFacetName()) && !xsdSimpleTypeDefinition.isCircular())
+ {
+ XSDSimpleTypeDefinition rootTypeDefinition = xsdSimpleTypeDefinition.getRootTypeDefinition();
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "cos-applicable-facets",
+ getElement(),
+ null,
+ new Object [] { getFacetName(), rootTypeDefinition.getURI() });
+ }
+ else
+ {
+ super.validate();
+ }
+ }
+
+ public boolean isConstraintSatisfied(Object value)
+ {
+ return false;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDDiagnosticImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDDiagnosticImpl.java
new file mode 100644
index 0000000..2d92d30
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDDiagnosticImpl.java
@@ -0,0 +1,815 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDParser;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Diagnostic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getSeverity <em>Severity</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getMessage <em>Message</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getLocationURI <em>Location URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getLine <em>Line</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getColumn <em>Column</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getNode <em>Node</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getAnnotationURI <em>Annotation URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getSubstitutions <em>Substitutions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getComponents <em>Components</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDDiagnosticImpl#getPrimaryComponent <em>Primary Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDDiagnosticImpl
+ extends XSDConcreteComponentImpl
+ implements XSDDiagnostic
+{
+ /**
+ * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSeverity()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDDiagnosticSeverity SEVERITY_EDEFAULT = XSDDiagnosticSeverity.FATAL_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int SEVERITY_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int SEVERITY_EFLAG_DEFAULT = SEVERITY_EDEFAULT.ordinal() << SEVERITY_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDDiagnosticSeverity Diagnostic Severity}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDDiagnosticSeverity[] SEVERITY_EFLAG_VALUES = XSDDiagnosticSeverity.values();
+
+ /**
+ * The flags representing the value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSeverity()
+ * @generated
+ * @ordered
+ */
+ protected static final int SEVERITY_EFLAG = 0x3 << SEVERITY_EFLAG_OFFSET;
+
+ /**
+ * The default value of the '{@link #getMessage() <em>Message</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMessage()
+ * @generated
+ * @ordered
+ */
+ protected static final String MESSAGE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMessage() <em>Message</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMessage()
+ * @generated
+ * @ordered
+ */
+ protected String message = MESSAGE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLocationURI() <em>Location URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocationURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String LOCATION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLocationURI() <em>Location URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocationURI()
+ * @generated
+ * @ordered
+ */
+ protected String locationURI = LOCATION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLine() <em>Line</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLine()
+ * @generated
+ * @ordered
+ */
+ protected static final int LINE_EDEFAULT = 1;
+
+ /**
+ * The cached value of the '{@link #getLine() <em>Line</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLine()
+ * @generated
+ * @ordered
+ */
+ protected int line = LINE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumn() <em>Column</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected static final int COLUMN_EDEFAULT = 1;
+
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected int column = COLUMN_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNode() <em>Node</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNode()
+ * @generated
+ * @ordered
+ */
+ protected static final Node NODE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNode() <em>Node</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNode()
+ * @generated
+ * @ordered
+ */
+ protected Node node = NODE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAnnotationURI() <em>Annotation URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotationURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String ANNOTATION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getAnnotationURI() <em>Annotation URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotationURI()
+ * @generated
+ * @ordered
+ */
+ protected String annotationURI = ANNOTATION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKey()
+ * @generated
+ * @ordered
+ */
+ protected String key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSubstitutions() <em>Substitutions</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubstitutions()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> substitutions;
+
+ /**
+ * The cached value of the '{@link #getComponents() <em>Components</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getComponents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDConcreteComponent> components;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDDiagnosticImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_DIAGNOSTIC;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDDiagnosticSeverity getSeverity()
+ {
+ return SEVERITY_EFLAG_VALUES[(eFlags & SEVERITY_EFLAG) >>> SEVERITY_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSeverity(XSDDiagnosticSeverity newSeverity)
+ {
+ XSDDiagnosticSeverity oldSeverity = SEVERITY_EFLAG_VALUES[(eFlags & SEVERITY_EFLAG) >>> SEVERITY_EFLAG_OFFSET];
+ if (newSeverity == null) newSeverity = SEVERITY_EDEFAULT;
+ eFlags = eFlags & ~SEVERITY_EFLAG | newSeverity.ordinal() << SEVERITY_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__SEVERITY, oldSeverity, newSeverity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getMessage()
+ {
+ return message;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMessage(String newMessage)
+ {
+ String oldMessage = message;
+ message = newMessage;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__MESSAGE, oldMessage, message));
+ }
+
+ public String getLocation()
+ {
+ return getLocationURI();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLocationURIGen()
+ {
+ return locationURI;
+ }
+
+ public String getLocationURI()
+ {
+ if (getLocationURIGen() == null)
+ {
+ XSDConcreteComponent thePrimaryComponent = getPrimaryComponent();
+ if (thePrimaryComponent != null)
+ {
+ XSDSchema xsdSchema = thePrimaryComponent.getSchema();
+ if (xsdSchema != null)
+ {
+ return xsdSchema.getSchemaLocation();
+ }
+ }
+ }
+ return getLocationURIGen();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLocationURI(String newLocationURI)
+ {
+ String oldLocationURI = locationURI;
+ locationURI = newLocationURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__LOCATION_URI, oldLocationURI, locationURI));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getLineGen()
+ {
+ return line;
+ }
+
+ public int getLine()
+ {
+ Node theNode = getNode();
+ if (theNode != null && theNode.getNodeType() == Node.ATTRIBUTE_NODE)
+ {
+ theNode = ((Attr)theNode).getOwnerElement();
+ }
+ if (theNode != null && XSDParser.getUserData(theNode) != null)
+ {
+ return XSDParser.getStartLine(theNode);
+ }
+
+ return getLineGen();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLine(int newLine)
+ {
+ int oldLine = line;
+ line = newLine;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__LINE, oldLine, line));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getColumnGen()
+ {
+ return column;
+ }
+
+ public int getColumn()
+ {
+ Node theNode = getNode();
+ if (theNode != null && theNode.getNodeType() == Node.ATTRIBUTE_NODE)
+ {
+ theNode = ((Attr)theNode).getOwnerElement();
+ }
+ if (theNode != null && XSDParser.getUserData(theNode) != null)
+ {
+ return XSDParser.getStartColumn(theNode);
+ }
+
+ return getColumnGen();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setColumn(int newColumn)
+ {
+ int oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__COLUMN, oldColumn, column));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getNode()
+ {
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNode(Node newNode)
+ {
+ Node oldNode = node;
+ node = newNode;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__NODE, oldNode, node));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getAnnotationURI()
+ {
+ return annotationURI;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotationURI(String newAnnotationURI)
+ {
+ String oldAnnotationURI = annotationURI;
+ annotationURI = newAnnotationURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__ANNOTATION_URI, oldAnnotationURI, annotationURI));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getKey()
+ {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(String newKey)
+ {
+ String oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_DIAGNOSTIC__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getSubstitutions()
+ {
+ if (substitutions == null)
+ {
+ substitutions = new EDataTypeUniqueEList<String>(String.class, this, XSDPackage.XSD_DIAGNOSTIC__SUBSTITUTIONS);
+ }
+ return substitutions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDConcreteComponent> getComponents()
+ {
+ if (components == null)
+ {
+ components = new EObjectEList<XSDConcreteComponent>(XSDConcreteComponent.class, this, XSDPackage.XSD_DIAGNOSTIC__COMPONENTS);
+ }
+ return components;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public XSDConcreteComponent getPrimaryComponent()
+ {
+ List<XSDConcreteComponent> theComponents = getComponents();
+ return
+ theComponents.size() > 0 ?
+ theComponents.get(0) :
+ null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public void setPrimaryComponent(XSDConcreteComponent primaryComponent)
+ {
+ List<XSDConcreteComponent> theComponents = getComponents();
+ if (primaryComponent == null)
+ {
+ theComponents.clear();
+ }
+ else if (theComponents.size() > 0)
+ {
+ theComponents.set(0, primaryComponent);
+ }
+ else
+ {
+ theComponents.add(primaryComponent);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_DIAGNOSTIC__SEVERITY:
+ return getSeverity();
+ case XSDPackage.XSD_DIAGNOSTIC__MESSAGE:
+ return getMessage();
+ case XSDPackage.XSD_DIAGNOSTIC__LOCATION_URI:
+ return getLocationURI();
+ case XSDPackage.XSD_DIAGNOSTIC__LINE:
+ return getLine();
+ case XSDPackage.XSD_DIAGNOSTIC__COLUMN:
+ return getColumn();
+ case XSDPackage.XSD_DIAGNOSTIC__NODE:
+ return getNode();
+ case XSDPackage.XSD_DIAGNOSTIC__ANNOTATION_URI:
+ return getAnnotationURI();
+ case XSDPackage.XSD_DIAGNOSTIC__KEY:
+ return getKey();
+ case XSDPackage.XSD_DIAGNOSTIC__SUBSTITUTIONS:
+ return getSubstitutions();
+ case XSDPackage.XSD_DIAGNOSTIC__COMPONENTS:
+ return getComponents();
+ case XSDPackage.XSD_DIAGNOSTIC__PRIMARY_COMPONENT:
+ return getPrimaryComponent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_DIAGNOSTIC__SEVERITY:
+ setSeverity((XSDDiagnosticSeverity)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__MESSAGE:
+ setMessage((String)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__LOCATION_URI:
+ setLocationURI((String)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__LINE:
+ setLine((Integer)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__COLUMN:
+ setColumn((Integer)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__NODE:
+ setNode((Node)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__ANNOTATION_URI:
+ setAnnotationURI((String)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__KEY:
+ setKey((String)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__SUBSTITUTIONS:
+ getSubstitutions().clear();
+ getSubstitutions().addAll((Collection<? extends String>)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__COMPONENTS:
+ getComponents().clear();
+ getComponents().addAll((Collection<? extends XSDConcreteComponent>)newValue);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__PRIMARY_COMPONENT:
+ setPrimaryComponent((XSDConcreteComponent)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_DIAGNOSTIC__SEVERITY:
+ setSeverity(SEVERITY_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__MESSAGE:
+ setMessage(MESSAGE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__LOCATION_URI:
+ setLocationURI(LOCATION_URI_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__LINE:
+ setLine(LINE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__COLUMN:
+ setColumn(COLUMN_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__NODE:
+ setNode(NODE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__ANNOTATION_URI:
+ setAnnotationURI(ANNOTATION_URI_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__KEY:
+ setKey(KEY_EDEFAULT);
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__SUBSTITUTIONS:
+ getSubstitutions().clear();
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__COMPONENTS:
+ getComponents().clear();
+ return;
+ case XSDPackage.XSD_DIAGNOSTIC__PRIMARY_COMPONENT:
+ setPrimaryComponent((XSDConcreteComponent)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_DIAGNOSTIC__SEVERITY:
+ return (eFlags & SEVERITY_EFLAG) != SEVERITY_EFLAG_DEFAULT;
+ case XSDPackage.XSD_DIAGNOSTIC__MESSAGE:
+ return MESSAGE_EDEFAULT == null ? message != null : !MESSAGE_EDEFAULT.equals(message);
+ case XSDPackage.XSD_DIAGNOSTIC__LOCATION_URI:
+ return LOCATION_URI_EDEFAULT == null ? locationURI != null : !LOCATION_URI_EDEFAULT.equals(locationURI);
+ case XSDPackage.XSD_DIAGNOSTIC__LINE:
+ return line != LINE_EDEFAULT;
+ case XSDPackage.XSD_DIAGNOSTIC__COLUMN:
+ return column != COLUMN_EDEFAULT;
+ case XSDPackage.XSD_DIAGNOSTIC__NODE:
+ return NODE_EDEFAULT == null ? node != null : !NODE_EDEFAULT.equals(node);
+ case XSDPackage.XSD_DIAGNOSTIC__ANNOTATION_URI:
+ return ANNOTATION_URI_EDEFAULT == null ? annotationURI != null : !ANNOTATION_URI_EDEFAULT.equals(annotationURI);
+ case XSDPackage.XSD_DIAGNOSTIC__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case XSDPackage.XSD_DIAGNOSTIC__SUBSTITUTIONS:
+ return substitutions != null && !substitutions.isEmpty();
+ case XSDPackage.XSD_DIAGNOSTIC__COMPONENTS:
+ return components != null && !components.isEmpty();
+ case XSDPackage.XSD_DIAGNOSTIC__PRIMARY_COMPONENT:
+ return getPrimaryComponent() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public void unsetPrimaryComponent()
+ {
+ List<XSDConcreteComponent> theComponents = getComponents();
+ theComponents.clear();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public boolean isSetPrimaryComponent()
+ {
+ List<XSDConcreteComponent> theComponents = getComponents();
+ return !theComponents.isEmpty();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (severity: ");
+ result.append(SEVERITY_EFLAG_VALUES[(eFlags & SEVERITY_EFLAG) >>> SEVERITY_EFLAG_OFFSET]);
+ result.append(", message: ");
+ result.append(message);
+ result.append(", locationURI: ");
+ result.append(locationURI);
+ result.append(", line: ");
+ result.append(line);
+ result.append(", column: ");
+ result.append(column);
+ result.append(", node: ");
+ result.append(node);
+ result.append(", annotationURI: ");
+ result.append(annotationURI);
+ result.append(", key: ");
+ result.append(key);
+ result.append(", substitutions: ");
+ result.append(substitutions);
+ result.append(')');
+ return result.toString();
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDElementDeclarationImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDElementDeclarationImpl.java
new file mode 100644
index 0000000..1bad241
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDElementDeclarationImpl.java
@@ -0,0 +1,2375 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDContentTypeCategory;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDDisallowedSubstitutions;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDProhibitedSubstitutions;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDSubstitutionGroupExclusions;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#isNillable <em>Nillable</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getDisallowedSubstitutions <em>Disallowed Substitutions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getSubstitutionGroupExclusions <em>Substitution Group Exclusions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getLexicalFinal <em>Lexical Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getBlock <em>Block</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#isElementDeclarationReference <em>Element Declaration Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#isCircular <em>Circular</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getAnonymousTypeDefinition <em>Anonymous Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getTypeDefinition <em>Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getIdentityConstraintDefinitions <em>Identity Constraint Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getResolvedElementDeclaration <em>Resolved Element Declaration</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getSubstitutionGroupAffiliation <em>Substitution Group Affiliation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDElementDeclarationImpl#getSubstitutionGroup <em>Substitution Group</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDElementDeclarationImpl
+ extends XSDFeatureImpl
+ implements XSDElementDeclaration
+{
+ /**
+ * The default value of the '{@link #isNillable() <em>Nillable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isNillable()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean NILLABLE_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isNillable() <em>Nillable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isNillable()
+ * @generated
+ * @ordered
+ */
+ protected static final int NILLABLE_EFLAG = 1 << 12;
+
+ /**
+ * The flag representing whether the Nillable attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int NILLABLE_ESETFLAG = 1 << 13;
+
+ /**
+ * The cached value of the '{@link #getDisallowedSubstitutions() <em>Disallowed Substitutions</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDisallowedSubstitutions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDDisallowedSubstitutions> disallowedSubstitutions;
+
+ /**
+ * The cached value of the '{@link #getSubstitutionGroupExclusions() <em>Substitution Group Exclusions</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubstitutionGroupExclusions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSubstitutionGroupExclusions> substitutionGroupExclusions;
+
+ /**
+ * The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ABSTRACT_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected static final int ABSTRACT_EFLAG = 1 << 14;
+
+ /**
+ * The flag representing whether the Abstract attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ABSTRACT_ESETFLAG = 1 << 15;
+
+ /**
+ * The cached value of the '{@link #getLexicalFinal() <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalFinal()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDProhibitedSubstitutions> lexicalFinal;
+
+ /**
+ * The cached value of the '{@link #getBlock() <em>Block</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBlock()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDDisallowedSubstitutions> block;
+
+ /**
+ * The default value of the '{@link #isElementDeclarationReference() <em>Element Declaration Reference</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isElementDeclarationReference()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ELEMENT_DECLARATION_REFERENCE_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #isCircular() <em>Circular</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCircular()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CIRCULAR_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getAnonymousTypeDefinition() <em>Anonymous Type Definition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnonymousTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDTypeDefinition anonymousTypeDefinition;
+
+ /**
+ * The cached value of the '{@link #getTypeDefinition() <em>Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDTypeDefinition typeDefinition;
+
+ /**
+ * The cached value of the '{@link #getIdentityConstraintDefinitions() <em>Identity Constraint Definitions</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentityConstraintDefinitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDIdentityConstraintDefinition> identityConstraintDefinitions;
+
+ /**
+ * The cached value of the '{@link #getResolvedElementDeclaration() <em>Resolved Element Declaration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedElementDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected XSDElementDeclaration resolvedElementDeclaration;
+
+ /**
+ * The cached value of the '{@link #getSubstitutionGroupAffiliation() <em>Substitution Group Affiliation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubstitutionGroupAffiliation()
+ * @generated
+ * @ordered
+ */
+ protected XSDElementDeclaration substitutionGroupAffiliation;
+
+ /**
+ * The cached value of the '{@link #getSubstitutionGroup() <em>Substitution Group</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubstitutionGroup()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDElementDeclaration> substitutionGroup;
+
+ public static XSDElementDeclaration createElementDeclaration(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.ELEMENT_ELEMENT)
+ {
+ XSDElementDeclaration xsdElementDeclaration = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+ xsdElementDeclaration.setElement((Element)node);
+ return xsdElementDeclaration;
+ }
+
+ return null;
+ }
+
+ protected int analysisState;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XSDElementDeclarationImpl()
+ {
+ super();
+ this.resolvedElementDeclaration = this;
+ // this.setResolvedElementDeclaration = true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ELEMENT_DECLARATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isNillable()
+ {
+ return (eFlags & NILLABLE_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNillable(boolean newNillable)
+ {
+ boolean oldNillable = (eFlags & NILLABLE_EFLAG) != 0;
+ if (newNillable) eFlags |= NILLABLE_EFLAG; else eFlags &= ~NILLABLE_EFLAG;
+ boolean oldNillableESet = (eFlags & NILLABLE_ESETFLAG) != 0;
+ eFlags |= NILLABLE_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__NILLABLE, oldNillable, newNillable, !oldNillableESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetNillable()
+ {
+ boolean oldNillable = (eFlags & NILLABLE_EFLAG) != 0;
+ boolean oldNillableESet = (eFlags & NILLABLE_ESETFLAG) != 0;
+ if (NILLABLE_EDEFAULT) eFlags |= NILLABLE_EFLAG; else eFlags &= ~NILLABLE_EFLAG;
+ eFlags &= ~NILLABLE_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_ELEMENT_DECLARATION__NILLABLE, oldNillable, NILLABLE_EDEFAULT, oldNillableESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetNillable()
+ {
+ return (eFlags & NILLABLE_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDDisallowedSubstitutions> getDisallowedSubstitutions()
+ {
+ if (disallowedSubstitutions == null)
+ {
+ disallowedSubstitutions = new EDataTypeUniqueEList<XSDDisallowedSubstitutions>(XSDDisallowedSubstitutions.class, this, XSDPackage.XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS);
+ }
+ return disallowedSubstitutions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSubstitutionGroupExclusions> getSubstitutionGroupExclusions()
+ {
+ if (substitutionGroupExclusions == null)
+ {
+ substitutionGroupExclusions = new EDataTypeUniqueEList<XSDSubstitutionGroupExclusions>(XSDSubstitutionGroupExclusions.class, this, XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS);
+ }
+ return substitutionGroupExclusions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isAbstract()
+ {
+ return (eFlags & ABSTRACT_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAbstract(boolean newAbstract)
+ {
+ boolean oldAbstract = (eFlags & ABSTRACT_EFLAG) != 0;
+ if (newAbstract) eFlags |= ABSTRACT_EFLAG; else eFlags &= ~ABSTRACT_EFLAG;
+ boolean oldAbstractESet = (eFlags & ABSTRACT_ESETFLAG) != 0;
+ eFlags |= ABSTRACT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__ABSTRACT, oldAbstract, newAbstract, !oldAbstractESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetAbstract()
+ {
+ boolean oldAbstract = (eFlags & ABSTRACT_EFLAG) != 0;
+ boolean oldAbstractESet = (eFlags & ABSTRACT_ESETFLAG) != 0;
+ if (ABSTRACT_EDEFAULT) eFlags |= ABSTRACT_EFLAG; else eFlags &= ~ABSTRACT_EFLAG;
+ eFlags &= ~ABSTRACT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_ELEMENT_DECLARATION__ABSTRACT, oldAbstract, ABSTRACT_EDEFAULT, oldAbstractESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetAbstract()
+ {
+ return (eFlags & ABSTRACT_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDProhibitedSubstitutions> getLexicalFinal()
+ {
+ if (lexicalFinal == null)
+ {
+ lexicalFinal = new EDataTypeUniqueEList.Unsettable<XSDProhibitedSubstitutions>(XSDProhibitedSubstitutions.class, this, XSDPackage.XSD_ELEMENT_DECLARATION__LEXICAL_FINAL);
+ }
+ return lexicalFinal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetLexicalFinal()
+ {
+ if (lexicalFinal != null) ((InternalEList.Unsettable<?>)lexicalFinal).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetLexicalFinal()
+ {
+ return lexicalFinal != null && ((InternalEList.Unsettable<?>)lexicalFinal).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDDisallowedSubstitutions> getBlock()
+ {
+ if (block == null)
+ {
+ block = new EDataTypeUniqueEList.Unsettable<XSDDisallowedSubstitutions>(XSDDisallowedSubstitutions.class, this, XSDPackage.XSD_ELEMENT_DECLARATION__BLOCK);
+ }
+ return block;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetBlock()
+ {
+ if (block != null) ((InternalEList.Unsettable<?>)block).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetBlock()
+ {
+ return block != null && ((InternalEList.Unsettable<?>)block).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getElementDeclarationReference()
+ {
+ return isElementDeclarationReference() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.ELEMENT_ELEMENT);
+ setElement(newElement);
+
+ XSDTypeDefinition anonymousTypeDefinition = getAnonymousTypeDefinition();
+ if (anonymousTypeDefinition != null)
+ {
+ Element child = ((XSDConcreteComponentImpl)anonymousTypeDefinition).createElement();
+ newElement.appendChild(child);
+ }
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ analysisState = UNANALYZED;
+ super.patch();
+ XSDElementDeclaration theResolvedElementDeclaration = getResolvedElementDeclaration();
+ if (theResolvedElementDeclaration == this)
+ {
+ XSDTypeDefinition typeDefinition = getTypeDefinition();
+ if (typeDefinition != null && (forceResolve && typeDefinition.getName() != null || typeDefinition.getContainer() == null))
+ {
+ XSDTypeDefinition newTypeDefinition = resolveTypeDefinition(typeDefinition.getTargetNamespace(), typeDefinition.getName());
+ if (forceResolve || newTypeDefinition.getContainer() != null && newTypeDefinition != typeDefinition)
+ {
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+ }
+
+ XSDElementDeclaration theSubstitutionGroupAffiliation = getSubstitutionGroupAffiliation();
+ if (theSubstitutionGroupAffiliation != null && theSubstitutionGroupAffiliation.getContainer() == null)
+ {
+ XSDElementDeclaration newSubstitutionGroupAffiliation =
+ resolveElementDeclaration(theSubstitutionGroupAffiliation.getTargetNamespace(), theSubstitutionGroupAffiliation.getName());
+ if (newSubstitutionGroupAffiliation.getContainer() != null && newSubstitutionGroupAffiliation != theSubstitutionGroupAffiliation)
+ {
+ setSubstitutionGroupAffiliation(newSubstitutionGroupAffiliation);
+ }
+ }
+
+ if (!isAbstract() && !getSubstitutionGroup().contains(this))
+ {
+ getSubstitutionGroup().add(this);
+ }
+
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ //
+ //
+ List<XSDDisallowedSubstitutions> theBlock = getBlock();
+ if (!isSetBlock())
+ {
+ theBlock = getSchema().getBlockDefault();
+ }
+ List<XSDDisallowedSubstitutions> newDisallowedSubstitutions = new ArrayList<XSDDisallowedSubstitutions>();
+ for (XSDDisallowedSubstitutions value : theBlock)
+ {
+ if (value.toString().equals("all"))
+ {
+ newDisallowedSubstitutions.add(XSDDisallowedSubstitutions.EXTENSION_LITERAL);
+ newDisallowedSubstitutions.add(XSDDisallowedSubstitutions.RESTRICTION_LITERAL);
+ newDisallowedSubstitutions.add(XSDDisallowedSubstitutions.SUBSTITUTION_LITERAL);
+ break;
+ }
+ else
+ {
+ newDisallowedSubstitutions.add(value);
+ }
+ }
+
+ Collection<XSDDisallowedSubstitutions> oldDisallowedSubstitutions = new ArrayList<XSDDisallowedSubstitutions>(getDisallowedSubstitutions());
+ oldDisallowedSubstitutions.removeAll(newDisallowedSubstitutions);
+ if (!oldDisallowedSubstitutions.isEmpty())
+ {
+ getDisallowedSubstitutions().removeAll(oldDisallowedSubstitutions);
+ }
+ setListContentAndOrder(getDisallowedSubstitutions(), newDisallowedSubstitutions);
+
+ //
+ //
+ List<XSDProhibitedSubstitutions> theLexicalFinal = getLexicalFinal();
+ if (!isSetLexicalFinal())
+ {
+ theLexicalFinal = getSchema().getFinalDefault();
+ }
+ List<XSDSubstitutionGroupExclusions> newSubstitutionGroupExclusions = new ArrayList<XSDSubstitutionGroupExclusions>();
+ for (Object value : theLexicalFinal)
+ {
+ if (value.toString().equals("all"))
+ {
+ newSubstitutionGroupExclusions.add(XSDSubstitutionGroupExclusions.EXTENSION_LITERAL);
+ newSubstitutionGroupExclusions.add(XSDSubstitutionGroupExclusions.RESTRICTION_LITERAL);
+ break;
+ }
+ else if (value.toString().equals("restriction"))
+ {
+ newSubstitutionGroupExclusions.add(XSDSubstitutionGroupExclusions.RESTRICTION_LITERAL);
+ }
+ else
+ {
+ newSubstitutionGroupExclusions.add(XSDSubstitutionGroupExclusions.EXTENSION_LITERAL);
+ }
+ }
+
+ Collection<XSDSubstitutionGroupExclusions> oldSubstitutionGroupExclusions =
+ new ArrayList<XSDSubstitutionGroupExclusions>(getSubstitutionGroupExclusions());
+ oldSubstitutionGroupExclusions.removeAll(newSubstitutionGroupExclusions);
+ if (!oldSubstitutionGroupExclusions.isEmpty())
+ {
+ getSubstitutionGroupExclusions().removeAll(oldSubstitutionGroupExclusions);
+ }
+ setListContentAndOrder(getSubstitutionGroupExclusions(), newSubstitutionGroupExclusions);
+ }
+ }
+ else
+ {
+ XSDElementDeclaration newResolvedElementDeclaration =
+ resolveElementDeclaration(theResolvedElementDeclaration.getTargetNamespace(), theResolvedElementDeclaration.getName());
+ if (newResolvedElementDeclaration != theResolvedElementDeclaration)
+ {
+ setResolvedElementDeclaration(newResolvedElementDeclaration);
+ }
+ }
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ analysisState = UNANALYZED;
+ super.traverseToRootForAnalysis();
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ switch (analysisState)
+ {
+ case UNANALYZED:
+ {
+ analysisState = ANALYZING;
+
+ handleAnalysis();
+ if (analysisState == ANALYZING)
+ {
+ analysisState = ANALYZED;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ case ANALYZED:
+ {
+ return true;
+ }
+ case ANALYZING:
+ case CIRCULAR:
+ default:
+ {
+ analysisState = CIRCULAR;
+ return false;
+ }
+ }
+ }
+
+ protected boolean isTypeExplicit = false;
+ protected void handleAnalysis()
+ {
+ if (!isElementDeclarationReference())
+ {
+ XSDElementDeclaration theSubstitutionGroupAffiliation = getSubstitutionGroupAffiliation();
+ if (theSubstitutionGroupAffiliation != null && theSubstitutionGroupAffiliation.getContainer() != null)
+ {
+ ((XSDConcreteComponentImpl)theSubstitutionGroupAffiliation).analyze();
+ }
+
+ XSDTypeDefinition theTypeDefinition = getTypeDefinition();
+
+ if (!isTypeExplicit || theTypeDefinition == null)
+ {
+ XSDTypeDefinition newTypeDefinition =
+ theSubstitutionGroupAffiliation == null || theSubstitutionGroupAffiliation.getTypeDefinition() == null ?
+ getSchema().getSchemaForSchema().resolveTypeDefinition("anyType") :
+ theSubstitutionGroupAffiliation.getTypeDefinition();
+ if (newTypeDefinition != theTypeDefinition)
+ {
+ isTypeExplicit = false;
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+ }
+ }
+
+ super.analyze();
+ }
+
+ @Override
+ protected void patchTargetNamespaceAttribute()
+ {
+ if (!isElementDeclarationReference())
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ patchTargetNamespaceAttributeHelper(xsdSchema);
+ }
+ }
+ }
+
+ @Override
+ protected void patchTargetNamespaceAttribute(XSDSchema xsdSchema)
+ {
+ if (!isElementDeclarationReference())
+ {
+ patchTargetNamespaceAttributeHelper(xsdSchema);
+ }
+ }
+
+ protected void patchTargetNamespaceAttributeHelper(XSDSchema xsdSchema)
+ {
+ if (getScope() instanceof XSDSchema)
+ {
+ if (!isSetForm() || XSDForm.QUALIFIED_LITERAL != getForm())
+ {
+ setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+ }
+
+ if (isSetForm() ? XSDForm.UNQUALIFIED_LITERAL == getForm() : XSDForm.UNQUALIFIED_LITERAL == xsdSchema.getElementFormDefault())
+ {
+ if (getTargetNamespace() != null)
+ {
+ setTargetNamespace(null);
+ }
+ }
+ else
+ {
+ String newTargetNamespace = xsdSchema.getTargetNamespace();
+ if (newTargetNamespace == null ? getTargetNamespace() != null : !newTargetNamespace.equals(getTargetNamespace()))
+ {
+ setTargetNamespace(newTargetNamespace);
+ }
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (getContainer() instanceof XSDSchema)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-element",
+ theElement,
+ new String []
+ {
+ XSDConstants.ABSTRACT_ATTRIBUTE,
+ XSDConstants.BLOCK_ATTRIBUTE,
+ XSDConstants.DEFAULT_ATTRIBUTE,
+ XSDConstants.FINAL_ATTRIBUTE,
+ XSDConstants.FIXED_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.NILLABLE_ATTRIBUTE,
+ XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE,
+ XSDConstants.TYPE_ATTRIBUTE
+ });
+
+ checkComplexContent("topLevelElement", XSDConstants.PART1, "element-element", theElement);
+
+ checkBuiltInTypeConstraint
+ ("boolean",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.ABSTRACT_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("derivationSet",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.FINAL_ATTRIBUTE,
+ false);
+ }
+ else
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-element",
+ theElement,
+ new String []
+ {
+ XSDConstants.BLOCK_ATTRIBUTE,
+ XSDConstants.DEFAULT_ATTRIBUTE,
+ XSDConstants.FIXED_ATTRIBUTE,
+ XSDConstants.FORM_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.NILLABLE_ATTRIBUTE,
+ XSDConstants.REF_ATTRIBUTE,
+ XSDConstants.TYPE_ATTRIBUTE
+ });
+
+ checkComplexContent("localElement", XSDConstants.PART1, "element-element", theElement);
+
+ checkBuiltInTypeConstraint
+ ("formChoice",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.FORM_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("allNNI",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("nonNegativeInteger",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ false);
+ }
+
+ if (theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE) &&
+ theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.1");
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("boolean",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.NILLABLE_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("blockSet",
+ null,
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.BLOCK_ATTRIBUTE,
+ false);
+
+ if (theElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.COMPLEXTYPE_ELEMENT:
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ {
+ XSDDiagnostic xsdDiagnostic = createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.3");
+ xsdDiagnostic.setNode(child);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (isElementDeclarationReference())
+ {
+ XSDElementDeclaration theResolvedElementDeclaration = getResolvedElementDeclaration();
+ if (theResolvedElementDeclaration.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedElementDeclaration_message", theResolvedElementDeclaration.getURI());
+ }
+
+ if (theElement != null)
+ {
+ if (theElement.hasAttributeNS(null, XSDConstants.NAME_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.2.1");
+ }
+ if (theElement.hasAttributeNS(null, XSDConstants.NILLABLE_ATTRIBUTE) ||
+ theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE) ||
+ theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE) ||
+ theElement.hasAttributeNS(null, XSDConstants.BLOCK_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.2.2.1");
+ }
+ }
+
+ if (isSetForm() || theElement != null && theElement.hasAttributeNS(null, XSDConstants.FORM_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.2.2.1");
+ }
+ if (getType() != null || theElement != null && theElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.2.2.1");
+ }
+ else if (theElement != null)
+ {
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.COMPLEXTYPE_ELEMENT:
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ case XSDConstants.KEY_ELEMENT:
+ case XSDConstants.KEYREF_ELEMENT:
+ case XSDConstants.UNIQUE_ELEMENT:
+ {
+ XSDDiagnostic xsdDiagnostic = createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-element.2.2.2");
+ xsdDiagnostic.setNode(child);
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+
+ XSDTypeDefinition theTypeDefinition = getTypeDefinition();
+ if (theTypeDefinition == null || theTypeDefinition.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "_UI_UnresolvedTypeDefinition_message",
+ theTypeDefinition == null ? "" : theTypeDefinition.getURI());
+ }
+
+ if (theTypeDefinition != null)
+ {
+ if (getLexicalValue() != null)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+ if (theTypeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)theTypeDefinition;
+ xsdSimpleTypeDefinition = ((XSDComplexTypeDefinition)theTypeDefinition).getSimpleType();
+ if (xsdSimpleTypeDefinition == null)
+ {
+ if (xsdComplexTypeDefinition.getContentTypeCategory() != XSDContentTypeCategory.MIXED_LITERAL ||
+ !xsdComplexTypeDefinition.getComplexType().isEmptiable())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-valid-default.2.2.2");
+ }
+ }
+ }
+ else
+ {
+ xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)theTypeDefinition;
+ }
+
+ if (xsdSimpleTypeDefinition != null)
+ {
+ if (XSDConstants.isOrIsDerivedFromID(xsdSimpleTypeDefinition))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "e-props-correct.4");
+ }
+ else
+ {
+ checkSimpleTypeConstraint
+ (xsdSimpleTypeDefinition,
+ getLexicalValue(),
+ XSDConstants.PART1,
+ "element-element",
+ theElement,
+ getConstraint() == XSDConstraint.FIXED_LITERAL ? XSDConstants.FIXED_ATTRIBUTE : XSDConstants.DEFAULT_ATTRIBUTE,
+ false);
+ }
+ }
+ }
+ }
+
+ XSDElementDeclaration substitutionGroupAffiliation = getSubstitutionGroupAffiliation();
+ if (substitutionGroupAffiliation != null)
+ {
+ if (substitutionGroupAffiliation.getResolvedElementDeclaration().getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedElementDeclaration_message", substitutionGroupAffiliation.getURI());
+ }
+ else if (theTypeDefinition != null)
+ {
+ EList<XSDSubstitutionGroupExclusions> substitutionGroupExclusions = substitutionGroupAffiliation.getSubstitutionGroupExclusions();
+ XSDTypeDefinition badTypeDefinition =
+ theTypeDefinition.getBadTypeDerivation
+ (substitutionGroupAffiliation.getTypeDefinition(),
+ !substitutionGroupExclusions.contains(XSDSubstitutionGroupExclusions.EXTENSION_LITERAL),
+ !substitutionGroupExclusions.contains(XSDSubstitutionGroupExclusions.RESTRICTION_LITERAL));
+ if (badTypeDefinition != null)
+ {
+ if (XSDConstants.isURType(badTypeDefinition) && substitutionGroupAffiliation.getTypeDefinition() != null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "e-props-correct.3", substitutionGroupAffiliation.getTypeDefinition().getURI());
+ }
+ else
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "cos-ct-derived-ok", badTypeDefinition.getURI());
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ XSDElementDeclaration newResolvedElementDeclaration = this;
+ if (changedElement.hasAttributeNS(null, XSDConstants.REF_ATTRIBUTE))
+ {
+ newResolvedElementDeclaration =
+ resolveElementDeclarationURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.REF_ATTRIBUTE));
+ }
+/*
+ else if (!changedElement.hasAttributeNS(null, XSDConstants.NAME_ATTRIBUTE))
+ {
+ newResolvedElementDeclaration = resolveElementDeclaration(null, "undefined");
+ }
+*/
+ if (newResolvedElementDeclaration != getResolvedElementDeclaration())
+ {
+ setResolvedElementDeclaration(newResolvedElementDeclaration);
+ }
+
+ if (this == newResolvedElementDeclaration)
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ isTypeExplicit = true;
+ XSDTypeDefinition newTypeDefinition =
+ resolveTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.TYPE_ATTRIBUTE));
+ if (newTypeDefinition != getTypeDefinition())
+ {
+ setTypeDefinition(newTypeDefinition);
+ }
+ }
+ else if (getAnonymousTypeDefinition() != getTypeDefinition())
+ {
+ isTypeExplicit = false;
+ setTypeDefinitionGen(resolveSimpleTypeDefinition(changedElement.getNamespaceURI(), "anyType"));
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.NILLABLE_ATTRIBUTE))
+ {
+ String newNillable = changedElement.getAttributeNS(null, XSDConstants.NILLABLE_ATTRIBUTE);
+ setNillable(convertToBoolean(newNillable));
+ }
+ else
+ {
+ unsetNillable();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.ABSTRACT_ATTRIBUTE))
+ {
+ String newAbstract = changedElement.getAttributeNS(null, XSDConstants.ABSTRACT_ATTRIBUTE);
+ setAbstract(convertToBoolean(newAbstract));
+ }
+ else
+ {
+ unsetAbstract();
+ }
+
+ if (getScope() instanceof XSDSchema)
+ {
+ if (XSDForm.QUALIFIED_LITERAL != getForm())
+ {
+ setForm(XSDForm.QUALIFIED_LITERAL);
+ }
+ }
+ else
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.FORM_ATTRIBUTE))
+ {
+ XSDForm newForm = XSDForm.get(changedElement.getAttributeNS(null, XSDConstants.FORM_ATTRIBUTE));
+ if (!isSetForm() || newForm != getForm())
+ {
+ setForm(newForm);
+ }
+ }
+ else if (isSetForm())
+ {
+ unsetForm();
+ }
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE))
+ {
+ setStringLexicalFinal(changedElement.getAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE));
+ }
+ else if (isSetLexicalFinal())
+ {
+ unsetLexicalFinal();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.BLOCK_ATTRIBUTE))
+ {
+ setStringBlock(changedElement.getAttributeNS(null, XSDConstants.BLOCK_ATTRIBUTE));
+ }
+ else if (isSetBlock())
+ {
+ unsetBlock();
+ }
+
+ XSDElementDeclaration newSubstituionGroupAffiliation = null;
+ if (changedElement.hasAttributeNS(null, XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE))
+ {
+ newSubstituionGroupAffiliation =
+ resolveElementDeclarationURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE));
+ }
+
+ if (newSubstituionGroupAffiliation != getSubstitutionGroupAffiliation())
+ {
+ setSubstitutionGroupAffiliation(newSubstituionGroupAffiliation);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileNameAttribute()
+ {
+ if (!isElementDeclarationReference())
+ {
+ super.reconcileNameAttribute();
+ }
+ }
+
+ @Override
+ protected void reconcileContents(Element changedElement)
+ {
+ super.reconcileContents(changedElement);
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ if (newContents.isEmpty())
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+ else
+ {
+ XSDTypeDefinition xsdTypeDefinition = XSDTypeDefinitionImpl.createTypeDefinition(child);
+ if (xsdTypeDefinition != null)
+ {
+ newContents.add(xsdTypeDefinition);
+ }
+ else
+ {
+ XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition =
+ XSDIdentityConstraintDefinitionImpl.createIdentityConstraintDefinition(child);
+ if (xsdIdentityConstraintDefinition != null)
+ {
+ newContents.add(xsdIdentityConstraintDefinition);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_ELEMENT_DECLARATION__ANNOTATION, newContents, remainingContents);
+
+ if (!isElementDeclarationReference())
+ {
+ Element theElement = getElement();
+ XSDTypeDefinition newTypeDefinition = null;
+ XSDTypeDefinition newAnonymousTypeDefinition = null;
+ if (!newContents.isEmpty())
+ {
+ XSDConcreteComponent newComponent = newContents.get(0);
+ if (newComponent instanceof XSDTypeDefinition)
+ {
+ newTypeDefinition = newAnonymousTypeDefinition = (XSDTypeDefinition)newComponent;
+ newContents.remove(0);
+ }
+ }
+
+ if (newAnonymousTypeDefinition != getAnonymousTypeDefinition())
+ {
+ remainingContents.remove(getAnonymousTypeDefinition());
+ setAnonymousTypeDefinition(newAnonymousTypeDefinition);
+ }
+
+ for (Iterator<XSDConcreteComponent> i = newContents.iterator(); i.hasNext(); )
+ {
+ if (!(i.next() instanceof XSDIdentityConstraintDefinition))
+ {
+ i.remove();
+ }
+ }
+
+ if (!remainingContents.isEmpty())
+ {
+ getIdentityConstraintDefinitions().removeAll(remainingContents);
+ }
+
+ if (!newContents.isEmpty())
+ {
+ @SuppressWarnings("unchecked") List<XSDIdentityConstraintDefinition> list = (List<XSDIdentityConstraintDefinition>)(List<?>)newContents;
+ setListContentAndOrder(getIdentityConstraintDefinitions(), list);
+ }
+
+ if (theElement.hasAttributeNS(null, XSDConstants.TYPE_ATTRIBUTE))
+ {
+ isTypeExplicit = true;
+ newTypeDefinition = resolveTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(theElement, XSDConstants.TYPE_ATTRIBUTE));
+ }
+
+ if (newTypeDefinition != null && newTypeDefinition != getTypeDefinition())
+ {
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (!isElementDeclarationReference())
+ {
+ if (eAttribute == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__ABSTRACT)
+ {
+ EList<XSDElementDeclaration> substitutionGroup = getSubstitutionGroup();
+ Collection<XSDElementDeclaration> visited = new HashSet<XSDElementDeclaration>();
+ if (isAbstract())
+ {
+ substitutionGroup.remove(this);
+ for (XSDElementDeclaration oldSubstitutionGroupAffiliation = substitutionGroupAffiliation;
+ oldSubstitutionGroupAffiliation != null;
+ oldSubstitutionGroupAffiliation = oldSubstitutionGroupAffiliation.getSubstitutionGroupAffiliation())
+ {
+ if (visited.add(oldSubstitutionGroupAffiliation))
+ {
+ oldSubstitutionGroupAffiliation.getSubstitutionGroup().remove(this);
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ substitutionGroup.add(this);
+ for (XSDElementDeclaration newSubstitutionGroupAffiliation = substitutionGroupAffiliation;
+ newSubstitutionGroupAffiliation != null;
+ newSubstitutionGroupAffiliation = newSubstitutionGroupAffiliation.getSubstitutionGroupAffiliation())
+ {
+ if (visited.add(newSubstitutionGroupAffiliation))
+ {
+ newSubstitutionGroupAffiliation.getSubstitutionGroup().add(this);
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ if (!isReconciling)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__ABSTRACT)
+ {
+ niceSetAttribute(theElement, XSDConstants.ABSTRACT_ATTRIBUTE, isSetAbstract() ? isAbstract() ? "true" : "false" : null);
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__NILLABLE)
+ {
+ niceSetAttribute(theElement, XSDConstants.NILLABLE_ATTRIBUTE, isSetNillable() ? isNillable() ? "true" : "false" : null);
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_FEATURE__FORM)
+ {
+ if (!(getScope() instanceof XSDSchema))
+ {
+ niceSetAttribute(theElement, XSDConstants.FORM_ATTRIBUTE, isSetForm() ? getForm().getName() : null);
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__LEXICAL_FINAL)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.FINAL_ATTRIBUTE,
+ getStringLexicalFinal());
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__BLOCK)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.BLOCK_ATTRIBUTE,
+ getStringBlock());
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ }
+ }
+ if (eAttribute == XSDPackage.Literals.XSD_FEATURE__FORM)
+ {
+ patchTargetNamespaceAttribute();
+ }
+ }
+ }
+
+ @Override
+ public void eNotify(Notification msg)
+ {
+ int eventType = msg.getEventType();
+ Object feature = msg.getFeature();
+ Object oldValue = msg.getOldValue();
+ Object newValue = msg.getNewValue();
+
+ if (feature == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION)
+ {
+ switch (eventType)
+ {
+ case Notification.SET:
+ case Notification.UNSET:
+ {
+ Collection<XSDElementDeclaration> substitutionGroup = new ArrayList<XSDElementDeclaration>(getSubstitutionGroup());
+ if (!isAbstract())
+ {
+ substitutionGroup.add(this);
+ }
+
+ if (oldValue != null)
+ {
+ Collection<XSDElementDeclaration> visited = new HashSet<XSDElementDeclaration>();
+ for (XSDElementDeclaration oldSubstitutionGroupAffiliation = (XSDElementDeclaration)oldValue;
+ oldSubstitutionGroupAffiliation != null;
+ oldSubstitutionGroupAffiliation = oldSubstitutionGroupAffiliation.getSubstitutionGroupAffiliation())
+ {
+ if (visited.add(oldSubstitutionGroupAffiliation))
+ {
+ oldSubstitutionGroupAffiliation.getSubstitutionGroup().removeAll(substitutionGroup);
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ if (newValue != null)
+ {
+ Collection<XSDElementDeclaration> visited = new HashSet<XSDElementDeclaration>();
+ for (XSDElementDeclaration newSubstitutionGroupAffiliation = (XSDElementDeclaration)newValue;
+ newSubstitutionGroupAffiliation != null;
+ newSubstitutionGroupAffiliation = newSubstitutionGroupAffiliation.getSubstitutionGroupAffiliation())
+ {
+ if (visited.add(newSubstitutionGroupAffiliation))
+ {
+ newSubstitutionGroupAffiliation.getSubstitutionGroup().addAll(substitutionGroup);
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ super.eNotify(msg);
+ }
+
+ @Override
+ protected void eBasicSetContainer(InternalEObject newContainer, int newContainerFeatureID)
+ {
+ if (substitutionGroupAffiliation != null)
+ {
+ EList<XSDElementDeclaration> substitutionGroup = getSubstitutionGroup();
+ Collection<XSDElementDeclaration> visited = new HashSet<XSDElementDeclaration>();
+ if (newContainer == null)
+ {
+ for (XSDElementDeclaration oldSubstitutionGroupAffiliation = substitutionGroupAffiliation;
+ oldSubstitutionGroupAffiliation != null;
+ oldSubstitutionGroupAffiliation = oldSubstitutionGroupAffiliation.getSubstitutionGroupAffiliation())
+ {
+ if (visited.add(oldSubstitutionGroupAffiliation))
+ {
+ oldSubstitutionGroupAffiliation.getSubstitutionGroup().removeAll(substitutionGroup);
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ for (XSDElementDeclaration newSubstitutionGroupAffiliation = substitutionGroupAffiliation;
+ newSubstitutionGroupAffiliation != null;
+ newSubstitutionGroupAffiliation = newSubstitutionGroupAffiliation.getSubstitutionGroupAffiliation())
+ {
+ if (visited.add(newSubstitutionGroupAffiliation))
+ {
+ newSubstitutionGroupAffiliation.getSubstitutionGroup().addAll(substitutionGroup);
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ }
+ super.eBasicSetContainer(newContainer, newContainerFeatureID);
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (isElementDeclarationReference())
+ {
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION)
+ {
+ XSDElementDeclaration theResolvedElementDeclaration = getResolvedElementDeclaration();
+ if (theElement != null)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REF_ATTRIBUTE, theResolvedElementDeclaration.getURI());
+ }
+ if (eReference != null && getContainer() instanceof XSDParticle)
+ {
+ ((XSDParticle)getContainer()).setTerm(theResolvedElementDeclaration);
+ }
+ }
+ }
+ else
+ {
+ if (theElement != null && eReference == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REF_ATTRIBUTE, null);
+ }
+
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__TYPE_DEFINITION)
+ {
+ XSDTypeDefinition theTypeDefinition = getTypeDefinition();
+ XSDTypeDefinition theAnonymousTypeDefinition = getAnonymousTypeDefinition();
+
+ if (!isTypeExplicit ||
+ theTypeDefinition == null ||
+ theTypeDefinition == theAnonymousTypeDefinition)
+ {
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.TYPE_ATTRIBUTE, null);
+ }
+ }
+ else
+ {
+ if (theElement != null)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.TYPE_ATTRIBUTE, theTypeDefinition.getURI());
+ }
+ if (eReference != null && theAnonymousTypeDefinition != null)
+ {
+ setAnonymousTypeDefinition(null);
+ }
+ }
+ }
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION)
+ {
+ if (theElement != null)
+ {
+ XSDElementDeclaration theSubstitutionGroupAffiliation = getSubstitutionGroupAffiliation();
+ if (theSubstitutionGroupAffiliation == null)
+ {
+ niceSetAttribute(theElement, XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE, null);
+ }
+ else
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE, theSubstitutionGroupAffiliation.getURI());
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION)
+ {
+ setTypeDefinition((XSDTypeDefinition)xsdConcreteComponent);
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION)
+ {
+ if (getTypeDefinition() == xsdConcreteComponent)
+ {
+ setTypeDefinition(null);
+ }
+ }
+ }
+
+ public boolean isElementDeclarationReference()
+ {
+ return this != getResolvedElementDeclaration();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getCircular()
+ {
+ return isCircular() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ @Override
+ public String getQName()
+ {
+ XSDElementDeclaration resolvedElementDeclaration = getResolvedElementDeclaration();
+ if (resolvedElementDeclaration == this)
+ {
+ return super.getQName();
+ }
+ else
+ {
+ return resolvedElementDeclaration.getQName(this);
+ }
+ }
+
+ @Override
+ public boolean isNamedComponentReference()
+ {
+ return isElementDeclarationReference();
+ }
+
+ @Override
+ public XSDNamedComponent getResolvedNamedComponent()
+ {
+ return getResolvedElementDeclaration();
+ }
+
+ @Override
+ public boolean isFeatureReference()
+ {
+ return isElementDeclarationReference();
+ }
+
+ @Override
+ public XSDFeature getResolvedFeature()
+ {
+ return getResolvedElementDeclaration();
+ }
+
+ @Override
+ public XSDTypeDefinition getType()
+ {
+ return getTypeDefinition();
+ }
+
+ public String getStringLexicalFinal()
+ {
+ if (isSetLexicalFinal())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getLexicalFinal())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringLexicalFinal(String finalDefault)
+ {
+ if (finalDefault == null)
+ {
+ unsetLexicalFinal();
+ }
+ else
+ {
+ List<XSDProhibitedSubstitutions> newLexicalFinal = new ArrayList<XSDProhibitedSubstitutions>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(finalDefault); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+
+ XSDProhibitedSubstitutions literal = XSDProhibitedSubstitutions.get(token);
+ if (literal != null)
+ {
+ newLexicalFinal.add(literal);
+ }
+ }
+ if (!newLexicalFinal.equals(getLexicalFinal()))
+ {
+ Collection<XSDProhibitedSubstitutions> oldContents = new ArrayList<XSDProhibitedSubstitutions>(getLexicalFinal());
+ oldContents.removeAll(newLexicalFinal);
+ if (!oldContents.isEmpty())
+ {
+ getLexicalFinal().removeAll(oldContents);
+ }
+ setListContentAndOrder(getLexicalFinal(), newLexicalFinal);
+ }
+ else if (newLexicalFinal.isEmpty() && !isSetLexicalFinal())
+ {
+ getLexicalFinal().clear();
+ }
+ }
+ }
+
+ public String getStringBlock()
+ {
+ if (isSetBlock())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getBlock())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringBlock(String block)
+ {
+ if (block == null)
+ {
+ unsetBlock();
+ }
+ else
+ {
+ List<XSDDisallowedSubstitutions> newBlock = new ArrayList<XSDDisallowedSubstitutions>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(block); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+ XSDDisallowedSubstitutions literal = XSDDisallowedSubstitutions.get(token);
+ if (literal != null)
+ {
+ newBlock.add(literal);
+ }
+ }
+ if (!newBlock.equals(getBlock()))
+ {
+ Collection<XSDDisallowedSubstitutions> oldContents = new ArrayList<XSDDisallowedSubstitutions>(getBlock());
+ oldContents.removeAll(newBlock);
+ if (!oldContents.isEmpty())
+ {
+ getBlock().removeAll(oldContents);
+ }
+ setListContentAndOrder(getBlock(), newBlock);
+ }
+ else if (newBlock.isEmpty() && !isSetBlock())
+ {
+ getBlock().clear();
+ }
+ }
+ }
+
+ public String getStringDisallowedSubstitutions()
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getDisallowedSubstitutions())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(literal);
+ }
+ return result.toString();
+ }
+
+ public String getStringSubstitutionGroupExclusions()
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getSubstitutionGroupExclusions())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(literal);
+ }
+ return result.toString();
+ }
+
+ public boolean isCircular()
+ {
+ return analysisState == CIRCULAR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDTypeDefinition getAnonymousTypeDefinition()
+ {
+ return anonymousTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnonymousTypeDefinition(XSDTypeDefinition newAnonymousTypeDefinition)
+ {
+ if (newAnonymousTypeDefinition != anonymousTypeDefinition)
+ {
+ NotificationChain msgs = null;
+ if (anonymousTypeDefinition != null)
+ msgs = ((InternalEObject)anonymousTypeDefinition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION, null, msgs);
+ if (newAnonymousTypeDefinition != null)
+ msgs = ((InternalEObject)newAnonymousTypeDefinition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION, null, msgs);
+ msgs = basicSetAnonymousTypeDefinition(newAnonymousTypeDefinition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION, newAnonymousTypeDefinition, newAnonymousTypeDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnonymousTypeDefinition(XSDTypeDefinition newAnonymousTypeDefinition, NotificationChain msgs)
+ {
+ XSDTypeDefinition oldAnonymousTypeDefinition = anonymousTypeDefinition;
+ anonymousTypeDefinition = newAnonymousTypeDefinition;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION, oldAnonymousTypeDefinition, newAnonymousTypeDefinition);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDTypeDefinition getTypeDefinition()
+ {
+ return typeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypeDefinitionGen(XSDTypeDefinition newTypeDefinition)
+ {
+ XSDTypeDefinition oldTypeDefinition = typeDefinition;
+ typeDefinition = newTypeDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__TYPE_DEFINITION, oldTypeDefinition, typeDefinition));
+ }
+
+ public void setTypeDefinition(XSDTypeDefinition newTypeDefinition)
+ {
+ isTypeExplicit = newTypeDefinition != null;
+ setTypeDefinitionGen(newTypeDefinition);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDIdentityConstraintDefinition> getIdentityConstraintDefinitions()
+ {
+ if (identityConstraintDefinitions == null)
+ {
+ identityConstraintDefinitions = new EObjectContainmentEList<XSDIdentityConstraintDefinition>(XSDIdentityConstraintDefinition.class, this, XSDPackage.XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS);
+ }
+ return identityConstraintDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDElementDeclaration getResolvedElementDeclaration()
+ {
+ return resolvedElementDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setResolvedElementDeclaration(XSDElementDeclaration newResolvedElementDeclaration)
+ {
+ XSDElementDeclaration oldResolvedElementDeclaration = resolvedElementDeclaration;
+ resolvedElementDeclaration = newResolvedElementDeclaration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION, oldResolvedElementDeclaration, resolvedElementDeclaration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDElementDeclaration getSubstitutionGroupAffiliation()
+ {
+ return substitutionGroupAffiliation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSubstitutionGroupAffiliation(XSDElementDeclaration newSubstitutionGroupAffiliation)
+ {
+ XSDElementDeclaration oldSubstitutionGroupAffiliation = substitutionGroupAffiliation;
+ substitutionGroupAffiliation = newSubstitutionGroupAffiliation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION, oldSubstitutionGroupAffiliation, substitutionGroupAffiliation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDElementDeclaration> getSubstitutionGroup()
+ {
+ if (substitutionGroup == null)
+ {
+ substitutionGroup = new EObjectEList<XSDElementDeclaration>(XSDElementDeclaration.class, this, XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP);
+ }
+ return substitutionGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ return basicSetAnonymousTypeDefinition(null, msgs);
+ case XSDPackage.XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS:
+ return ((InternalEList<?>)getIdentityConstraintDefinitions()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ELEMENT_DECLARATION__NILLABLE:
+ return isNillable();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS:
+ return getDisallowedSubstitutions();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS:
+ return getSubstitutionGroupExclusions();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ABSTRACT:
+ return isAbstract();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__LEXICAL_FINAL:
+ return getLexicalFinal();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__BLOCK:
+ return getBlock();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ELEMENT_DECLARATION_REFERENCE:
+ return isElementDeclarationReference();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__CIRCULAR:
+ return isCircular();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ return getAnonymousTypeDefinition();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__TYPE_DEFINITION:
+ return getTypeDefinition();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS:
+ return getIdentityConstraintDefinitions();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION:
+ return getResolvedElementDeclaration();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION:
+ return getSubstitutionGroupAffiliation();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP:
+ return getSubstitutionGroup();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ELEMENT_DECLARATION__NILLABLE:
+ setNillable((Boolean)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS:
+ getDisallowedSubstitutions().clear();
+ getDisallowedSubstitutions().addAll((Collection<? extends XSDDisallowedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS:
+ getSubstitutionGroupExclusions().clear();
+ getSubstitutionGroupExclusions().addAll((Collection<? extends XSDSubstitutionGroupExclusions>)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ABSTRACT:
+ setAbstract((Boolean)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__LEXICAL_FINAL:
+ getLexicalFinal().clear();
+ getLexicalFinal().addAll((Collection<? extends XSDProhibitedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__BLOCK:
+ getBlock().clear();
+ getBlock().addAll((Collection<? extends XSDDisallowedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ setAnonymousTypeDefinition((XSDTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__TYPE_DEFINITION:
+ setTypeDefinition((XSDTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS:
+ getIdentityConstraintDefinitions().clear();
+ getIdentityConstraintDefinitions().addAll((Collection<? extends XSDIdentityConstraintDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION:
+ setResolvedElementDeclaration((XSDElementDeclaration)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION:
+ setSubstitutionGroupAffiliation((XSDElementDeclaration)newValue);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP:
+ getSubstitutionGroup().clear();
+ getSubstitutionGroup().addAll((Collection<? extends XSDElementDeclaration>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ELEMENT_DECLARATION__NILLABLE:
+ unsetNillable();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS:
+ getDisallowedSubstitutions().clear();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS:
+ getSubstitutionGroupExclusions().clear();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ABSTRACT:
+ unsetAbstract();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__LEXICAL_FINAL:
+ unsetLexicalFinal();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__BLOCK:
+ unsetBlock();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ setAnonymousTypeDefinition((XSDTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__TYPE_DEFINITION:
+ setTypeDefinition((XSDTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS:
+ getIdentityConstraintDefinitions().clear();
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION:
+ setResolvedElementDeclaration((XSDElementDeclaration)null);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION:
+ setSubstitutionGroupAffiliation((XSDElementDeclaration)null);
+ return;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP:
+ getSubstitutionGroup().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ELEMENT_DECLARATION__NILLABLE:
+ return isSetNillable();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS:
+ return disallowedSubstitutions != null && !disallowedSubstitutions.isEmpty();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS:
+ return substitutionGroupExclusions != null && !substitutionGroupExclusions.isEmpty();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ABSTRACT:
+ return isSetAbstract();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__LEXICAL_FINAL:
+ return isSetLexicalFinal();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__BLOCK:
+ return isSetBlock();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ELEMENT_DECLARATION_REFERENCE:
+ return isElementDeclarationReference() != ELEMENT_DECLARATION_REFERENCE_EDEFAULT;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__CIRCULAR:
+ return isCircular() != CIRCULAR_EDEFAULT;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION:
+ return anonymousTypeDefinition != null;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__TYPE_DEFINITION:
+ return typeDefinition != null;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS:
+ return identityConstraintDefinitions != null && !identityConstraintDefinitions.isEmpty();
+ case XSDPackage.XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION:
+ return resolvedElementDeclaration != null;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION:
+ return substitutionGroupAffiliation != null;
+ case XSDPackage.XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP:
+ return substitutionGroup != null && !substitutionGroup.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (nillable: ");
+ if ((eFlags & NILLABLE_ESETFLAG) != 0) result.append((eFlags & NILLABLE_EFLAG) != 0); else result.append("<unset>");
+ result.append(", disallowedSubstitutions: ");
+ result.append(disallowedSubstitutions);
+ result.append(", substitutionGroupExclusions: ");
+ result.append(substitutionGroupExclusions);
+ result.append(", abstract: ");
+ if ((eFlags & ABSTRACT_ESETFLAG) != 0) result.append((eFlags & ABSTRACT_EFLAG) != 0); else result.append("<unset>");
+ result.append(", lexicalFinal: ");
+ result.append(lexicalFinal);
+ result.append(", block: ");
+ result.append(block);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDElementDeclarationImpl clonedElementDeclaration =
+ (XSDElementDeclarationImpl)getXSDFactory().createXSDElementDeclaration();
+ clonedElementDeclaration.isReconciling = true;
+
+ if (isElementDeclarationReference())
+ {
+ XSDElementDeclaration theResolvedElementDeclaration = getResolvedElementDeclaration();
+ clonedElementDeclaration.setResolvedElementDeclaration
+ (createUnresolvedElementDeclaration
+ (theResolvedElementDeclaration.getTargetNamespace(), theResolvedElementDeclaration.getName()));
+ }
+ else
+ {
+ if (getName() != null)
+ {
+ clonedElementDeclaration.setName(getName());
+ }
+ if (isSetForm())
+ {
+ clonedElementDeclaration.setForm(getForm());
+ }
+ if (isSetConstraint())
+ {
+ clonedElementDeclaration.setConstraint(getConstraint());
+ }
+ if (getLexicalValue() != null)
+ {
+ clonedElementDeclaration.setLexicalValue(getLexicalValue());
+ }
+ if (isSetNillable())
+ {
+ clonedElementDeclaration.setNillable(isNillable());
+ }
+ if (isSetAbstract())
+ {
+ clonedElementDeclaration.setAbstract(isAbstract());
+ }
+ if (isSetBlock())
+ {
+ if (!getBlock().isEmpty())
+ {
+ clonedElementDeclaration.getBlock().addAll(getBlock());
+ }
+ else
+ {
+ clonedElementDeclaration.getBlock().clear();
+ }
+ }
+ if (isSetLexicalFinal())
+ {
+ if (!getLexicalFinal().isEmpty())
+ {
+ clonedElementDeclaration.getLexicalFinal().addAll(getLexicalFinal());
+ }
+ else
+ {
+ clonedElementDeclaration.getLexicalFinal().clear();
+ }
+ }
+
+ if (getTypeDefinition() != null && getTypeDefinition() != getAnonymousTypeDefinition())
+ {
+ XSDTypeDefinition theTypeDefinition = getTypeDefinition();
+ clonedElementDeclaration.setTypeDefinition
+ (createUnresolvedTypeDefinition
+ (theTypeDefinition.getTargetNamespace(), theTypeDefinition.getName()));
+ }
+
+ if (deep)
+ {
+ if (getAnonymousTypeDefinition() != null)
+ {
+ clonedElementDeclaration.setAnonymousTypeDefinition
+ ((XSDTypeDefinition)getAnonymousTypeDefinition().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (!getIdentityConstraintDefinitions().isEmpty())
+ {
+ clonedElementDeclaration.getIdentityConstraintDefinitions().addAll
+ (cloneConcreteComponents(getIdentityConstraintDefinitions(), true, shareDOM));
+ }
+ XSDElementDeclaration theSubstitutionGroupAffiliation = getSubstitutionGroupAffiliation();
+ if (theSubstitutionGroupAffiliation != null)
+ {
+ clonedElementDeclaration.setSubstitutionGroupAffiliation
+ (createUnresolvedElementDeclaration
+ (theSubstitutionGroupAffiliation.getTargetNamespace(), theSubstitutionGroupAffiliation.getName()));
+ }
+ }
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedElementDeclaration.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedElementDeclaration.setElement(getElement());
+ }
+
+ clonedElementDeclaration.isReconciling = shareDOM;
+ return clonedElementDeclaration;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDEnumerationFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDEnumerationFacetImpl.java
new file mode 100644
index 0000000..c5de00a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDEnumerationFacetImpl.java
@@ -0,0 +1,319 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Collection;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Enumeration Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDEnumerationFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDEnumerationFacetImpl
+ extends XSDRepeatableFacetImpl
+ implements XSDEnumerationFacet
+{
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected EList<Object> value;
+
+ public static XSDEnumerationFacet createEnumerationFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.ENUMERATION_ELEMENT)
+ {
+ XSDEnumerationFacet xsdEnumerationFacet = XSDFactory.eINSTANCE.createXSDEnumerationFacet();
+ xsdEnumerationFacet.setElement((Element)node);
+ return xsdEnumerationFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDEnumerationFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ENUMERATION_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Object> getValue()
+ {
+ if (value == null)
+ {
+ value = new EDataTypeUniqueEList<Object>(Object.class, this, XSDPackage.XSD_ENUMERATION_FACET__VALUE);
+ }
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ENUMERATION_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ENUMERATION_FACET__VALUE:
+ getValue().clear();
+ getValue().addAll((Collection<? extends Object>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ENUMERATION_FACET__VALUE:
+ getValue().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ENUMERATION_FACET__VALUE:
+ return value != null && !value.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.ENUMERATION_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ public void validateValue()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null)
+ {
+ XSDSimpleTypeDefinitionImpl.AssessmentImpl assessment =
+ (XSDSimpleTypeDefinitionImpl.AssessmentImpl)baseTypeDefinition.assess(getElement(), getLexicalValue());
+ if (!assessment.getDiagnostics().isEmpty())
+ {
+ assessment.assignDiagnostics(this, getElement(), XSDConstants.VALUE_ATTRIBUTE);
+ getDiagnostics().addAll(assessment.getDiagnostics());
+ }
+ else if (assessment.getValue() == null)
+ {
+ createRequiredAttributeDiagnostic(XSDConstants.PART2, "element-enumeration", getElement(), XSDConstants.VALUE_ATTRIBUTE);
+ }
+ }
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ String theLexicalValue = getLexicalValue();
+ Object newValue = null;
+ if (theLexicalValue != null)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null)
+ {
+ try
+ {
+ newValue = baseTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore.
+ }
+ }
+ }
+ }
+ if (!getValue().contains(newValue))
+ {
+ getValue().clear();
+ if (newValue != null)
+ {
+ getValue().add(newValue);
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ EList<Object> values = getValue();
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ for (int i = 0, size = values.size(); i < size; ++i)
+ {
+ Object object = values.get(i);
+ if (xsdSimpleTypeDefinition.equalValues(object, value))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDEnumerationFacetImpl clonedEnumerationFacet =
+ (XSDEnumerationFacetImpl)getXSDFactory().createXSDEnumerationFacet();
+ clonedEnumerationFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedEnumerationFacet.setLexicalValue(getLexicalValue());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedEnumerationFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedEnumerationFacet.setElement(getElement());
+ }
+
+ clonedEnumerationFacet.isReconciling = shareDOM;
+ return clonedEnumerationFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFacetImpl.java
new file mode 100644
index 0000000..ee9ab28
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFacetImpl.java
@@ -0,0 +1,409 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDFacetImpl#getLexicalValue <em>Lexical Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFacetImpl#getFacetName <em>Facet Name</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFacetImpl#getEffectiveValue <em>Effective Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFacetImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFacetImpl#getSimpleTypeDefinition <em>Simple Type Definition</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDFacetImpl
+ extends XSDComponentImpl
+ implements XSDFacet
+{
+ /**
+ * The default value of the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String LEXICAL_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalValue()
+ * @generated
+ * @ordered
+ */
+ protected String lexicalValue = LEXICAL_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFacetName() <em>Facet Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFacetName()
+ * @generated
+ * @ordered
+ */
+ protected static final String FACET_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getEffectiveValue() <em>Effective Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEffectiveValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object EFFECTIVE_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLexicalValue()
+ {
+ return lexicalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLexicalValue(String newLexicalValue)
+ {
+ String oldLexicalValue = lexicalValue;
+ lexicalValue = newLexicalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FACET__LEXICAL_VALUE, oldLexicalValue, lexicalValue));
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkComplexContent("annotated", XSDConstants.PART2, "element-" + getFacetName(), theElement);
+ }
+ validateValue();
+ }
+
+ protected void validateValue()
+ {
+ // Do nothing.
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.VALUE_ATTRIBUTE))
+ {
+ String newLexicalValue = changedElement.getAttributeNS(null, XSDConstants.VALUE_ATTRIBUTE);
+ if (newLexicalValue == null || !newLexicalValue.equals(getLexicalValue()))
+ {
+ setLexicalValue(newLexicalValue);
+ }
+ }
+ else if (getLexicalValue() != null)
+ {
+ setLexicalValue(null);
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ if (XSDConstants.nodeType(child) == XSDConstants.ANNOTATION_ELEMENT)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ newContents.add(xsdAnnotation);
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_FACET__ANNOTATION, newContents, remainingContents);
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ niceSetAttribute(theElement, XSDConstants.VALUE_ATTRIBUTE, getLexicalValue());
+ }
+ }
+ }
+
+ public String getFacetName()
+ {
+ String name = eClass().getName();
+ return Character.toLowerCase(name.charAt(3)) + name.substring(4, name.length() - 5);
+ }
+
+ public Object getEffectiveValue()
+ {
+ return null;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_FACET__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_FACET__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FACET__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FACET__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public XSDSimpleTypeDefinition getSimpleTypeDefinition()
+ {
+ XSDConcreteComponent result = getContainer();
+ return result instanceof XSDSimpleTypeDefinition ? (XSDSimpleTypeDefinition)result : null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FACET__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FACET__LEXICAL_VALUE:
+ return getLexicalValue();
+ case XSDPackage.XSD_FACET__FACET_NAME:
+ return getFacetName();
+ case XSDPackage.XSD_FACET__EFFECTIVE_VALUE:
+ return getEffectiveValue();
+ case XSDPackage.XSD_FACET__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_FACET__SIMPLE_TYPE_DEFINITION:
+ return getSimpleTypeDefinition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FACET__LEXICAL_VALUE:
+ setLexicalValue((String)newValue);
+ return;
+ case XSDPackage.XSD_FACET__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FACET__LEXICAL_VALUE:
+ setLexicalValue(LEXICAL_VALUE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_FACET__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FACET__LEXICAL_VALUE:
+ return LEXICAL_VALUE_EDEFAULT == null ? lexicalValue != null : !LEXICAL_VALUE_EDEFAULT.equals(lexicalValue);
+ case XSDPackage.XSD_FACET__FACET_NAME:
+ return FACET_NAME_EDEFAULT == null ? getFacetName() != null : !FACET_NAME_EDEFAULT.equals(getFacetName());
+ case XSDPackage.XSD_FACET__EFFECTIVE_VALUE:
+ return EFFECTIVE_VALUE_EDEFAULT == null ? getEffectiveValue() != null : !EFFECTIVE_VALUE_EDEFAULT.equals(getEffectiveValue());
+ case XSDPackage.XSD_FACET__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_FACET__SIMPLE_TYPE_DEFINITION:
+ return getSimpleTypeDefinition() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (lexicalValue: ");
+ result.append(lexicalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFactoryImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFactoryImpl.java
new file mode 100644
index 0000000..d3d7bde
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFactoryImpl.java
@@ -0,0 +1,1200 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.xsd.*;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSDFactoryImpl extends EFactoryImpl implements XSDFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static XSDFactory init()
+ {
+ try
+ {
+ XSDFactory theXSDFactory = (XSDFactory)EPackage.Registry.INSTANCE.getEFactory(XSDPackage.eNS_URI);
+ if (theXSDFactory != null)
+ {
+ return theXSDFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new XSDFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case XSDPackage.XSD_ANNOTATION: return createXSDAnnotation();
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION: return createXSDAttributeDeclaration();
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION: return createXSDAttributeGroupDefinition();
+ case XSDPackage.XSD_ATTRIBUTE_USE: return createXSDAttributeUse();
+ case XSDPackage.XSD_BOUNDED_FACET: return createXSDBoundedFacet();
+ case XSDPackage.XSD_CARDINALITY_FACET: return createXSDCardinalityFacet();
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION: return createXSDComplexTypeDefinition();
+ case XSDPackage.XSD_DIAGNOSTIC: return createXSDDiagnostic();
+ case XSDPackage.XSD_ELEMENT_DECLARATION: return createXSDElementDeclaration();
+ case XSDPackage.XSD_ENUMERATION_FACET: return createXSDEnumerationFacet();
+ case XSDPackage.XSD_FRACTION_DIGITS_FACET: return createXSDFractionDigitsFacet();
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION: return createXSDIdentityConstraintDefinition();
+ case XSDPackage.XSD_IMPORT: return createXSDImport();
+ case XSDPackage.XSD_INCLUDE: return createXSDInclude();
+ case XSDPackage.XSD_LENGTH_FACET: return createXSDLengthFacet();
+ case XSDPackage.XSD_MAX_EXCLUSIVE_FACET: return createXSDMaxExclusiveFacet();
+ case XSDPackage.XSD_MAX_INCLUSIVE_FACET: return createXSDMaxInclusiveFacet();
+ case XSDPackage.XSD_MAX_LENGTH_FACET: return createXSDMaxLengthFacet();
+ case XSDPackage.XSD_MIN_EXCLUSIVE_FACET: return createXSDMinExclusiveFacet();
+ case XSDPackage.XSD_MIN_INCLUSIVE_FACET: return createXSDMinInclusiveFacet();
+ case XSDPackage.XSD_MIN_LENGTH_FACET: return createXSDMinLengthFacet();
+ case XSDPackage.XSD_MODEL_GROUP: return createXSDModelGroup();
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION: return createXSDModelGroupDefinition();
+ case XSDPackage.XSD_NOTATION_DECLARATION: return createXSDNotationDeclaration();
+ case XSDPackage.XSD_NUMERIC_FACET: return createXSDNumericFacet();
+ case XSDPackage.XSD_ORDERED_FACET: return createXSDOrderedFacet();
+ case XSDPackage.XSD_PARTICLE: return createXSDParticle();
+ case XSDPackage.XSD_PATTERN_FACET: return createXSDPatternFacet();
+ case XSDPackage.XSD_REDEFINE: return createXSDRedefine();
+ case XSDPackage.XSD_SCHEMA: return createXSDSchema();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION: return createXSDSimpleTypeDefinition();
+ case XSDPackage.XSD_TOTAL_DIGITS_FACET: return createXSDTotalDigitsFacet();
+ case XSDPackage.XSD_WHITE_SPACE_FACET: return createXSDWhiteSpaceFacet();
+ case XSDPackage.XSD_WILDCARD: return createXSDWildcard();
+ case XSDPackage.XSD_XPATH_DEFINITION: return createXSDXPathDefinition();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE_CATEGORY:
+ return createXSDAttributeUseCategoryFromString(eDataType, initialValue);
+ case XSDPackage.XSD_CARDINALITY:
+ return createXSDCardinalityFromString(eDataType, initialValue);
+ case XSDPackage.XSD_COMPLEX_FINAL:
+ return createXSDComplexFinalFromString(eDataType, initialValue);
+ case XSDPackage.XSD_COMPOSITOR:
+ return createXSDCompositorFromString(eDataType, initialValue);
+ case XSDPackage.XSD_CONSTRAINT:
+ return createXSDConstraintFromString(eDataType, initialValue);
+ case XSDPackage.XSD_CONTENT_TYPE_CATEGORY:
+ return createXSDContentTypeCategoryFromString(eDataType, initialValue);
+ case XSDPackage.XSD_DERIVATION_METHOD:
+ return createXSDDerivationMethodFromString(eDataType, initialValue);
+ case XSDPackage.XSD_DIAGNOSTIC_SEVERITY:
+ return createXSDDiagnosticSeverityFromString(eDataType, initialValue);
+ case XSDPackage.XSD_DISALLOWED_SUBSTITUTIONS:
+ return createXSDDisallowedSubstitutionsFromString(eDataType, initialValue);
+ case XSDPackage.XSD_FORM:
+ return createXSDFormFromString(eDataType, initialValue);
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_CATEGORY:
+ return createXSDIdentityConstraintCategoryFromString(eDataType, initialValue);
+ case XSDPackage.XSD_NAMESPACE_CONSTRAINT_CATEGORY:
+ return createXSDNamespaceConstraintCategoryFromString(eDataType, initialValue);
+ case XSDPackage.XSD_ORDERED:
+ return createXSDOrderedFromString(eDataType, initialValue);
+ case XSDPackage.XSD_PROCESS_CONTENTS:
+ return createXSDProcessContentsFromString(eDataType, initialValue);
+ case XSDPackage.XSD_PROHIBITED_SUBSTITUTIONS:
+ return createXSDProhibitedSubstitutionsFromString(eDataType, initialValue);
+ case XSDPackage.XSD_SIMPLE_FINAL:
+ return createXSDSimpleFinalFromString(eDataType, initialValue);
+ case XSDPackage.XSD_SUBSTITUTION_GROUP_EXCLUSIONS:
+ return createXSDSubstitutionGroupExclusionsFromString(eDataType, initialValue);
+ case XSDPackage.XSD_VARIETY:
+ return createXSDVarietyFromString(eDataType, initialValue);
+ case XSDPackage.XSD_WHITE_SPACE:
+ return createXSDWhiteSpaceFromString(eDataType, initialValue);
+ case XSDPackage.XSD_XPATH_VARIETY:
+ return createXSDXPathVarietyFromString(eDataType, initialValue);
+ case XSDPackage.DOM_ATTR:
+ return createDOMAttrFromString(eDataType, initialValue);
+ case XSDPackage.DOM_DOCUMENT:
+ return createDOMDocumentFromString(eDataType, initialValue);
+ case XSDPackage.DOM_ELEMENT:
+ return createDOMElementFromString(eDataType, initialValue);
+ case XSDPackage.DOM_NODE:
+ return createDOMNodeFromString(eDataType, initialValue);
+ case XSDPackage.VALUE:
+ return createValueFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case XSDPackage.XSD_ATTRIBUTE_USE_CATEGORY:
+ return convertXSDAttributeUseCategoryToString(eDataType, instanceValue);
+ case XSDPackage.XSD_CARDINALITY:
+ return convertXSDCardinalityToString(eDataType, instanceValue);
+ case XSDPackage.XSD_COMPLEX_FINAL:
+ return convertXSDComplexFinalToString(eDataType, instanceValue);
+ case XSDPackage.XSD_COMPOSITOR:
+ return convertXSDCompositorToString(eDataType, instanceValue);
+ case XSDPackage.XSD_CONSTRAINT:
+ return convertXSDConstraintToString(eDataType, instanceValue);
+ case XSDPackage.XSD_CONTENT_TYPE_CATEGORY:
+ return convertXSDContentTypeCategoryToString(eDataType, instanceValue);
+ case XSDPackage.XSD_DERIVATION_METHOD:
+ return convertXSDDerivationMethodToString(eDataType, instanceValue);
+ case XSDPackage.XSD_DIAGNOSTIC_SEVERITY:
+ return convertXSDDiagnosticSeverityToString(eDataType, instanceValue);
+ case XSDPackage.XSD_DISALLOWED_SUBSTITUTIONS:
+ return convertXSDDisallowedSubstitutionsToString(eDataType, instanceValue);
+ case XSDPackage.XSD_FORM:
+ return convertXSDFormToString(eDataType, instanceValue);
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_CATEGORY:
+ return convertXSDIdentityConstraintCategoryToString(eDataType, instanceValue);
+ case XSDPackage.XSD_NAMESPACE_CONSTRAINT_CATEGORY:
+ return convertXSDNamespaceConstraintCategoryToString(eDataType, instanceValue);
+ case XSDPackage.XSD_ORDERED:
+ return convertXSDOrderedToString(eDataType, instanceValue);
+ case XSDPackage.XSD_PROCESS_CONTENTS:
+ return convertXSDProcessContentsToString(eDataType, instanceValue);
+ case XSDPackage.XSD_PROHIBITED_SUBSTITUTIONS:
+ return convertXSDProhibitedSubstitutionsToString(eDataType, instanceValue);
+ case XSDPackage.XSD_SIMPLE_FINAL:
+ return convertXSDSimpleFinalToString(eDataType, instanceValue);
+ case XSDPackage.XSD_SUBSTITUTION_GROUP_EXCLUSIONS:
+ return convertXSDSubstitutionGroupExclusionsToString(eDataType, instanceValue);
+ case XSDPackage.XSD_VARIETY:
+ return convertXSDVarietyToString(eDataType, instanceValue);
+ case XSDPackage.XSD_WHITE_SPACE:
+ return convertXSDWhiteSpaceToString(eDataType, instanceValue);
+ case XSDPackage.XSD_XPATH_VARIETY:
+ return convertXSDXPathVarietyToString(eDataType, instanceValue);
+ case XSDPackage.DOM_ATTR:
+ return convertDOMAttrToString(eDataType, instanceValue);
+ case XSDPackage.DOM_DOCUMENT:
+ return convertDOMDocumentToString(eDataType, instanceValue);
+ case XSDPackage.DOM_ELEMENT:
+ return convertDOMElementToString(eDataType, instanceValue);
+ case XSDPackage.DOM_NODE:
+ return convertDOMNodeToString(eDataType, instanceValue);
+ case XSDPackage.VALUE:
+ return convertValueToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation createXSDAnnotation()
+ {
+ XSDAnnotationImpl xsdAnnotation = new XSDAnnotationImpl();
+ return xsdAnnotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeDeclaration createXSDAttributeDeclaration()
+ {
+ XSDAttributeDeclarationImpl xsdAttributeDeclaration = new XSDAttributeDeclarationImpl();
+ return xsdAttributeDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeGroupDefinition createXSDAttributeGroupDefinition()
+ {
+ XSDAttributeGroupDefinitionImpl xsdAttributeGroupDefinition = new XSDAttributeGroupDefinitionImpl();
+ return xsdAttributeGroupDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeUse createXSDAttributeUse()
+ {
+ XSDAttributeUseImpl xsdAttributeUse = new XSDAttributeUseImpl();
+ return xsdAttributeUse;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDBoundedFacet createXSDBoundedFacet()
+ {
+ XSDBoundedFacetImpl xsdBoundedFacet = new XSDBoundedFacetImpl();
+ return xsdBoundedFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDCardinalityFacet createXSDCardinalityFacet()
+ {
+ XSDCardinalityFacetImpl xsdCardinalityFacet = new XSDCardinalityFacetImpl();
+ return xsdCardinalityFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDComplexTypeDefinition createXSDComplexTypeDefinition()
+ {
+ XSDComplexTypeDefinitionImpl xsdComplexTypeDefinition = new XSDComplexTypeDefinitionImpl();
+ return xsdComplexTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDDiagnostic createXSDDiagnostic()
+ {
+ XSDDiagnosticImpl xsdDiagnostic = new XSDDiagnosticImpl();
+ return xsdDiagnostic;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDElementDeclaration createXSDElementDeclaration()
+ {
+ XSDElementDeclarationImpl xsdElementDeclaration = new XSDElementDeclarationImpl();
+ return xsdElementDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDEnumerationFacet createXSDEnumerationFacet()
+ {
+ XSDEnumerationFacetImpl xsdEnumerationFacet = new XSDEnumerationFacetImpl();
+ return xsdEnumerationFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDFractionDigitsFacet createXSDFractionDigitsFacet()
+ {
+ XSDFractionDigitsFacetImpl xsdFractionDigitsFacet = new XSDFractionDigitsFacetImpl();
+ return xsdFractionDigitsFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDIdentityConstraintDefinition createXSDIdentityConstraintDefinition()
+ {
+ XSDIdentityConstraintDefinitionImpl xsdIdentityConstraintDefinition = new XSDIdentityConstraintDefinitionImpl();
+ return xsdIdentityConstraintDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDImport createXSDImport()
+ {
+ XSDImportImpl xsdImport = new XSDImportImpl();
+ return xsdImport;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDInclude createXSDInclude()
+ {
+ XSDIncludeImpl xsdInclude = new XSDIncludeImpl();
+ return xsdInclude;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDLengthFacet createXSDLengthFacet()
+ {
+ XSDLengthFacetImpl xsdLengthFacet = new XSDLengthFacetImpl();
+ return xsdLengthFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMaxExclusiveFacet createXSDMaxExclusiveFacet()
+ {
+ XSDMaxExclusiveFacetImpl xsdMaxExclusiveFacet = new XSDMaxExclusiveFacetImpl();
+ return xsdMaxExclusiveFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMaxInclusiveFacet createXSDMaxInclusiveFacet()
+ {
+ XSDMaxInclusiveFacetImpl xsdMaxInclusiveFacet = new XSDMaxInclusiveFacetImpl();
+ return xsdMaxInclusiveFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMaxLengthFacet createXSDMaxLengthFacet()
+ {
+ XSDMaxLengthFacetImpl xsdMaxLengthFacet = new XSDMaxLengthFacetImpl();
+ return xsdMaxLengthFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMinExclusiveFacet createXSDMinExclusiveFacet()
+ {
+ XSDMinExclusiveFacetImpl xsdMinExclusiveFacet = new XSDMinExclusiveFacetImpl();
+ return xsdMinExclusiveFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMinInclusiveFacet createXSDMinInclusiveFacet()
+ {
+ XSDMinInclusiveFacetImpl xsdMinInclusiveFacet = new XSDMinInclusiveFacetImpl();
+ return xsdMinInclusiveFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMinLengthFacet createXSDMinLengthFacet()
+ {
+ XSDMinLengthFacetImpl xsdMinLengthFacet = new XSDMinLengthFacetImpl();
+ return xsdMinLengthFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDModelGroup createXSDModelGroup()
+ {
+ XSDModelGroupImpl xsdModelGroup = new XSDModelGroupImpl();
+ return xsdModelGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDModelGroupDefinition createXSDModelGroupDefinition()
+ {
+ XSDModelGroupDefinitionImpl xsdModelGroupDefinition = new XSDModelGroupDefinitionImpl();
+ return xsdModelGroupDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDNotationDeclaration createXSDNotationDeclaration()
+ {
+ XSDNotationDeclarationImpl xsdNotationDeclaration = new XSDNotationDeclarationImpl();
+ return xsdNotationDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDNumericFacet createXSDNumericFacet()
+ {
+ XSDNumericFacetImpl xsdNumericFacet = new XSDNumericFacetImpl();
+ return xsdNumericFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDOrderedFacet createXSDOrderedFacet()
+ {
+ XSDOrderedFacetImpl xsdOrderedFacet = new XSDOrderedFacetImpl();
+ return xsdOrderedFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDParticle createXSDParticle()
+ {
+ XSDParticleImpl xsdParticle = new XSDParticleImpl();
+ return xsdParticle;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDPatternFacet createXSDPatternFacet()
+ {
+ XSDPatternFacetImpl xsdPatternFacet = new XSDPatternFacetImpl();
+ return xsdPatternFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDRedefine createXSDRedefine()
+ {
+ XSDRedefineImpl xsdRedefine = new XSDRedefineImpl();
+ return xsdRedefine;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSchema createXSDSchema()
+ {
+ XSDSchemaImpl xsdSchema = new XSDSchemaImpl();
+ return xsdSchema;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleTypeDefinition createXSDSimpleTypeDefinition()
+ {
+ XSDSimpleTypeDefinitionImpl xsdSimpleTypeDefinition = new XSDSimpleTypeDefinitionImpl();
+ return xsdSimpleTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDTotalDigitsFacet createXSDTotalDigitsFacet()
+ {
+ XSDTotalDigitsFacetImpl xsdTotalDigitsFacet = new XSDTotalDigitsFacetImpl();
+ return xsdTotalDigitsFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWhiteSpaceFacet createXSDWhiteSpaceFacet()
+ {
+ XSDWhiteSpaceFacetImpl xsdWhiteSpaceFacet = new XSDWhiteSpaceFacetImpl();
+ return xsdWhiteSpaceFacet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWildcard createXSDWildcard()
+ {
+ XSDWildcardImpl xsdWildcard = new XSDWildcardImpl();
+ return xsdWildcard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDXPathDefinition createXSDXPathDefinition()
+ {
+ XSDXPathDefinitionImpl xsdxPathDefinition = new XSDXPathDefinitionImpl();
+ return xsdxPathDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAttributeUseCategory createXSDAttributeUseCategoryFromString(EDataType eDataType, String initialValue)
+ {
+ XSDAttributeUseCategory result = XSDAttributeUseCategory.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDAttributeUseCategoryToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDCardinality createXSDCardinalityFromString(EDataType eDataType, String initialValue)
+ {
+ XSDCardinality result = XSDCardinality.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDCardinalityToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDComplexFinal createXSDComplexFinalFromString(EDataType eDataType, String initialValue)
+ {
+ XSDComplexFinal result = XSDComplexFinal.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDComplexFinalToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDCompositor createXSDCompositorFromString(EDataType eDataType, String initialValue)
+ {
+ XSDCompositor result = XSDCompositor.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDCompositorToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDConstraint createXSDConstraintFromString(EDataType eDataType, String initialValue)
+ {
+ XSDConstraint result = XSDConstraint.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDConstraintToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDContentTypeCategory createXSDContentTypeCategoryFromString(EDataType eDataType, String initialValue)
+ {
+ XSDContentTypeCategory result = XSDContentTypeCategory.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDContentTypeCategoryToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDDerivationMethod createXSDDerivationMethodFromString(EDataType eDataType, String initialValue)
+ {
+ XSDDerivationMethod result = XSDDerivationMethod.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDDerivationMethodToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDDiagnosticSeverity createXSDDiagnosticSeverityFromString(EDataType eDataType, String initialValue)
+ {
+ XSDDiagnosticSeverity result = XSDDiagnosticSeverity.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDDiagnosticSeverityToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDDisallowedSubstitutions createXSDDisallowedSubstitutionsFromString(EDataType eDataType, String initialValue)
+ {
+ XSDDisallowedSubstitutions result = XSDDisallowedSubstitutions.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDDisallowedSubstitutionsToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDForm createXSDFormFromString(EDataType eDataType, String initialValue)
+ {
+ XSDForm result = XSDForm.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDFormToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDIdentityConstraintCategory createXSDIdentityConstraintCategoryFromString(EDataType eDataType, String initialValue)
+ {
+ XSDIdentityConstraintCategory result = XSDIdentityConstraintCategory.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDIdentityConstraintCategoryToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDNamespaceConstraintCategory createXSDNamespaceConstraintCategoryFromString(EDataType eDataType, String initialValue)
+ {
+ XSDNamespaceConstraintCategory result = XSDNamespaceConstraintCategory.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDNamespaceConstraintCategoryToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDOrdered createXSDOrderedFromString(EDataType eDataType, String initialValue)
+ {
+ XSDOrdered result = XSDOrdered.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDOrderedToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDProcessContents createXSDProcessContentsFromString(EDataType eDataType, String initialValue)
+ {
+ XSDProcessContents result = XSDProcessContents.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDProcessContentsToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDProhibitedSubstitutions createXSDProhibitedSubstitutionsFromString(EDataType eDataType, String initialValue)
+ {
+ XSDProhibitedSubstitutions result = XSDProhibitedSubstitutions.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDProhibitedSubstitutionsToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleFinal createXSDSimpleFinalFromString(EDataType eDataType, String initialValue)
+ {
+ XSDSimpleFinal result = XSDSimpleFinal.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDSimpleFinalToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSubstitutionGroupExclusions createXSDSubstitutionGroupExclusionsFromString(EDataType eDataType, String initialValue)
+ {
+ XSDSubstitutionGroupExclusions result = XSDSubstitutionGroupExclusions.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDSubstitutionGroupExclusionsToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDVariety createXSDVarietyFromString(EDataType eDataType, String initialValue)
+ {
+ XSDVariety result = XSDVariety.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDVarietyToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWhiteSpace createXSDWhiteSpaceFromString(EDataType eDataType, String initialValue)
+ {
+ XSDWhiteSpace result = XSDWhiteSpace.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDWhiteSpaceToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDXPathVariety createXSDXPathVarietyFromString(EDataType eDataType, String initialValue)
+ {
+ XSDXPathVariety result = XSDXPathVariety.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertXSDXPathVarietyToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Attr createDOMAttrFromString(EDataType eDataType, String initialValue)
+ {
+ return (Attr)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public String convertDOMAttrToString(EDataType eDataType, Object instanceValue)
+ {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Document createDOMDocumentFromString(EDataType eDataType, String initialValue)
+ {
+ return (Document)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public String convertDOMDocumentToString(EDataType eDataType, Object instanceValue)
+ {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Element createDOMElementFromString(EDataType eDataType, String initialValue)
+ {
+ return (Element)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public String convertDOMElementToString(EDataType eDataType, Object instanceValue)
+ {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Node createDOMNodeFromString(EDataType eDataType, String initialValue)
+ {
+ return (Node)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public String convertDOMNodeToString(EDataType eDataType, Object instanceValue)
+ {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Object createValueFromString(EDataType eDataType, String initialValue)
+ {
+ return super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public String convertValueToString(EDataType eDataType, Object instanceValue)
+ {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDPackage getXSDPackage()
+ {
+ return (XSDPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static XSDPackage getPackage()
+ {
+ return XSDPackage.eINSTANCE;
+ }
+
+} //XSDFactoryImpl
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFeatureImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFeatureImpl.java
new file mode 100644
index 0000000..9c8ea39
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFeatureImpl.java
@@ -0,0 +1,749 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDScope;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getConstraint <em>Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getForm <em>Form</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getLexicalValue <em>Lexical Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#isGlobal <em>Global</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#isFeatureReference <em>Feature Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getScope <em>Scope</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getResolvedFeature <em>Resolved Feature</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDFeatureImpl#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDFeatureImpl
+ extends XSDNamedComponentImpl
+ implements XSDFeature
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected Object value = VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConstraint()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDConstraint CONSTRAINT_EDEFAULT = XSDConstraint.DEFAULT_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_EFLAG_DEFAULT = CONSTRAINT_EDEFAULT.ordinal() << CONSTRAINT_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDConstraint Constraint}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDConstraint[] CONSTRAINT_EFLAG_VALUES = XSDConstraint.values();
+
+ /**
+ * The flag representing the value of the '{@link #getConstraint() <em>Constraint</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConstraint()
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_EFLAG = 1 << CONSTRAINT_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Constraint attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int CONSTRAINT_ESETFLAG = 1 << 9;
+
+ /**
+ * The default value of the '{@link #getForm() <em>Form</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getForm()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDForm FORM_EDEFAULT = XSDForm.QUALIFIED_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getForm() <em>Form</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int FORM_EFLAG_OFFSET = 10;
+
+ /**
+ * The flags representing the default value of the '{@link #getForm() <em>Form</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int FORM_EFLAG_DEFAULT = FORM_EDEFAULT.ordinal() << FORM_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDForm Form}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDForm[] FORM_EFLAG_VALUES = XSDForm.values();
+
+ /**
+ * The flag representing the value of the '{@link #getForm() <em>Form</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getForm()
+ * @generated
+ * @ordered
+ */
+ protected static final int FORM_EFLAG = 1 << FORM_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Form attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int FORM_ESETFLAG = 1 << 11;
+
+ /**
+ * The default value of the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String LEXICAL_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLexicalValue() <em>Lexical Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalValue()
+ * @generated
+ * @ordered
+ */
+ protected String lexicalValue = LEXICAL_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isGlobal() <em>Global</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isGlobal()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean GLOBAL_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #isFeatureReference() <em>Feature Reference</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isFeatureReference()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean FEATURE_REFERENCE_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDFeatureImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_FEATURE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(Object newValue)
+ {
+ Object oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FEATURE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDConstraint getConstraint()
+ {
+ return CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConstraint(XSDConstraint newConstraint)
+ {
+ XSDConstraint oldConstraint = CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET];
+ if (newConstraint == null) newConstraint = CONSTRAINT_EDEFAULT;
+ eFlags = eFlags & ~CONSTRAINT_EFLAG | newConstraint.ordinal() << CONSTRAINT_EFLAG_OFFSET;
+ boolean oldConstraintESet = (eFlags & CONSTRAINT_ESETFLAG) != 0;
+ eFlags |= CONSTRAINT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FEATURE__CONSTRAINT, oldConstraint, newConstraint, !oldConstraintESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetConstraint()
+ {
+ XSDConstraint oldConstraint = CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET];
+ boolean oldConstraintESet = (eFlags & CONSTRAINT_ESETFLAG) != 0;
+ eFlags = eFlags & ~CONSTRAINT_EFLAG | CONSTRAINT_EFLAG_DEFAULT;
+ eFlags &= ~CONSTRAINT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_FEATURE__CONSTRAINT, oldConstraint, CONSTRAINT_EDEFAULT, oldConstraintESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetConstraint()
+ {
+ return (eFlags & CONSTRAINT_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDForm getForm()
+ {
+ return FORM_EFLAG_VALUES[(eFlags & FORM_EFLAG) >>> FORM_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setForm(XSDForm newForm)
+ {
+ XSDForm oldForm = FORM_EFLAG_VALUES[(eFlags & FORM_EFLAG) >>> FORM_EFLAG_OFFSET];
+ if (newForm == null) newForm = FORM_EDEFAULT;
+ eFlags = eFlags & ~FORM_EFLAG | newForm.ordinal() << FORM_EFLAG_OFFSET;
+ boolean oldFormESet = (eFlags & FORM_ESETFLAG) != 0;
+ eFlags |= FORM_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FEATURE__FORM, oldForm, newForm, !oldFormESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetForm()
+ {
+ XSDForm oldForm = FORM_EFLAG_VALUES[(eFlags & FORM_EFLAG) >>> FORM_EFLAG_OFFSET];
+ boolean oldFormESet = (eFlags & FORM_ESETFLAG) != 0;
+ eFlags = eFlags & ~FORM_EFLAG | FORM_EFLAG_DEFAULT;
+ eFlags &= ~FORM_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_FEATURE__FORM, oldForm, FORM_EDEFAULT, oldFormESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetForm()
+ {
+ return (eFlags & FORM_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLexicalValue()
+ {
+ return lexicalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLexicalValue(String newLexicalValue)
+ {
+ String oldLexicalValue = lexicalValue;
+ lexicalValue = newLexicalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FEATURE__LEXICAL_VALUE, oldLexicalValue, lexicalValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getGlobal()
+ {
+ return isGlobal() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ Object newValue = null;
+ if (!isFeatureReference())
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getType().getSimpleType();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ String theLexicalValue = getLexicalValue();
+ if (theLexicalValue != null)
+ {
+ try
+ {
+ newValue = xsdSimpleTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore
+ }
+ }
+ }
+ }
+
+ if (newValue == null ? getValue() != null : !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+
+ return true;
+ }
+
+ @Override
+ protected boolean isUpdatingDOM()
+ {
+ return
+ super.isUpdatingDOM() ||
+ getContainer() instanceof XSDConcreteComponentImpl &&
+ ((XSDConcreteComponentImpl)getContainer()).isUpdatingDOM();
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ if (XSDConstants.nodeType(changedElement) != XSDConstants.ATTRIBUTE_ELEMENT ||
+ changedElement.getParentNode() == null ||
+ XSDConstants.nodeType(changedElement.getParentNode()) == XSDConstants.SCHEMA_ELEMENT)
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ String newLexicalValue = changedElement.getAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE);
+ if (newLexicalValue == null || !newLexicalValue.equals(getLexicalValue()))
+ {
+ setLexicalValue(newLexicalValue);
+ }
+ if (!isSetConstraint() || XSDConstraint.FIXED_LITERAL != getConstraint())
+ {
+ setConstraint(XSDConstraint.FIXED_LITERAL);
+ }
+ }
+ else if (changedElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ String newLexicalValue = changedElement.getAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE);
+ if (newLexicalValue == null || !newLexicalValue.equals(getLexicalValue()))
+ {
+ setLexicalValue(newLexicalValue);
+ }
+ if (!isSetConstraint() || XSDConstraint.DEFAULT_LITERAL != getConstraint())
+ {
+ setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ }
+ }
+ else if (getLexicalValue() != null)
+ {
+ unsetConstraint();
+ setLexicalValue(null);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (!isFeatureReference() && !isReconciling)
+ {
+ if (eAttribute == null ||
+ eAttribute == XSDPackage.Literals.XSD_FEATURE__LEXICAL_VALUE ||
+ eAttribute == XSDPackage.Literals.XSD_FEATURE__CONSTRAINT)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (getLexicalValue() != null)
+ {
+ switch (getConstraint().getValue())
+ {
+ case XSDConstraint.FIXED:
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, getLexicalValue());
+ if (theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.DEFAULT_ATTRIBUTE, null);
+ }
+ break;
+ }
+ case XSDConstraint.DEFAULT:
+ {
+ niceSetAttribute(theElement, XSDConstants.DEFAULT_ATTRIBUTE, getLexicalValue());
+ if (theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, null);
+ }
+ break;
+ }
+ }
+ }
+ else if (!(getContainer() instanceof XSDAttributeUse))
+ {
+ if (theElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, null);
+ }
+ if (theElement.hasAttributeNS(null, XSDConstants.DEFAULT_ATTRIBUTE))
+ {
+ niceSetAttribute(theElement, XSDConstants.DEFAULT_ATTRIBUTE, null);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public XSDScope getScope()
+ {
+ for (XSDConcreteComponent container = getContainer(); container != null; container = container.getContainer())
+ {
+ if (container instanceof XSDScope)
+ {
+ return (XSDScope)container;
+ }
+ else if (container instanceof XSDModelGroupDefinition || container instanceof XSDAttributeGroupDefinition)
+ {
+ return null;
+ }
+ }
+
+ return null;
+ }
+
+ public boolean isFeatureReference()
+ {
+ return isNamedComponentReference();
+ }
+
+ public XSDFeature getResolvedFeature()
+ {
+ return (XSDFeature)getResolvedNamedComponent();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(", constraint: ");
+ if ((eFlags & CONSTRAINT_ESETFLAG) != 0) result.append(CONSTRAINT_EFLAG_VALUES[(eFlags & CONSTRAINT_EFLAG) >>> CONSTRAINT_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", form: ");
+ if ((eFlags & FORM_ESETFLAG) != 0) result.append(FORM_EFLAG_VALUES[(eFlags & FORM_EFLAG) >>> FORM_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", lexicalValue: ");
+ result.append(lexicalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ public boolean isGlobal()
+ {
+ for (XSDConcreteComponent container = getContainer(); container != null; container = container.getContainer())
+ {
+ if (container instanceof XSDScope)
+ {
+ return container instanceof XSDSchema;
+ }
+ else if (container instanceof XSDModelGroupDefinition || container instanceof XSDAttributeGroupDefinition)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getFeatureReference()
+ {
+ return isFeatureReference() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public XSDTypeDefinition getType()
+ {
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FEATURE__VALUE:
+ return getValue();
+ case XSDPackage.XSD_FEATURE__CONSTRAINT:
+ return getConstraint();
+ case XSDPackage.XSD_FEATURE__FORM:
+ return getForm();
+ case XSDPackage.XSD_FEATURE__LEXICAL_VALUE:
+ return getLexicalValue();
+ case XSDPackage.XSD_FEATURE__GLOBAL:
+ return isGlobal();
+ case XSDPackage.XSD_FEATURE__FEATURE_REFERENCE:
+ return isFeatureReference();
+ case XSDPackage.XSD_FEATURE__SCOPE:
+ return getScope();
+ case XSDPackage.XSD_FEATURE__RESOLVED_FEATURE:
+ return getResolvedFeature();
+ case XSDPackage.XSD_FEATURE__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FEATURE__VALUE:
+ setValue(newValue);
+ return;
+ case XSDPackage.XSD_FEATURE__CONSTRAINT:
+ setConstraint((XSDConstraint)newValue);
+ return;
+ case XSDPackage.XSD_FEATURE__FORM:
+ setForm((XSDForm)newValue);
+ return;
+ case XSDPackage.XSD_FEATURE__LEXICAL_VALUE:
+ setLexicalValue((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FEATURE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_FEATURE__CONSTRAINT:
+ unsetConstraint();
+ return;
+ case XSDPackage.XSD_FEATURE__FORM:
+ unsetForm();
+ return;
+ case XSDPackage.XSD_FEATURE__LEXICAL_VALUE:
+ setLexicalValue(LEXICAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FEATURE__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case XSDPackage.XSD_FEATURE__CONSTRAINT:
+ return isSetConstraint();
+ case XSDPackage.XSD_FEATURE__FORM:
+ return isSetForm();
+ case XSDPackage.XSD_FEATURE__LEXICAL_VALUE:
+ return LEXICAL_VALUE_EDEFAULT == null ? lexicalValue != null : !LEXICAL_VALUE_EDEFAULT.equals(lexicalValue);
+ case XSDPackage.XSD_FEATURE__GLOBAL:
+ return isGlobal() != GLOBAL_EDEFAULT;
+ case XSDPackage.XSD_FEATURE__FEATURE_REFERENCE:
+ return isFeatureReference() != FEATURE_REFERENCE_EDEFAULT;
+ case XSDPackage.XSD_FEATURE__SCOPE:
+ return getScope() != null;
+ case XSDPackage.XSD_FEATURE__RESOLVED_FEATURE:
+ return getResolvedFeature() != null;
+ case XSDPackage.XSD_FEATURE__TYPE:
+ return getType() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFixedFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFixedFacetImpl.java
new file mode 100644
index 0000000..25555b4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFixedFacetImpl.java
@@ -0,0 +1,438 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDConstrainingFacet;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fixed Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDFixedFacetImpl#isFixed <em>Fixed</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDFixedFacetImpl
+ extends XSDConstrainingFacetImpl
+ implements XSDFixedFacet
+{
+ /**
+ * The default value of the '{@link #isFixed() <em>Fixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isFixed()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean FIXED_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isFixed() <em>Fixed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isFixed()
+ * @generated
+ * @ordered
+ */
+ protected static final int FIXED_EFLAG = 1 << 8;
+
+ /**
+ * The flag representing whether the Fixed attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int FIXED_ESETFLAG = 1 << 9;
+
+ public static XSDFixedFacet createFixedFacet(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.FRACTIONDIGITS_ELEMENT:
+ {
+ return XSDFractionDigitsFacetImpl.createFractionDigitsFacet(node);
+ }
+ case XSDConstants.LENGTH_ELEMENT:
+ {
+ return XSDLengthFacetImpl.createLengthFacet(node);
+ }
+ case XSDConstants.MAXEXCLUSIVE_ELEMENT:
+ {
+ return XSDMaxExclusiveFacetImpl.createMaxExclusiveFacet(node);
+ }
+ case XSDConstants.MAXINCLUSIVE_ELEMENT:
+ {
+ return XSDMaxInclusiveFacetImpl.createMaxInclusiveFacet(node);
+ }
+ case XSDConstants.MAXLENGTH_ELEMENT:
+ {
+ return XSDMaxLengthFacetImpl.createMaxLengthFacet(node);
+ }
+ case XSDConstants.MINEXCLUSIVE_ELEMENT:
+ {
+ return XSDMinExclusiveFacetImpl.createMinExclusiveFacet(node);
+ }
+ case XSDConstants.MININCLUSIVE_ELEMENT:
+ {
+ return XSDMinInclusiveFacetImpl.createMinInclusiveFacet(node);
+ }
+ case XSDConstants.MINLENGTH_ELEMENT:
+ {
+ return XSDMinLengthFacetImpl.createMinLengthFacet(node);
+ }
+ case XSDConstants.TOTALDIGITS_ELEMENT:
+ {
+ return XSDTotalDigitsFacetImpl.createTotalDigitsFacet(node);
+ }
+ case XSDConstants.WHITESPACE_ELEMENT:
+ {
+ return XSDWhiteSpaceFacetImpl.createWhiteSpaceFacet(node);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDFixedFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_FIXED_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isFixed()
+ {
+ return (eFlags & FIXED_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFixed(boolean newFixed)
+ {
+ boolean oldFixed = (eFlags & FIXED_EFLAG) != 0;
+ if (newFixed) eFlags |= FIXED_EFLAG; else eFlags &= ~FIXED_EFLAG;
+ boolean oldFixedESet = (eFlags & FIXED_ESETFLAG) != 0;
+ eFlags |= FIXED_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FIXED_FACET__FIXED, oldFixed, newFixed, !oldFixedESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetFixed()
+ {
+ boolean oldFixed = (eFlags & FIXED_EFLAG) != 0;
+ boolean oldFixedESet = (eFlags & FIXED_ESETFLAG) != 0;
+ if (FIXED_EDEFAULT) eFlags |= FIXED_EFLAG; else eFlags &= ~FIXED_EFLAG;
+ eFlags &= ~FIXED_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_FIXED_FACET__FIXED, oldFixed, FIXED_EDEFAULT, oldFixedESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetFixed()
+ {
+ return (eFlags & FIXED_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FIXED_FACET__FIXED:
+ return isFixed();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FIXED_FACET__FIXED:
+ setFixed((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FIXED_FACET__FIXED:
+ unsetFixed();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FIXED_FACET__FIXED:
+ return isSetFixed();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (fixed: ");
+ if ((eFlags & FIXED_ESETFLAG) != 0) result.append((eFlags & FIXED_EFLAG) != 0); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+
+ checkBuiltInTypeConstraint
+ ("boolean",
+ null,
+ XSDConstants.PART2,
+ "element-" + getFacetName(),
+ theElement,
+ XSDConstants.FIXED_ATTRIBUTE,
+ false);
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-" + getFacetName(),
+ theElement,
+ new String []
+ {
+ XSDConstants.FIXED_ATTRIBUTE,
+ XSDConstants.VALUE_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-" + getFacetName(),
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ for (XSDFacet xsdFacet : xsdSimpleTypeDefinition.getFacetContents())
+ {
+ if (xsdFacet == this)
+ {
+ break;
+ }
+ else if (xsdFacet.eClass() == eClass())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "src-single-facet-value",
+ theElement,
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getFacetName() });
+ xsdDiagnostic.getComponents().add(xsdFacet);
+ break;
+ }
+ }
+
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null)
+ {
+ for (XSDConstrainingFacet xsdConstrainingFacet : baseTypeDefinition.getFacets())
+ {
+ if (xsdConstrainingFacet instanceof XSDFixedFacet)
+ {
+ XSDFixedFacet xsdFixedFacet = (XSDFixedFacet)xsdConstrainingFacet;
+
+ if (eClass() == xsdFixedFacet.eClass())
+ {
+ if (xsdFixedFacet.isFixed() && !baseTypeDefinition.equalValues(getEffectiveValue(), xsdFixedFacet.getEffectiveValue()))
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "facet-fixed-valid-restriction",
+ theElement,
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getLexicalValue(), xsdFixedFacet.getLexicalValue(), getFacetName(), baseTypeDefinition.getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+
+ // The spec has no anchor for this constraint
+ //
+ xsdDiagnostic.setAnnotationURI(XSDConstants.PART2 + "#" + "dc-" + getFacetName());
+
+ break;
+ }
+ }
+
+ if (restrictionMatch(xsdFixedFacet))
+ {
+ validateRestriction(xsdFixedFacet);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ checkBuiltInTypeConstraint
+ ("nonNegativeInteger",
+ getLexicalValue(),
+ XSDConstants.PART2,
+ "element" + getFacetName(),
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ true);
+ }
+
+ protected boolean restrictionMatch(XSDFixedFacet xsdFixedFacet)
+ {
+ return xsdFixedFacet.eClass() == eClass();
+ }
+
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ // Do nothing.
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE))
+ {
+ boolean newFixed = convertToBoolean(changedElement.getAttributeNS(null, XSDConstants.FIXED_ATTRIBUTE));
+ if (!isSetFixed() || newFixed != isFixed())
+ {
+ setFixed(newFixed);
+ }
+ }
+ else
+ {
+ unsetFixed();
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (!isReconciling)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_FIXED_FACET__FIXED)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.FIXED_ATTRIBUTE, isSetFixed() ? (isFixed() ? "true" : "false") : null);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFractionDigitsFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFractionDigitsFacetImpl.java
new file mode 100644
index 0000000..2b22784
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFractionDigitsFacetImpl.java
@@ -0,0 +1,341 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.math.BigDecimal;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fraction Digits Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDFractionDigitsFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDFractionDigitsFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDFractionDigitsFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ public static XSDFractionDigitsFacet createFractionDigitsFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.FRACTIONDIGITS_ELEMENT)
+ {
+ XSDFractionDigitsFacet xsdFractionDigitsFacet = XSDFactory.eINSTANCE.createXSDFractionDigitsFacet();
+ xsdFractionDigitsFacet.setElement((Element)node);
+ return xsdFractionDigitsFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDFractionDigitsFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_FRACTION_DIGITS_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue)
+ {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_FRACTION_DIGITS_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FRACTION_DIGITS_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FRACTION_DIGITS_FACET__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FRACTION_DIGITS_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_FRACTION_DIGITS_FACET__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.FRACTIONDIGITS_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = xsdSimpleTypeDefinition.getTotalDigitsFacet();
+ if (xsdTotalDigitsFacet != null && getValue() > xsdTotalDigitsFacet.getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "fractionDigits-less-than-equal-to-totalDigits",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getValue(), xsdTotalDigitsFacet.getValue() });
+ xsdDiagnostic.getComponents().add(xsdTotalDigitsFacet);
+ }
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ checkBuiltInTypeConstraint
+ ("nonNegativeInteger",
+ getLexicalValue(),
+ XSDConstants.PART2,
+ "element-totalDigits",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ true);
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ if (getValue() > ((XSDFractionDigitsFacet)xsdFixedFacet).getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "fractionDigits-valid-restriction",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getValue(), xsdFixedFacet.getEffectiveValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ if (getLexicalValue() == null)
+ {
+ setValue(0);
+ }
+ else
+ {
+ try
+ {
+ int newValue = Integer.parseInt(getLexicalValue());
+ if (newValue != getValue())
+ {
+ setValue(newValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ setValue(0);
+ }
+ }
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ return value instanceof BigDecimal && ((BigDecimal)value).scale() <= getValue();
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDFractionDigitsFacetImpl clonedFractionDigitsFacet =
+ (XSDFractionDigitsFacetImpl)getXSDFactory().createXSDFractionDigitsFacet();
+ clonedFractionDigitsFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedFractionDigitsFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedFractionDigitsFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedFractionDigitsFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedFractionDigitsFacet.setElement(getElement());
+ }
+
+ clonedFractionDigitsFacet.isReconciling = shareDOM;
+ return clonedFractionDigitsFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFundamentalFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFundamentalFacetImpl.java
new file mode 100644
index 0000000..a800c4c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDFundamentalFacetImpl.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDFundamentalFacet;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fundamental Facet</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDFundamentalFacetImpl
+ extends XSDFacetImpl
+ implements XSDFundamentalFacet
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDFundamentalFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_FUNDAMENTAL_FACET;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDIdentityConstraintDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDIdentityConstraintDefinitionImpl.java
new file mode 100644
index 0000000..2c4059b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDIdentityConstraintDefinitionImpl.java
@@ -0,0 +1,810 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDIdentityConstraintCategory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.XSDXPathVariety;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identity Constraint Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl#getIdentityConstraintCategory <em>Identity Constraint Category</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl#getReferencedKey <em>Referenced Key</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl#getSelector <em>Selector</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDIdentityConstraintDefinitionImpl#getFields <em>Fields</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDIdentityConstraintDefinitionImpl
+ extends XSDNamedComponentImpl
+ implements XSDIdentityConstraintDefinition
+{
+ /**
+ * The default value of the '{@link #getIdentityConstraintCategory() <em>Identity Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentityConstraintCategory()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDIdentityConstraintCategory IDENTITY_CONSTRAINT_CATEGORY_EDEFAULT = XSDIdentityConstraintCategory.KEY_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getIdentityConstraintCategory() <em>Identity Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getIdentityConstraintCategory() <em>Identity Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int IDENTITY_CONSTRAINT_CATEGORY_EFLAG_DEFAULT = IDENTITY_CONSTRAINT_CATEGORY_EDEFAULT.ordinal() << IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDIdentityConstraintCategory Identity Constraint Category}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDIdentityConstraintCategory[] IDENTITY_CONSTRAINT_CATEGORY_EFLAG_VALUES = XSDIdentityConstraintCategory.values();
+
+ /**
+ * The flags representing the value of the '{@link #getIdentityConstraintCategory() <em>Identity Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentityConstraintCategory()
+ * @generated
+ * @ordered
+ */
+ protected static final int IDENTITY_CONSTRAINT_CATEGORY_EFLAG = 0x3 << IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getReferencedKey() <em>Referenced Key</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferencedKey()
+ * @generated
+ * @ordered
+ */
+ protected XSDIdentityConstraintDefinition referencedKey;
+
+ /**
+ * The cached value of the '{@link #getSelector() <em>Selector</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSelector()
+ * @generated
+ * @ordered
+ */
+ protected XSDXPathDefinition selector;
+
+ /**
+ * The cached value of the '{@link #getFields() <em>Fields</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFields()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDXPathDefinition> fields;
+
+ public static XSDIdentityConstraintDefinition createIdentityConstraintDefinition(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.KEY_ELEMENT:
+ case XSDConstants.KEYREF_ELEMENT:
+ case XSDConstants.UNIQUE_ELEMENT:
+ {
+ XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition =
+ XSDFactory.eINSTANCE.createXSDIdentityConstraintDefinition();
+ xsdIdentityConstraintDefinition.setElement((Element)node);
+ return xsdIdentityConstraintDefinition;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDIdentityConstraintDefinitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_IDENTITY_CONSTRAINT_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDIdentityConstraintCategory getIdentityConstraintCategory()
+ {
+ return IDENTITY_CONSTRAINT_CATEGORY_EFLAG_VALUES[(eFlags & IDENTITY_CONSTRAINT_CATEGORY_EFLAG) >>> IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIdentityConstraintCategory(XSDIdentityConstraintCategory newIdentityConstraintCategory)
+ {
+ XSDIdentityConstraintCategory oldIdentityConstraintCategory = IDENTITY_CONSTRAINT_CATEGORY_EFLAG_VALUES[(eFlags & IDENTITY_CONSTRAINT_CATEGORY_EFLAG) >>> IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET];
+ if (newIdentityConstraintCategory == null) newIdentityConstraintCategory = IDENTITY_CONSTRAINT_CATEGORY_EDEFAULT;
+ eFlags = eFlags & ~IDENTITY_CONSTRAINT_CATEGORY_EFLAG | newIdentityConstraintCategory.ordinal() << IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY, oldIdentityConstraintCategory, newIdentityConstraintCategory));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDIdentityConstraintDefinition getReferencedKey()
+ {
+ return referencedKey;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReferencedKey(XSDIdentityConstraintDefinition newReferencedKey)
+ {
+ XSDIdentityConstraintDefinition oldReferencedKey = referencedKey;
+ referencedKey = newReferencedKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY, oldReferencedKey, referencedKey));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDXPathDefinition getSelector()
+ {
+ return selector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelector(XSDXPathDefinition newSelector)
+ {
+ if (newSelector != selector)
+ {
+ NotificationChain msgs = null;
+ if (selector != null)
+ msgs = ((InternalEObject)selector).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR, null, msgs);
+ if (newSelector != null)
+ msgs = ((InternalEObject)newSelector).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR, null, msgs);
+ msgs = basicSetSelector(newSelector, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR, newSelector, newSelector));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSelector(XSDXPathDefinition newSelector, NotificationChain msgs)
+ {
+ XSDXPathDefinition oldSelector = selector;
+ selector = newSelector;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR, oldSelector, newSelector);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDXPathDefinition> getFields()
+ {
+ if (fields == null)
+ {
+ fields = new EObjectContainmentEList<XSDXPathDefinition>(XSDXPathDefinition.class, this, XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS);
+ }
+ return fields;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR:
+ return basicSetSelector(null, msgs);
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS:
+ return ((InternalEList<?>)getFields()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY:
+ return getIdentityConstraintCategory();
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY:
+ return getReferencedKey();
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR:
+ return getSelector();
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS:
+ return getFields();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY:
+ setIdentityConstraintCategory((XSDIdentityConstraintCategory)newValue);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY:
+ setReferencedKey((XSDIdentityConstraintDefinition)newValue);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR:
+ setSelector((XSDXPathDefinition)newValue);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS:
+ getFields().clear();
+ getFields().addAll((Collection<? extends XSDXPathDefinition>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY:
+ setIdentityConstraintCategory(IDENTITY_CONSTRAINT_CATEGORY_EDEFAULT);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY:
+ setReferencedKey((XSDIdentityConstraintDefinition)null);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR:
+ setSelector((XSDXPathDefinition)null);
+ return;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS:
+ getFields().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY:
+ return (eFlags & IDENTITY_CONSTRAINT_CATEGORY_EFLAG) != IDENTITY_CONSTRAINT_CATEGORY_EFLAG_DEFAULT;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY:
+ return referencedKey != null;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR:
+ return selector != null;
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS:
+ return fields != null && !fields.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (identityConstraintCategory: ");
+ result.append(IDENTITY_CONSTRAINT_CATEGORY_EFLAG_VALUES[(eFlags & IDENTITY_CONSTRAINT_CATEGORY_EFLAG) >>> IDENTITY_CONSTRAINT_CATEGORY_EFLAG_OFFSET]);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement =
+ createElement
+ (XSDIdentityConstraintCategory.UNIQUE_LITERAL == getIdentityConstraintCategory() ?
+ XSDConstants.UNIQUE_ELEMENT :
+ XSDIdentityConstraintCategory.KEYREF_LITERAL == getIdentityConstraintCategory() ?
+ XSDConstants.KEYREF_ELEMENT :
+ XSDConstants.KEY_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+ XSDIdentityConstraintDefinition theReferencedKey = getReferencedKey();
+ if (theReferencedKey != null)
+ {
+ XSDIdentityConstraintDefinition newReferencedKey =
+ resolveIdentityConstraintDefinition(theReferencedKey.getTargetNamespace(), theReferencedKey.getName());
+ if (newReferencedKey != theReferencedKey)
+ {
+ setReferencedKey(newReferencedKey);
+ }
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ String anchor = null;
+ String [] attributes = null;
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = null;
+ switch (getIdentityConstraintCategory().getValue())
+ {
+ case XSDIdentityConstraintCategory.KEY:
+ {
+ anchor = "element-key";
+ attributes =
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE
+ };
+
+ xsdComplexTypeDefinition = getSchema().getSchemaForSchema().resolveComplexTypeDefinition("keybase");
+
+ break;
+ }
+ case XSDIdentityConstraintCategory.KEYREF:
+ {
+ anchor = "element-keyRef";
+ attributes =
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.REFER_ATTRIBUTE
+ };
+
+ xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("keyref").getTypeDefinition();
+
+ XSDIdentityConstraintDefinition theReferencedKey = getReferencedKey();
+ if (theReferencedKey == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedIdentityConstraintDefinition_message", "");
+ }
+ else if (theReferencedKey.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedIdentityConstraintDefinition_message", theReferencedKey.getURI());
+ }
+ else
+ {
+ if (theReferencedKey.getFields().size() != getFields().size())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "c-props-correct.2");
+ }
+ }
+
+ break;
+ }
+ case XSDIdentityConstraintCategory.UNIQUE:
+ {
+ anchor = "element-unique";
+ attributes =
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE
+ };
+
+ xsdComplexTypeDefinition = getSchema().getSchemaForSchema().resolveComplexTypeDefinition("keybase");
+ break;
+ }
+ }
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkAttributes(XSDConstants.PART1, anchor, theElement, attributes);
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART1, anchor, theElement);
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ XSDIdentityConstraintCategory newIdentityConstraintCategory = XSDIdentityConstraintCategory.get(changedElement.getLocalName());
+ if (newIdentityConstraintCategory != getIdentityConstraintCategory())
+ {
+ setIdentityConstraintCategory(newIdentityConstraintCategory);
+ }
+
+ if (newIdentityConstraintCategory == XSDIdentityConstraintCategory.KEYREF_LITERAL)
+ {
+ XSDIdentityConstraintDefinition newReferencedKey = null;
+ if (changedElement.hasAttributeNS(null, XSDConstants.REFER_ATTRIBUTE))
+ {
+ newReferencedKey =
+ resolveIdentityConstraintDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.REFER_ATTRIBUTE));
+ }
+
+ if (newReferencedKey != getReferencedKey())
+ {
+ setReferencedKey(newReferencedKey);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDXPathDefinition xsdXPathDefinition = XSDXPathDefinitionImpl.createXPathDefinition(child);
+ if (xsdXPathDefinition != null)
+ {
+ newContents.add(xsdXPathDefinition);
+ }
+ else
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null && newContents.isEmpty())
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION, newContents, remainingContents);
+
+ XSDXPathDefinition newSelector = null;
+ if (!newContents.isEmpty())
+ {
+ newSelector = (XSDXPathDefinition)newContents.get(0);
+ if (XSDXPathVariety.SELECTOR_LITERAL == newSelector.getVariety())
+ {
+ newContents.remove(0);
+ }
+ else
+ {
+ newSelector = null;
+ }
+ }
+
+ if (newSelector != getSelector())
+ {
+ remainingContents.remove(getSelector());
+ setSelector(newSelector);
+ }
+
+ if (!remainingContents.isEmpty())
+ {
+ getFields().removeAll(remainingContents);
+ }
+
+ if (!newContents.isEmpty())
+ {
+ @SuppressWarnings("unchecked") List<XSDXPathDefinition> list = (List<XSDXPathDefinition>)(List<?>)newContents;
+ setListContentAndOrder(getFields(), list);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY)
+ {
+ if (theElement != null && eAttribute != null && !isReconciling)
+ {
+ Element newElement =
+ createElement
+ (XSDIdentityConstraintCategory.UNIQUE_LITERAL == getIdentityConstraintCategory() ?
+ XSDConstants.UNIQUE_ELEMENT :
+ XSDIdentityConstraintCategory.KEYREF_LITERAL == getIdentityConstraintCategory() ?
+ XSDConstants.KEYREF_ELEMENT :
+ XSDConstants.KEY_ELEMENT);
+
+ forceReplace(newElement, theElement);
+ setElement(newElement);
+ }
+ }
+ }
+
+ @Override
+ protected void adoptBy(XSDSchema xsdSchema)
+ {
+ super.adoptBy(xsdSchema);
+ if (!xsdSchema.getIdentityConstraintDefinitions().contains(this))
+ {
+ XSDNamedComponentImpl.addToSortedList(xsdSchema.getIdentityConstraintDefinitions(), this);
+ }
+ }
+
+ @Override
+ protected void orphanBy(XSDSchema xsdSchema)
+ {
+ xsdSchema.getIdentityConstraintDefinitions().remove(this);
+ super.orphanBy(xsdSchema);
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (XSDIdentityConstraintCategory.KEYREF_LITERAL == getIdentityConstraintCategory())
+ {
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY)
+ {
+ XSDIdentityConstraintDefinition theReferencedKey = getReferencedKey();
+ if (theElement != null)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REFER_ATTRIBUTE, theReferencedKey == null ? null : theReferencedKey.getURI());
+ }
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDIdentityConstraintDefinitionImpl clonedIdentityConstraintDefinition =
+ (XSDIdentityConstraintDefinitionImpl)getXSDFactory().createXSDIdentityConstraintDefinition();
+ clonedIdentityConstraintDefinition.isReconciling = true;
+
+ if (getName() != null)
+ {
+ clonedIdentityConstraintDefinition.setName(getName());
+ }
+ clonedIdentityConstraintDefinition.setIdentityConstraintCategory(getIdentityConstraintCategory());
+
+ XSDIdentityConstraintDefinition theReferencedKey = getReferencedKey();
+ if (theReferencedKey != null)
+ {
+ clonedIdentityConstraintDefinition.setReferencedKey
+ (createUnresolvedIdentityConstraintDefinition
+ (theReferencedKey.getTargetNamespace(), theReferencedKey.getName()));
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedIdentityConstraintDefinition.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (getSelector() != null)
+ {
+ clonedIdentityConstraintDefinition.setSelector((XSDXPathDefinition)getSelector().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (!getFields().isEmpty())
+ {
+ clonedIdentityConstraintDefinition.getFields().addAll(cloneConcreteComponents(getFields(), deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedIdentityConstraintDefinition.setElement(getElement());
+ }
+
+ clonedIdentityConstraintDefinition.isReconciling = shareDOM;
+ return clonedIdentityConstraintDefinition;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDImportImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDImportImpl.java
new file mode 100644
index 0000000..0355aa3
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDImportImpl.java
@@ -0,0 +1,516 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Import</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDImportImpl#getNamespace <em>Namespace</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDImportImpl#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDImportImpl
+ extends XSDSchemaDirectiveImpl
+ implements XSDImport
+{
+ /**
+ * The default value of the '{@link #getNamespace() <em>Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamespace()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAMESPACE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNamespace() <em>Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamespace()
+ * @generated
+ * @ordered
+ */
+ protected String namespace = NAMESPACE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ public static XSDImport createImport(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.IMPORT_ELEMENT)
+ {
+ XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+ xsdImport.setElement((Element)node);
+ return xsdImport;
+ }
+
+ return null;
+ }
+
+ // protected XSDSchema importedSchema;
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.IMPORT_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDImportImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_IMPORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getNamespace()
+ {
+ return namespace;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNamespace(String newNamespace)
+ {
+ String oldNamespace = namespace;
+ namespace = newNamespace;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IMPORT__NAMESPACE, oldNamespace, namespace));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_IMPORT__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_IMPORT__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IMPORT__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IMPORT__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_IMPORT__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IMPORT__NAMESPACE:
+ return getNamespace();
+ case XSDPackage.XSD_IMPORT__ANNOTATION:
+ return getAnnotation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IMPORT__NAMESPACE:
+ setNamespace((String)newValue);
+ return;
+ case XSDPackage.XSD_IMPORT__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IMPORT__NAMESPACE:
+ setNamespace(NAMESPACE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_IMPORT__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_IMPORT__NAMESPACE:
+ return NAMESPACE_EDEFAULT == null ? namespace != null : !NAMESPACE_EDEFAULT.equals(namespace);
+ case XSDPackage.XSD_IMPORT__ANNOTATION:
+ return annotation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (namespace: ");
+ result.append(namespace);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-import",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAMESPACE_ATTRIBUTE,
+ XSDConstants.SCHEMALOCATION_ATTRIBUTE,
+ });
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("import").getTypeDefinition();
+
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART1, "element-import", theElement);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-import",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ checkBuiltInTypeConstraint
+ ("anyURI",
+ getNamespace(),
+ XSDConstants.PART1,
+ "element-import",
+ theElement,
+ XSDConstants.NAMESPACE_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("anyURI",
+ getSchemaLocation(),
+ XSDConstants.PART1,
+ "element-import",
+ theElement,
+ XSDConstants.SCHEMALOCATION_ATTRIBUTE,
+ false);
+
+
+ XSDSchema xsdSchema = getSchema();
+ if (getNamespace() == null ? xsdSchema.getTargetNamespace() == null : getNamespace().equals(xsdSchema.getTargetNamespace()))
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-import.1",
+ getNamespace() == null ? "" : getNamespace());
+ }
+
+ XSDSchema theResolvedSchema = getResolvedSchema();
+ if (theResolvedSchema == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.WARNING_LITERAL,
+ resolved ? "src-import.0" : "src-import.0.2",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ else
+ {
+ if (theResolvedSchema.eResource() == null ||
+ theResolvedSchema.getElement() == null ||
+ XSDConstants.nodeType(theResolvedSchema.getElement()) != XSDConstants.SCHEMA_ELEMENT)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-import.2",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ else
+ {
+ if (getNamespace() == null ?
+ theResolvedSchema.getTargetNamespace() != null :
+ !getNamespace().equals(theResolvedSchema.getTargetNamespace()))
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-import.3",
+ theResolvedSchema.getTargetNamespace() == null ? "" : theResolvedSchema.getTargetNamespace(),
+ getNamespace() == null ? "" : getNamespace());
+ }
+ }
+ }
+
+ if (getNamespace() != null &&
+ !getSchema().getQNamePrefixToNamespaceMap().containsValue(getNamespace()) &&
+ !XSDConstants.isXMLNamespace(getNamespace()))
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.WARNING_LITERAL,
+ "src-import.0.1",
+ getNamespace() == null ? "" : getNamespace());
+ }
+ }
+
+ public XSDSchema importSchema()
+ {
+ resolve(getNamespace(), getSchemaLocation());
+
+ return getResolvedSchema();
+ }
+
+ @Override
+ protected void handleResolvedSchema(XSDSchema xsdSchema)
+ {
+ if (xsdSchema == null)
+ {
+ setResolvedSchema(null);
+ }
+ else
+ {
+ ((XSDSchemaImpl)xsdSchema).imported(this);
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_IMPORT__ANNOTATION, newContents, remainingContents);
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ String newNamespace = null;
+ if (changedElement.hasAttributeNS(null, XSDConstants.NAMESPACE_ATTRIBUTE))
+ {
+ newNamespace = changedElement.getAttributeNS(null, XSDConstants.NAMESPACE_ATTRIBUTE);
+ }
+
+ if (newNamespace == null ? getNamespace() != null : !newNamespace.equals(getNamespace()))
+ {
+ setNamespace(newNamespace);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeAttribute(eAttribute);
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_IMPORT__NAMESPACE)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.NAMESPACE_ATTRIBUTE, getNamespace());
+ }
+ if (eAttribute != null && getResolvedSchema() != null && getSchema().isIncrementalUpdate())
+ {
+ getSchema().reset();
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDImportImpl clonedImport =
+ (XSDImportImpl)getXSDFactory().createXSDImport();
+ clonedImport.isReconciling = true;
+
+ clonedImport.setNamespace(getNamespace());
+ clonedImport.setSchemaLocation(getSchemaLocation());
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedImport.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedImport.setElement(getElement());
+ }
+
+ clonedImport.isReconciling = shareDOM;
+ return clonedImport;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDIncludeImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDIncludeImpl.java
new file mode 100644
index 0000000..b360d4b
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDIncludeImpl.java
@@ -0,0 +1,373 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Include</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDIncludeImpl#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDIncludeImpl
+ extends XSDSchemaCompositorImpl
+ implements XSDInclude
+{
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ public static XSDInclude createInclude(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.INCLUDE_ELEMENT)
+ {
+ XSDInclude xsdInclude = XSDFactory.eINSTANCE.createXSDInclude();
+ xsdInclude.setElement((Element)node);
+ return xsdInclude;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDIncludeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_INCLUDE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_INCLUDE__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_INCLUDE__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_INCLUDE__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_INCLUDE__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_INCLUDE__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_INCLUDE__ANNOTATION:
+ return getAnnotation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_INCLUDE__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_INCLUDE__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_INCLUDE__ANNOTATION:
+ return annotation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.INCLUDE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ if (getSchemaLocation() != null && getSchemaLocation().length() > 0)
+ {
+ resolve("", getSchemaLocation());
+ }
+ super.patch();
+ }
+
+ @Override
+ protected void handleResolvedSchema(XSDSchema xsdSchema)
+ {
+ if (xsdSchema == null)
+ {
+ setResolvedSchema(null);
+ setIncorporatedSchema(null);
+ }
+ else
+ {
+ ((XSDSchemaImpl)xsdSchema).included(this);
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_INCLUDE__ANNOTATION, newContents, remainingContents);
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-include",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.SCHEMALOCATION_ATTRIBUTE,
+ });
+
+ checkComplexContent("annotated", XSDConstants.PART1, "element-include", theElement);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-include",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ checkBuiltInTypeConstraint
+ ("anyURI",
+ getSchemaLocation(),
+ XSDConstants.PART1,
+ "element-include",
+ theElement,
+ XSDConstants.SCHEMALOCATION_ATTRIBUTE,
+ true);
+
+ XSDSchema theResolvedSchema = getResolvedSchema();
+ if (theResolvedSchema == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.WARNING_LITERAL,
+ "src-include.0",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ else
+ {
+ if (theResolvedSchema.eResource() == null ||
+ theResolvedSchema.getElement() == null ||
+ XSDConstants.nodeType(theResolvedSchema.getElement()) != XSDConstants.SCHEMA_ELEMENT)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-include.1",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ else
+ {
+ XSDSchema theSchema = getSchema();
+ if (theSchema.getTargetNamespace() == null ?
+ theResolvedSchema.getTargetNamespace() != null :
+ !theSchema.getTargetNamespace().equals(theResolvedSchema.getTargetNamespace()) &&
+ theResolvedSchema.getTargetNamespace() != null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-include.2",
+ theResolvedSchema.getTargetNamespace() == null ? "" : theResolvedSchema.getTargetNamespace(),
+ theSchema.getTargetNamespace() == null ? "" : theSchema.getTargetNamespace());
+ }
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDIncludeImpl clonedInclude =
+ (XSDIncludeImpl)getXSDFactory().createXSDInclude();
+ clonedInclude.isReconciling = true;
+
+ clonedInclude.setSchemaLocation(getSchemaLocation());
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedInclude.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedInclude.setElement(getElement());
+ }
+
+ clonedInclude.isReconciling = shareDOM;
+ return clonedInclude;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDLengthFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDLengthFacetImpl.java
new file mode 100644
index 0000000..48f77d6
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDLengthFacetImpl.java
@@ -0,0 +1,364 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Length Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDLengthFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDLengthFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDLengthFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ public static XSDLengthFacet createLengthFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.LENGTH_ELEMENT)
+ {
+ XSDLengthFacet xsdLengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ xsdLengthFacet.setElement((Element)node);
+ return xsdLengthFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDLengthFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_LENGTH_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue)
+ {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_LENGTH_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_LENGTH_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_LENGTH_FACET__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_LENGTH_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_LENGTH_FACET__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.LENGTH_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ XSDMinLengthFacet xsdMinLengthFacet = xsdSimpleTypeDefinition.getMinLengthFacet();
+ XSDMaxLengthFacet xsdMaxLengthFacet = xsdSimpleTypeDefinition.getMaxLengthFacet();
+ if (xsdMinLengthFacet != null || xsdMaxLengthFacet != null)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "length-minLength-maxLength",
+ getElement(),
+ null,
+ new Object [] {});
+ if (xsdMinLengthFacet != null)
+ {
+ xsdDiagnostic.getComponents().add(xsdMinLengthFacet);
+ }
+ if (xsdMaxLengthFacet != null)
+ {
+ xsdDiagnostic.getComponents().add(xsdMaxLengthFacet);
+ }
+ }
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ if (getValue() != ((XSDLengthFacet)xsdFixedFacet).getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "length-valid-restriction",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getValue(), xsdFixedFacet.getEffectiveValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ if (getLexicalValue() == null)
+ {
+ setValue(0);
+ }
+ else
+ {
+ try
+ {
+ int newValue = Integer.parseInt(getLexicalValue());
+ if (newValue != getValue())
+ {
+ setValue(newValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ setValue(0);
+ }
+ }
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ if (value instanceof List<?>)
+ {
+ return ((List<?>)value).size() == getValue();
+ }
+ else if (value instanceof String)
+ {
+ return ((String)value).length() == getValue();
+ }
+ else if (value instanceof XSDUtil.ByteSequence)
+ {
+ return ((XSDUtil.ByteSequence)value).getBytes().length == getValue();
+ }
+ else if (value instanceof QName)
+ {
+ QName qName = (QName)value;
+ int size = qName.getPrefix().length();
+ if (size > 0) ++size;
+ size += qName.getLocalPart().length();
+ return size == getValue();
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDLengthFacetImpl clonedLengthFacet =
+ (XSDLengthFacetImpl)getXSDFactory().createXSDLengthFacet();
+ clonedLengthFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedLengthFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedLengthFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedLengthFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedLengthFacet.setElement(getElement());
+ }
+
+ clonedLengthFacet.isReconciling = shareDOM;
+ return clonedLengthFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxExclusiveFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxExclusiveFacetImpl.java
new file mode 100644
index 0000000..01fb1e4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxExclusiveFacetImpl.java
@@ -0,0 +1,177 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Exclusive Facet</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class XSDMaxExclusiveFacetImpl
+ extends XSDMaxFacetImpl
+ implements XSDMaxExclusiveFacet
+{
+ public static XSDMaxExclusiveFacet createMaxExclusiveFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.MAXEXCLUSIVE_ELEMENT)
+ {
+ XSDMaxExclusiveFacet xsdMaxExclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxExclusiveFacet();
+ xsdMaxExclusiveFacet.setElement((Element)node);
+ return xsdMaxExclusiveFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMaxExclusiveFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MAX_EXCLUSIVE_FACET;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.MAXEXCLUSIVE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ String theLexicalValue = getLexicalValue();
+ Object newValue = null;
+ if (theLexicalValue != null)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ try
+ {
+ newValue = xsdSimpleTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore.
+ }
+ }
+ }
+
+ if (newValue == null ? getValue() != null : !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+
+ return true;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ return xsdSimpleTypeDefinition.compareValues(value, getValue()) < 0;
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public boolean isExclusive()
+ {
+ return true;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDMaxExclusiveFacetImpl clonedMaxExclusiveFacet =
+ (XSDMaxExclusiveFacetImpl)getXSDFactory().createXSDMaxExclusiveFacet();
+ clonedMaxExclusiveFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedMaxExclusiveFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedMaxExclusiveFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedMaxExclusiveFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedMaxExclusiveFacet.setElement(getElement());
+ }
+
+ clonedMaxExclusiveFacet.isReconciling = shareDOM;
+ return clonedMaxExclusiveFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxFacetImpl.java
new file mode 100644
index 0000000..78e36e9
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxFacetImpl.java
@@ -0,0 +1,347 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDMaxFacetImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDMaxFacetImpl#isInclusive <em>Inclusive</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDMaxFacetImpl#isExclusive <em>Exclusive</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDMaxFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDMaxFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected Object value = VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isInclusive() <em>Inclusive</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isInclusive()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean INCLUSIVE_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #isExclusive() <em>Exclusive</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isExclusive()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean EXCLUSIVE_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMaxFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MAX_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(Object newValue)
+ {
+ Object oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MAX_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getInclusive()
+ {
+ return isInclusive() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public boolean isInclusive()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getExclusive()
+ {
+ return isExclusive() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public boolean isExclusive()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_FACET__VALUE:
+ return getValue();
+ case XSDPackage.XSD_MAX_FACET__INCLUSIVE:
+ return isInclusive();
+ case XSDPackage.XSD_MAX_FACET__EXCLUSIVE:
+ return isExclusive();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_FACET__VALUE:
+ setValue(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_FACET__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case XSDPackage.XSD_MAX_FACET__INCLUSIVE:
+ return isInclusive() != INCLUSIVE_EDEFAULT;
+ case XSDPackage.XSD_MAX_FACET__EXCLUSIVE:
+ return isExclusive() != EXCLUSIVE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ if (isExclusive())
+ {
+ XSDMaxInclusiveFacet xsdMaxInclusiveFacet = xsdSimpleTypeDefinition.getMaxInclusiveFacet();
+ if (xsdMaxInclusiveFacet != null)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "maxInclusive-maxExclusive",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { });
+ xsdDiagnostic.getComponents().add(xsdMaxInclusiveFacet);
+ }
+ }
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null)
+ {
+ Element theElement = getElement();
+ if (getLexicalValue() == null)
+ {
+ createRequiredAttributeDiagnostic(XSDConstants.PART2, "element-" + getFacetName(), theElement, XSDConstants.VALUE_ATTRIBUTE);
+ }
+ else
+ {
+ XSDSimpleTypeDefinitionImpl.AssessmentImpl assessment =
+ (XSDSimpleTypeDefinitionImpl.AssessmentImpl)baseTypeDefinition.assess(theElement, getLexicalValue());
+
+ Collection<XSDDiagnostic> allDiagnostics = assessment.getDiagnostics();
+ if (!allDiagnostics.isEmpty())
+ {
+ // This is to ignores exclusive violations which should be caught via restriction validation.
+ //
+ if (isExclusive())
+ {
+ for (Iterator<XSDDiagnostic> i = allDiagnostics.iterator(); i.hasNext(); )
+ {
+ XSDDiagnostic xsdDiagnostic = i.next();
+ XSDConcreteComponent primaryComponent = xsdDiagnostic.getPrimaryComponent();
+ if (primaryComponent instanceof XSDMaxExclusiveFacet &&
+ baseTypeDefinition.equalLiterals
+ (theElement, getLexicalValue(), theElement, ((XSDMaxExclusiveFacet)primaryComponent).getLexicalValue()))
+ {
+ i.remove();
+ }
+ }
+ }
+ assessment.assignDiagnostics(this, theElement, XSDConstants.VALUE_ATTRIBUTE);
+ getDiagnostics().addAll(allDiagnostics);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected boolean restrictionMatch(XSDFixedFacet xsdFixedFacet)
+ {
+ return xsdFixedFacet instanceof XSDMaxExclusiveFacet || xsdFixedFacet instanceof XSDMinExclusiveFacet;
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ int compare = xsdSimpleTypeDefinition.compareValues(getValue(), xsdFixedFacet.getEffectiveValue());
+ if (xsdFixedFacet instanceof XSDMaxExclusiveFacet ? compare > 0 : compare <= 0)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ getFacetName() + (xsdFixedFacet instanceof XSDMaxExclusiveFacet ? "-valid-restriction.2" : "-valid-restriction.4"),
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getLexicalValue(), xsdFixedFacet.getLexicalValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxInclusiveFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxInclusiveFacetImpl.java
new file mode 100644
index 0000000..380e91c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxInclusiveFacetImpl.java
@@ -0,0 +1,177 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Inclusive Facet</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class XSDMaxInclusiveFacetImpl
+ extends XSDMaxFacetImpl
+ implements XSDMaxInclusiveFacet
+{
+ public static XSDMaxInclusiveFacet createMaxInclusiveFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.MAXINCLUSIVE_ELEMENT)
+ {
+ XSDMaxInclusiveFacet xsdMaxInclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxInclusiveFacet();
+ xsdMaxInclusiveFacet.setElement((Element)node);
+ return xsdMaxInclusiveFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMaxInclusiveFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MAX_INCLUSIVE_FACET;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.MAXINCLUSIVE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ String theLexicalValue = getLexicalValue();
+ Object newValue = null;
+ if (theLexicalValue != null)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ try
+ {
+ newValue = xsdSimpleTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore
+ }
+ }
+ }
+
+ if (newValue == null ? getValue() != null : !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+
+ return true;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ return xsdSimpleTypeDefinition.compareValues(value, getValue()) <= 0;
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public boolean isInclusive()
+ {
+ return true;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDMaxInclusiveFacetImpl clonedMaxInclusiveFacet =
+ (XSDMaxInclusiveFacetImpl)getXSDFactory().createXSDMaxInclusiveFacet();
+ clonedMaxInclusiveFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedMaxInclusiveFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedMaxInclusiveFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedMaxInclusiveFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedMaxInclusiveFacet.setElement(getElement());
+ }
+
+ clonedMaxInclusiveFacet.isReconciling = shareDOM;
+ return clonedMaxInclusiveFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxLengthFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxLengthFacetImpl.java
new file mode 100644
index 0000000..a39499e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMaxLengthFacetImpl.java
@@ -0,0 +1,333 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Length Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDMaxLengthFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDMaxLengthFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDMaxLengthFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ public static XSDMaxLengthFacet createMaxLengthFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.MAXLENGTH_ELEMENT)
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ xsdMaxLengthFacet.setElement((Element)node);
+ return xsdMaxLengthFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMaxLengthFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MAX_LENGTH_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue)
+ {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MAX_LENGTH_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_LENGTH_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_LENGTH_FACET__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_LENGTH_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MAX_LENGTH_FACET__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.MAXLENGTH_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ if (getValue() > ((XSDMaxLengthFacet)xsdFixedFacet).getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "maxLength-valid-restriction",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getValue(), xsdFixedFacet.getEffectiveValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ if (getLexicalValue() == null)
+ {
+ setValue(0);
+ }
+ else
+ {
+ try
+ {
+ int newValue = Integer.parseInt(getLexicalValue());
+ if (newValue != getValue())
+ {
+ setValue(newValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ setValue(0);
+ }
+ }
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ if (value instanceof List<?>)
+ {
+ return ((List<?>)value).size() <= getValue();
+ }
+ else if (value instanceof String)
+ {
+ return ((String)value).length() <= getValue();
+ }
+ else if (value instanceof XSDUtil.ByteSequence)
+ {
+ return ((XSDUtil.ByteSequence)value).getBytes().length <= getValue();
+ }
+ else if (value instanceof QName)
+ {
+ QName qName = (QName)value;
+ int size = qName.getPrefix().length();
+ if (size > 0) ++size;
+ size += qName.getLocalPart().length();
+ return size <= getValue();
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDMaxLengthFacetImpl clonedMaxLengthFacet =
+ (XSDMaxLengthFacetImpl)getXSDFactory().createXSDMaxLengthFacet();
+ clonedMaxLengthFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedMaxLengthFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedMaxLengthFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedMaxLengthFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedMaxLengthFacet.setElement(getElement());
+ }
+
+ clonedMaxLengthFacet.isReconciling = shareDOM;
+ return clonedMaxLengthFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinExclusiveFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinExclusiveFacetImpl.java
new file mode 100644
index 0000000..02fb2cd
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinExclusiveFacetImpl.java
@@ -0,0 +1,177 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Min Exclusive Facet</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class XSDMinExclusiveFacetImpl
+ extends XSDMinFacetImpl
+ implements XSDMinExclusiveFacet
+{
+ public static XSDMinExclusiveFacet createMinExclusiveFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.MINEXCLUSIVE_ELEMENT)
+ {
+ XSDMinExclusiveFacet xsdMinExclusiveFacet = XSDFactory.eINSTANCE.createXSDMinExclusiveFacet();
+ xsdMinExclusiveFacet.setElement((Element)node);
+ return xsdMinExclusiveFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMinExclusiveFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MIN_EXCLUSIVE_FACET;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.MINEXCLUSIVE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ String theLexicalValue = getLexicalValue();
+ Object newValue = null;
+ if (theLexicalValue != null)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ try
+ {
+ newValue = xsdSimpleTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore
+ }
+ }
+ }
+
+ if (newValue == null ? getValue() != null : !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+
+ return true;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ return xsdSimpleTypeDefinition.compareValues(value, getValue()) > 0;
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public boolean isExclusive()
+ {
+ return true;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDMinExclusiveFacetImpl clonedMinExclusiveFacet =
+ (XSDMinExclusiveFacetImpl)getXSDFactory().createXSDMinExclusiveFacet();
+ clonedMinExclusiveFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedMinExclusiveFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedMinExclusiveFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedMinExclusiveFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedMinExclusiveFacet.setElement(getElement());
+ }
+
+ clonedMinExclusiveFacet.isReconciling = shareDOM;
+ return clonedMinExclusiveFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinFacetImpl.java
new file mode 100644
index 0000000..1f11154
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinFacetImpl.java
@@ -0,0 +1,367 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Min Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDMinFacetImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDMinFacetImpl#isInclusive <em>Inclusive</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDMinFacetImpl#isExclusive <em>Exclusive</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDMinFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDMinFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected Object value = VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isInclusive() <em>Inclusive</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isInclusive()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean INCLUSIVE_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #isExclusive() <em>Exclusive</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isExclusive()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean EXCLUSIVE_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMinFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MIN_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(Object newValue)
+ {
+ Object oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MIN_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getInclusive()
+ {
+ return isInclusive() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public boolean isInclusive()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getExclusive()
+ {
+ return isExclusive() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public boolean isExclusive()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_FACET__VALUE:
+ return getValue();
+ case XSDPackage.XSD_MIN_FACET__INCLUSIVE:
+ return isInclusive();
+ case XSDPackage.XSD_MIN_FACET__EXCLUSIVE:
+ return isExclusive();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_FACET__VALUE:
+ setValue(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_FACET__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case XSDPackage.XSD_MIN_FACET__INCLUSIVE:
+ return isInclusive() != INCLUSIVE_EDEFAULT;
+ case XSDPackage.XSD_MIN_FACET__EXCLUSIVE:
+ return isExclusive() != EXCLUSIVE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ XSDMaxFacet xsdMaxFacet = xsdSimpleTypeDefinition.getMaxFacet();
+
+ if (xsdMaxFacet != null)
+ {
+ int comparison = xsdSimpleTypeDefinition.compareValues(getValue(), xsdMaxFacet.getValue());
+ if (xsdMaxFacet.isInclusive() == isInclusive() ? comparison > 0 : comparison >= 0)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ getFacetName() + (xsdMaxFacet.isInclusive() == isInclusive() ? "-less-than-equal-to-" : "-less-than-") + xsdMaxFacet.getFacetName(),
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getLexicalValue(), xsdMaxFacet.getLexicalValue() });
+ xsdDiagnostic.getComponents().add(xsdMaxFacet);
+ }
+ }
+
+ if (isExclusive())
+ {
+ XSDMinInclusiveFacet xsdMinInclusiveFacet = xsdSimpleTypeDefinition.getMinInclusiveFacet();
+ if (xsdMinInclusiveFacet != null)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "minInclusive-minExclusive",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { });
+ xsdDiagnostic.getComponents().add(xsdMinInclusiveFacet);
+ }
+ }
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null)
+ {
+ Element theElement = getElement();
+ if (getLexicalValue() == null)
+ {
+ createRequiredAttributeDiagnostic(XSDConstants.PART2, "element-" + getFacetName(), theElement, XSDConstants.VALUE_ATTRIBUTE);
+ }
+ else
+ {
+ XSDSimpleTypeDefinitionImpl.AssessmentImpl assessment =
+ (XSDSimpleTypeDefinitionImpl.AssessmentImpl)baseTypeDefinition.assess(theElement, getLexicalValue());
+
+ Collection<XSDDiagnostic> allDiagnostics = assessment.getDiagnostics();
+ if (!allDiagnostics.isEmpty())
+ {
+ // This is to ignores exclusive violations which should be caught via restriction validation.
+ //
+ if (isExclusive())
+ {
+ for (Iterator<XSDDiagnostic> i = allDiagnostics.iterator(); i.hasNext(); )
+ {
+ XSDDiagnostic xsdDiagnostic = i.next();
+ XSDConcreteComponent primaryComponent = xsdDiagnostic.getPrimaryComponent();
+ if (primaryComponent instanceof XSDMinExclusiveFacet &&
+ baseTypeDefinition.equalLiterals
+ (theElement, getLexicalValue(), theElement, ((XSDMinExclusiveFacet)primaryComponent).getLexicalValue()))
+ {
+ i.remove();
+ }
+ }
+ }
+
+ assessment.assignDiagnostics(this, theElement, XSDConstants.VALUE_ATTRIBUTE);
+ getDiagnostics().addAll(allDiagnostics);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected boolean restrictionMatch(XSDFixedFacet xsdFixedFacet)
+ {
+ return xsdFixedFacet instanceof XSDMaxExclusiveFacet || xsdFixedFacet instanceof XSDMinExclusiveFacet;
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ int comparison = xsdSimpleTypeDefinition.compareValues(getValue(), xsdFixedFacet.getEffectiveValue());
+ if (xsdFixedFacet instanceof XSDMinExclusiveFacet ? comparison < 0 : comparison >= 0)
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ getFacetName() + (xsdFixedFacet instanceof XSDMinExclusiveFacet ? "-valid-restriction.2" : "-valid-restriction.4"),
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getLexicalValue(), xsdFixedFacet.getLexicalValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinInclusiveFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinInclusiveFacetImpl.java
new file mode 100644
index 0000000..b09284a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinInclusiveFacetImpl.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Min Inclusive Facet</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class XSDMinInclusiveFacetImpl
+ extends XSDMinFacetImpl
+ implements XSDMinInclusiveFacet
+{
+ public static XSDMinInclusiveFacet createMinInclusiveFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.MININCLUSIVE_ELEMENT)
+ {
+ XSDMinInclusiveFacet xsdMinInclusiveFacet = XSDFactory.eINSTANCE.createXSDMinInclusiveFacet();
+ xsdMinInclusiveFacet.setElement((Element)node);
+ return xsdMinInclusiveFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMinInclusiveFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MIN_INCLUSIVE_FACET;
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.MININCLUSIVE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ String theLexicalValue = getLexicalValue();
+ Object newValue = null;
+ if (theLexicalValue != null)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ try
+ {
+ newValue = xsdSimpleTypeDefinition.getValue(getElement(), theLexicalValue);
+ }
+ catch (RuntimeException exception)
+ {
+ // Ignore
+ }
+ }
+ }
+
+ if (newValue == null ? getValue() != null : !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+ return true;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null)
+ {
+ return xsdSimpleTypeDefinition.compareValues(value, getValue()) >= 0;
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public boolean isInclusive()
+ {
+ return true;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDMinInclusiveFacetImpl clonedMinInclusiveFacet =
+ (XSDMinInclusiveFacetImpl)getXSDFactory().createXSDMinInclusiveFacet();
+ clonedMinInclusiveFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedMinInclusiveFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedMinInclusiveFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedMinInclusiveFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedMinInclusiveFacet.setElement(getElement());
+ }
+
+ clonedMinInclusiveFacet.isReconciling = shareDOM;
+ return clonedMinInclusiveFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinLengthFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinLengthFacetImpl.java
new file mode 100644
index 0000000..0d3b5e4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDMinLengthFacetImpl.java
@@ -0,0 +1,354 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Min Length Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDMinLengthFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDMinLengthFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDMinLengthFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ public static XSDMinLengthFacet createMinLengthFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.MINLENGTH_ELEMENT)
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ xsdMinLengthFacet.setElement((Element)node);
+ return xsdMinLengthFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMinLengthFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MIN_LENGTH_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue)
+ {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MIN_LENGTH_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_LENGTH_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_LENGTH_FACET__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_LENGTH_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MIN_LENGTH_FACET__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.MINLENGTH_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ XSDMaxLengthFacet xsdMaxLengthFacet = xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet();
+ if (xsdMaxLengthFacet != null && getValue() > xsdMaxLengthFacet.getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "minLength-less-than-equal-to-maxLength",
+ getElement(),
+ null,
+ new Object [] { getValue(), xsdMaxLengthFacet.getEffectiveValue()});
+ xsdDiagnostic.getComponents().add(xsdMaxLengthFacet);
+ }
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ if (getValue() < ((XSDMinLengthFacet)xsdFixedFacet).getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "minLength-valid-restriction",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getValue(), xsdFixedFacet.getEffectiveValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ if (getLexicalValue() == null)
+ {
+ setValue(0);
+ }
+ else
+ {
+ try
+ {
+ int newValue = Integer.parseInt(getLexicalValue());
+ if (newValue != getValue())
+ {
+ setValue(newValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ setValue(0);
+ }
+ }
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ if (value instanceof List<?>)
+ {
+ return ((List<?>)value).size() >= getValue();
+ }
+ else if (value instanceof String)
+ {
+ return ((String)value).length() >= getValue();
+ }
+ else if (value instanceof XSDUtil.ByteSequence)
+ {
+ return ((XSDUtil.ByteSequence)value).getBytes().length >= getValue();
+ }
+ else if (value instanceof QName)
+ {
+ QName qName = (QName)value;
+ int size = qName.getPrefix().length();
+ if (size > 0) ++size;
+ size += qName.getLocalPart().length();
+ return size >= getValue();
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDMinLengthFacetImpl clonedMinLengthFacet =
+ (XSDMinLengthFacetImpl)getXSDFactory().createXSDMinLengthFacet();
+ clonedMinLengthFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedMinLengthFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedMinLengthFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedMinLengthFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedMinLengthFacet.setElement(getElement());
+ }
+
+ clonedMinLengthFacet.isReconciling = shareDOM;
+ return clonedMinLengthFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDModelGroupDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDModelGroupDefinitionImpl.java
new file mode 100644
index 0000000..521f0f0
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDModelGroupDefinitionImpl.java
@@ -0,0 +1,795 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.List;
+import java.util.Map;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model Group Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl#isModelGroupDefinitionReference <em>Model Group Definition Reference</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl#getModelGroup <em>Model Group</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupDefinitionImpl#getResolvedModelGroupDefinition <em>Resolved Model Group Definition</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDModelGroupDefinitionImpl
+ extends XSDRedefinableComponentImpl
+ implements XSDModelGroupDefinition
+{
+ /**
+ * The default value of the '{@link #isModelGroupDefinitionReference() <em>Model Group Definition Reference</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isModelGroupDefinitionReference()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MODEL_GROUP_DEFINITION_REFERENCE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getModelGroup() <em>Model Group</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getModelGroup()
+ * @generated
+ * @ordered
+ */
+ protected XSDModelGroup modelGroup;
+
+ /**
+ * The cached value of the '{@link #getResolvedModelGroupDefinition() <em>Resolved Model Group Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedModelGroupDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDModelGroupDefinition resolvedModelGroupDefinition;
+
+ public static XSDModelGroupDefinition createModelGroupDefinition(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.GROUP_ELEMENT)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = XSDFactory.eINSTANCE.createXSDModelGroupDefinition();
+ xsdModelGroupDefinition.setElement((Element)node);
+ return xsdModelGroupDefinition;
+ }
+
+ return null;
+ }
+
+ protected int analysisState;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XSDModelGroupDefinitionImpl()
+ {
+ super();
+ this.resolvedModelGroupDefinition = this;
+ // this.setResolvedModelGroupDefinition = true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MODEL_GROUP_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getModelGroupDefinitionReference()
+ {
+ return isModelGroupDefinitionReference() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ @Override
+ protected boolean isUpdatingDOM()
+ {
+ return
+ super.isUpdatingDOM() ||
+ getContainer() instanceof XSDConcreteComponentImpl &&
+ ((XSDConcreteComponentImpl)getContainer()).isUpdatingDOM();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.GROUP_ELEMENT);
+ setElement(newElement);
+
+ XSDModelGroup theModelGroup = getModelGroup();
+ if (theModelGroup != null)
+ {
+ Element modelGroupElement = ((XSDConcreteComponentImpl)theModelGroup).createElement();
+ newElement.appendChild(modelGroupElement);
+ }
+
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ analysisState = UNANALYZED;
+ super.patch();
+ XSDModelGroupDefinition theResolvedModelGroupDefinition = getResolvedModelGroupDefinition();
+
+ if (theResolvedModelGroupDefinition != this && (forceResolve || theResolvedModelGroupDefinition.getContainer() == null))
+ {
+ XSDModelGroupDefinition newResolvedModelGroupDefinition =
+ resolveModelGroupDefinition(theResolvedModelGroupDefinition.getTargetNamespace(), theResolvedModelGroupDefinition.getName());
+ if (forceResolve || newResolvedModelGroupDefinition.getContainer() != null)
+ {
+ handleNewResolvedModelGroupDefinition(newResolvedModelGroupDefinition);
+ }
+ }
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ analysisState = UNANALYZED;
+ super.traverseToRootForAnalysis();
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ switch (analysisState)
+ {
+ case UNANALYZED:
+ {
+ analysisState = ANALYZING;
+ super.analyze();
+ handleAnalysis();
+ if (analysisState == ANALYZING)
+ {
+ analysisState = ANALYZED;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ case ANALYZED:
+ {
+ return true;
+ }
+ case ANALYZING:
+ case CIRCULAR:
+ default:
+ {
+ analysisState = CIRCULAR;
+ return false;
+ }
+ }
+ }
+
+ protected void handleAnalysis()
+ {
+ XSDModelGroupDefinition theResolvedModelGroupDefinition = getResolvedModelGroupDefinition();
+ if (theResolvedModelGroupDefinition != this && theResolvedModelGroupDefinition.getContainer() != null)
+ {
+ ((XSDConcreteComponentImpl)theResolvedModelGroupDefinition).analyze();
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (getContainer() instanceof XSDSchema || getContainer() instanceof XSDRedefine)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-group",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE
+ });
+
+ checkComplexContent("namedGroup", XSDConstants.PART1, "element-group", theElement);
+ }
+ else
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-group",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ XSDConstants.REF_ATTRIBUTE
+ });
+
+ checkComplexContent("groupRef", XSDConstants.PART1, "element-group", theElement);
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-attributeGroup",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ if (getContainer() instanceof XSDSchema || getContainer() instanceof XSDRedefine)
+ {
+ if (isModelGroupDefinitionReference())
+ {
+ if (theElement == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cvc-complex-type.3", "ref");
+ }
+ }
+ else
+ {
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ "element-group",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+
+ if (isCircular())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "coss-modelGroup.2");
+ }
+
+ if (getModelGroup() != null)
+ {
+ ((XSDModelGroupImpl)getModelGroup()).validateRoot();
+ }
+ }
+ }
+ else
+ {
+ if (isModelGroupDefinitionReference())
+ {
+ XSDModelGroupDefinition theResolvedModelGroupDefinition = getResolvedModelGroupDefinition();
+ if (theResolvedModelGroupDefinition.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedModelGroupDefinition_message", theResolvedModelGroupDefinition.getURI());
+ }
+ }
+ else
+ {
+ if (theElement == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cvc-complex-type.3", "name");
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void patchTargetNamespaceAttribute(XSDSchema xsdSchema)
+ {
+ if (!isModelGroupDefinitionReference())
+ {
+ super.patchTargetNamespaceAttribute(xsdSchema);
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ XSDModelGroupDefinition newResolvedModelGroupDefinition = this;
+ if (changedElement.hasAttributeNS(null, XSDConstants.REF_ATTRIBUTE))
+ {
+ newResolvedModelGroupDefinition =
+ resolveModelGroupDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.REF_ATTRIBUTE));
+ }
+
+ handleNewResolvedModelGroupDefinition(newResolvedModelGroupDefinition);
+ }
+
+ protected void handleNewResolvedModelGroupDefinition(XSDModelGroupDefinition newResolvedModelGroupDefinition)
+ {
+ if (eContainer != null)
+ {
+ EObject parent = eContainer.eContainer();
+ if (parent != null)
+ {
+ parent = parent.eContainer();
+ if (parent != null)
+ {
+ parent = parent.eContainer();
+ if (parent instanceof XSDRedefine)
+ {
+ XSDSchema redefinedSchema = ((XSDRedefine)parent).getIncorporatedSchema();
+ if (redefinedSchema != null)
+ {
+ Map<XSDComponent, XSDComponent> redefinitionMap = ((XSDSchemaImpl)redefinedSchema).getRedefinitionMap();
+ if (redefinitionMap.containsKey(newResolvedModelGroupDefinition))
+ {
+ XSDComponent replacement = redefinitionMap.get(newResolvedModelGroupDefinition);
+ if (replacement != null)
+ {
+ newResolvedModelGroupDefinition = (XSDModelGroupDefinition)replacement;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (newResolvedModelGroupDefinition != getResolvedModelGroupDefinition())
+ {
+ setResolvedModelGroupDefinition(newResolvedModelGroupDefinition);
+ if (getContainer() instanceof XSDParticle)
+ {
+ ((XSDParticle)getContainer()).setTerm(newResolvedModelGroupDefinition.getModelGroup());
+ }
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ if (newContents.isEmpty())
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+ else
+ {
+ XSDModelGroup xsdModelGroup = XSDModelGroupImpl.createModelGroup(child);
+ if (xsdModelGroup != null)
+ {
+ newContents.add(xsdModelGroup);
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_MODEL_GROUP_DEFINITION__ANNOTATION, newContents, remainingContents);
+
+ if (remainingContents.remove(getModelGroup()))
+ {
+ setModelGroup(null);
+ }
+
+ if (!newContents.isEmpty())
+ {
+ setModelGroup((XSDModelGroup)newContents.get(0));
+ }
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION)
+ {
+ XSDModelGroupDefinition theResolvedModelGroupDefinition = getResolvedModelGroupDefinition();
+ if (theResolvedModelGroupDefinition != this)
+ {
+ niceSetAttributeURIValue(theElement, XSDConstants.REF_ATTRIBUTE, theResolvedModelGroupDefinition.getURI());
+
+ if (eReference != null && getContainer() instanceof XSDParticle)
+ {
+ ((XSDParticle)getContainer()).setTerm(theResolvedModelGroupDefinition.getModelGroup());
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ public boolean isModelGroupDefinitionReference()
+ {
+ return this != getResolvedModelGroupDefinition();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDModelGroup getModelGroup()
+ {
+ return modelGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setModelGroup(XSDModelGroup newModelGroup)
+ {
+ if (newModelGroup != modelGroup)
+ {
+ NotificationChain msgs = null;
+ if (modelGroup != null)
+ msgs = ((InternalEObject)modelGroup).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP, null, msgs);
+ if (newModelGroup != null)
+ msgs = ((InternalEObject)newModelGroup).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP, null, msgs);
+ msgs = basicSetModelGroup(newModelGroup, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP, newModelGroup, newModelGroup));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetModelGroup(XSDModelGroup newModelGroup, NotificationChain msgs)
+ {
+ XSDModelGroup oldModelGroup = modelGroup;
+ modelGroup = newModelGroup;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP, oldModelGroup, newModelGroup);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDModelGroupDefinition getResolvedModelGroupDefinition()
+ {
+ return resolvedModelGroupDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setResolvedModelGroupDefinition(XSDModelGroupDefinition newResolvedModelGroupDefinition)
+ {
+ XSDModelGroupDefinition oldResolvedModelGroupDefinition = resolvedModelGroupDefinition;
+ resolvedModelGroupDefinition = newResolvedModelGroupDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION, oldResolvedModelGroupDefinition, resolvedModelGroupDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP:
+ return basicSetModelGroup(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP_DEFINITION_REFERENCE:
+ return isModelGroupDefinitionReference();
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP:
+ return getModelGroup();
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION:
+ return getResolvedModelGroupDefinition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP:
+ setModelGroup((XSDModelGroup)newValue);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION:
+ setResolvedModelGroupDefinition((XSDModelGroupDefinition)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP:
+ setModelGroup((XSDModelGroup)null);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION:
+ setResolvedModelGroupDefinition((XSDModelGroupDefinition)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP_DEFINITION_REFERENCE:
+ return isModelGroupDefinitionReference() != MODEL_GROUP_DEFINITION_REFERENCE_EDEFAULT;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP:
+ return modelGroup != null;
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION:
+ return resolvedModelGroupDefinition != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String getQName()
+ {
+ XSDModelGroupDefinition resolvedModelGroupDefinition = getResolvedModelGroupDefinition();
+ if (resolvedModelGroupDefinition == this)
+ {
+ return super.getQName();
+ }
+ else
+ {
+ return resolvedModelGroupDefinition.getQName(this);
+ }
+ }
+
+ @Override
+ public boolean isNamedComponentReference()
+ {
+ return isModelGroupDefinitionReference();
+ }
+
+ @Override
+ public XSDNamedComponent getResolvedNamedComponent()
+ {
+ return getResolvedModelGroupDefinition();
+ }
+
+ @Override
+ public boolean isCircular()
+ {
+ return analysisState == CIRCULAR;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDModelGroupDefinitionImpl clonedModelGroupDefinition =
+ (XSDModelGroupDefinitionImpl)getXSDFactory().createXSDModelGroupDefinition();
+ clonedModelGroupDefinition.isReconciling = true;
+
+ if (isModelGroupDefinitionReference())
+ {
+ XSDModelGroupDefinition theResolvedModelGroupDefinition = getResolvedModelGroupDefinition();
+ clonedModelGroupDefinition.setResolvedModelGroupDefinition
+ (createUnresolvedModelGroupDefinition
+ (theResolvedModelGroupDefinition.getTargetNamespace(), theResolvedModelGroupDefinition.getName()));
+ }
+ else
+ {
+ if (getName() != null)
+ {
+ clonedModelGroupDefinition.setName(getName());
+ }
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedModelGroupDefinition.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+
+ if (getModelGroup() != null)
+ {
+ clonedModelGroupDefinition.setModelGroup((XSDModelGroup)getModelGroup().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedModelGroupDefinition.setElement(getElement());
+ }
+
+ clonedModelGroupDefinition.isReconciling = shareDOM;
+ return clonedModelGroupDefinition;
+ }
+}
+
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDModelGroupImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDModelGroupImpl.java
new file mode 100644
index 0000000..752d8af
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDModelGroupImpl.java
@@ -0,0 +1,743 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupImpl#getCompositor <em>Compositor</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupImpl#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDModelGroupImpl#getParticles <em>Particles</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDModelGroupImpl
+ extends XSDTermImpl
+ implements XSDModelGroup
+{
+ /**
+ * The default value of the '{@link #getCompositor() <em>Compositor</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompositor()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDCompositor COMPOSITOR_EDEFAULT = XSDCompositor.ALL_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getCompositor() <em>Compositor</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int COMPOSITOR_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getCompositor() <em>Compositor</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int COMPOSITOR_EFLAG_DEFAULT = COMPOSITOR_EDEFAULT.ordinal() << COMPOSITOR_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDCompositor Compositor}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDCompositor[] COMPOSITOR_EFLAG_VALUES = XSDCompositor.values();
+
+ /**
+ * The flags representing the value of the '{@link #getCompositor() <em>Compositor</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompositor()
+ * @generated
+ * @ordered
+ */
+ protected static final int COMPOSITOR_EFLAG = 0x3 << COMPOSITOR_EFLAG_OFFSET;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDParticle> contents;
+
+ /**
+ * The cached value of the '{@link #getParticles() <em>Particles</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getParticles()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDParticle> particles;
+
+ public static XSDModelGroup createModelGroup(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.ALL_ELEMENT:
+ {
+ XSDModelGroup xsdModelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.ALL_LITERAL);
+ xsdModelGroup.setElement((Element)node);
+ return xsdModelGroup;
+ }
+ case XSDConstants.CHOICE_ELEMENT:
+ {
+ XSDModelGroup xsdModelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ xsdModelGroup.setElement((Element)node);
+ return xsdModelGroup;
+ }
+ case XSDConstants.SEQUENCE_ELEMENT:
+ {
+ XSDModelGroup xsdModelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ xsdModelGroup.setElement((Element)node);
+ return xsdModelGroup;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDModelGroupImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_MODEL_GROUP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDCompositor getCompositor()
+ {
+ return COMPOSITOR_EFLAG_VALUES[(eFlags & COMPOSITOR_EFLAG) >>> COMPOSITOR_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCompositor(XSDCompositor newCompositor)
+ {
+ XSDCompositor oldCompositor = COMPOSITOR_EFLAG_VALUES[(eFlags & COMPOSITOR_EFLAG) >>> COMPOSITOR_EFLAG_OFFSET];
+ if (newCompositor == null) newCompositor = COMPOSITOR_EDEFAULT;
+ eFlags = eFlags & ~COMPOSITOR_EFLAG | newCompositor.ordinal() << COMPOSITOR_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP__COMPOSITOR, oldCompositor, newCompositor));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_MODEL_GROUP__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_MODEL_GROUP__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_MODEL_GROUP__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDParticle> getContents()
+ {
+ if (contents == null)
+ {
+ contents = new EObjectContainmentEList<XSDParticle>(XSDParticle.class, this, XSDPackage.XSD_MODEL_GROUP__CONTENTS);
+ }
+ return contents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDParticle> getParticles()
+ {
+ if (particles == null)
+ {
+ particles = new EObjectEList<XSDParticle>(XSDParticle.class, this, XSDPackage.XSD_MODEL_GROUP__PARTICLES);
+ }
+ return particles;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_MODEL_GROUP__CONTENTS:
+ return ((InternalEList<?>)getContents()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP__COMPOSITOR:
+ return getCompositor();
+ case XSDPackage.XSD_MODEL_GROUP__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_MODEL_GROUP__CONTENTS:
+ return getContents();
+ case XSDPackage.XSD_MODEL_GROUP__PARTICLES:
+ return getParticles();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP__COMPOSITOR:
+ setCompositor((XSDCompositor)newValue);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP__CONTENTS:
+ getContents().clear();
+ getContents().addAll((Collection<? extends XSDParticle>)newValue);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP__PARTICLES:
+ getParticles().clear();
+ getParticles().addAll((Collection<? extends XSDParticle>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP__COMPOSITOR:
+ setCompositor(COMPOSITOR_EDEFAULT);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_MODEL_GROUP__CONTENTS:
+ getContents().clear();
+ return;
+ case XSDPackage.XSD_MODEL_GROUP__PARTICLES:
+ getParticles().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_MODEL_GROUP__COMPOSITOR:
+ return (eFlags & COMPOSITOR_EFLAG) != COMPOSITOR_EFLAG_DEFAULT;
+ case XSDPackage.XSD_MODEL_GROUP__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_MODEL_GROUP__CONTENTS:
+ return contents != null && !contents.isEmpty();
+ case XSDPackage.XSD_MODEL_GROUP__PARTICLES:
+ return particles != null && !particles.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (compositor: ");
+ result.append(COMPOSITOR_EFLAG_VALUES[(eFlags & COMPOSITOR_EFLAG) >>> COMPOSITOR_EFLAG_OFFSET]);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ XSDCompositor theCompositor = getCompositor();
+ Element newElement =
+ createElement
+ (XSDCompositor.ALL_LITERAL == theCompositor ?
+ XSDConstants.ALL_ELEMENT :
+ XSDCompositor.CHOICE_LITERAL == theCompositor ?
+ XSDConstants.CHOICE_ELEMENT :
+ XSDConstants.SEQUENCE_ELEMENT);
+
+ setElement(newElement);
+ for (XSDParticle xsdParticle : getContents())
+ {
+ Element newParticleElement = ((XSDConcreteComponentImpl)xsdParticle).createElement();
+ newElement.appendChild(newParticleElement);
+ }
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+
+ List<XSDParticle> newParticles = new ArrayList<XSDParticle>(getContents());
+ Collection<XSDParticle> remainingParticles = new ArrayList<XSDParticle>(getParticles());
+ for (ListIterator<XSDParticle> particles = newParticles.listIterator(); particles.hasNext(); )
+ {
+ XSDParticle xsdParticle = particles.next();
+ if (xsdParticle.getMaxOccurs() == 0)
+ {
+ particles.remove();
+ remainingParticles.add(xsdParticle);
+ }
+ else
+ {
+ remainingParticles.remove(xsdParticle);
+ }
+ }
+
+ if (!remainingParticles.isEmpty())
+ {
+ getParticles().removeAll(remainingParticles);
+ }
+
+ setListContentAndOrder(getParticles(), newParticles);
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ boolean hasBounds = !(getContainer() instanceof XSDModelGroupDefinition);
+ String anchor = null;
+ String contentType = null;
+ switch (getCompositor().getValue())
+ {
+ case XSDCompositor.ALL:
+ {
+ anchor = "element-all";
+ contentType = "all";
+
+ for (XSDParticle xsdParticle : getContents())
+ {
+ switch (xsdParticle.getMaxOccurs())
+ {
+ case 0:
+ case 1:
+ {
+ break;
+ }
+ default:
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-all-limited.2");
+ }
+ }
+ }
+ break;
+ }
+ case XSDCompositor.SEQUENCE:
+ {
+ anchor = "element-sequence";
+ contentType = "explicitGroup";
+ break;
+ }
+ case XSDCompositor.CHOICE:
+ {
+ anchor = "element-choice";
+ contentType = "explicitGroup";
+ break;
+ }
+ }
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ String [] attributes =
+ hasBounds ?
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ XSDConstants.MINOCCURS_ATTRIBUTE
+ } :
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ };
+
+ checkAttributes(XSDConstants.PART1, anchor, theElement, attributes);
+ checkBuiltInTypeConstraint("ID", null, XSDConstants.PART1, anchor, theElement, XSDConstants.ID_ATTRIBUTE, false);
+
+ if (hasBounds)
+ {
+ checkAttributeTypeConstraint
+ (contentType,
+ "maxOccurs",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (contentType,
+ "minOccurs",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ false);
+ }
+
+ checkComplexContent(contentType, XSDConstants.PART1, anchor, theElement);
+ }
+ else
+ {
+ // EATM validate synthesized models too
+ }
+ }
+
+ public void validateRoot()
+ {
+ XSDConcreteComponent diagnosticTarget = this;
+ XSDParticle xsdParticle;
+ if (getContainer() instanceof XSDParticle)
+ {
+ xsdParticle = (XSDParticle)getContainer();
+ if (xsdParticle.eContainmentFeature() == XSDPackage.Literals.XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE)
+ {
+ diagnosticTarget = xsdParticle.getContainer();
+ }
+ }
+ else
+ {
+ xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setTerm(this);
+ }
+
+ XSDParticleImpl.XSDNFA dfa = (XSDParticleImpl.XSDNFA)xsdParticle.getDFA();
+ Collection<XSDDiagnostic> diagnostics = dfa.getDiagnostics();
+ if (!diagnostics.isEmpty())
+ {
+ for (XSDDiagnostic xsdDiagnostic : diagnostics)
+ {
+ xsdDiagnostic.setPrimaryComponent(diagnosticTarget);
+ xsdDiagnostic.setNode(diagnosticTarget.getElement());
+ }
+ getDiagnostics().addAll(diagnostics);
+ }
+ }
+
+ @Override
+ protected boolean isUpdatingDOM()
+ {
+ return
+ super.isUpdatingDOM() ||
+ getContainer() instanceof XSDConcreteComponentImpl &&
+ ((XSDConcreteComponentImpl)getContainer()).isUpdatingDOM();
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDParticle xsdParticle = XSDParticleImpl.createParticle(child);
+ if (xsdParticle != null)
+ {
+ newContents.add(xsdParticle);
+ }
+ else
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ if (xsdAnnotation != null)
+ {
+ if (newContents.isEmpty())
+ {
+ newContents.add(xsdAnnotation);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_MODEL_GROUP__ANNOTATION, newContents, remainingContents);
+
+ if (!remainingContents.isEmpty())
+ {
+ getContents().removeAll(remainingContents);
+ }
+
+ if (!newContents.isEmpty())
+ {
+ @SuppressWarnings("unchecked") List<XSDParticle> list = (List<XSDParticle>)(List<?>)newContents;
+ setListContentAndOrder(getContents(), list);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_MODEL_GROUP__COMPOSITOR)
+ {
+ if (theElement != null && eAttribute != null && !isReconciling)
+ {
+ XSDCompositor theCompositor = getCompositor();
+ Element newElement =
+ createElement
+ (XSDCompositor.ALL_LITERAL == theCompositor ?
+ XSDConstants.ALL_ELEMENT :
+ XSDCompositor.CHOICE_LITERAL == theCompositor ?
+ XSDConstants.CHOICE_ELEMENT :
+ XSDConstants.SEQUENCE_ELEMENT);
+
+ forceReplace(newElement, theElement);
+ setElement(newElement);
+
+ XSDConcreteComponentImpl container = (XSDConcreteComponentImpl)getContainer();
+ if (container instanceof XSDParticle)
+ {
+ ((XSDParticle)container).setElement(newElement);
+ container.changeAttribute(null);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_MODEL_GROUP__CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_MODEL_GROUP__CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ public void moveContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.moveContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_MODEL_GROUP__CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDModelGroupImpl clonedModelGroup =
+ (XSDModelGroupImpl)getXSDFactory().createXSDModelGroup();
+ clonedModelGroup.isReconciling = true;
+
+ clonedModelGroup.setCompositor(getCompositor());
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedModelGroup.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (!getContents().isEmpty())
+ {
+ clonedModelGroup.getContents().addAll(cloneConcreteComponents(getContents(), true, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedModelGroup.setElement(getElement());
+ }
+
+ clonedModelGroup.isReconciling = shareDOM;
+ return clonedModelGroup;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNamedComponentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNamedComponentImpl.java
new file mode 100644
index 0000000..b0e3161
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNamedComponentImpl.java
@@ -0,0 +1,915 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Named Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDNamedComponentImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNamedComponentImpl#getTargetNamespace <em>Target Namespace</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNamedComponentImpl#getAliasName <em>Alias Name</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNamedComponentImpl#getURI <em>URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNamedComponentImpl#getAliasURI <em>Alias URI</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNamedComponentImpl#getQName <em>QName</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDNamedComponentImpl
+ extends XSDComponentImpl
+ implements XSDNamedComponent
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTargetNamespace() <em>Target Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetNamespace()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_NAMESPACE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTargetNamespace() <em>Target Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetNamespace()
+ * @generated
+ * @ordered
+ */
+ protected String targetNamespace = TARGET_NAMESPACE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAliasName() <em>Alias Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAliasName()
+ * @generated
+ * @ordered
+ */
+ protected static final String ALIAS_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getURI() <em>URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String URI_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getAliasURI() <em>Alias URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAliasURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String ALIAS_URI_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getQName() <em>QName</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQName()
+ * @generated
+ * @ordered
+ */
+ protected static final String QNAME_EDEFAULT = null;
+
+ public static List<XSDNamedComponent> sortNamedComponents(Collection<XSDNamedComponent> xsdNamedComponents)
+ {
+ XSDNamedComponent [] objects = new XSDNamedComponent[xsdNamedComponents.size()];
+ xsdNamedComponents.toArray(objects);
+ Arrays.sort(objects, Comparator.getInstance());
+
+ return Arrays.asList(objects);
+ }
+
+ public static <T extends XSDNamedComponent> void addToSortedList(List<T> xsdNamedComponents, T xsdNamedComponent)
+ {
+ int index = Collections.binarySearch(xsdNamedComponents, xsdNamedComponent, Comparator.getInstance());
+ if (index < 0)
+ {
+ xsdNamedComponents.add(-(index + 1), xsdNamedComponent);
+ }
+ else if (xsdNamedComponents.get(index) != xsdNamedComponent)
+ {
+ xsdNamedComponents.add(index, xsdNamedComponent);
+ }
+ }
+
+ public static class XSDNamedComponentList<E extends Object & XSDNamedComponent> extends EObjectEList<E>
+ {
+ private static final long serialVersionUID = 1L;
+
+ protected Map<String, XSDNamedComponent> map;
+ protected XSDSchemaImpl xsdSchema;
+
+ public XSDNamedComponentList(Class<?> dataClass, XSDSchemaImpl owner, int featureID)
+ {
+ super(dataClass, owner, featureID);
+ xsdSchema = owner;
+ }
+
+ protected boolean isFromThisNamespace(XSDNamedComponent xsdNamedComponent)
+ {
+ String targetNamespace = xsdNamedComponent.getTargetNamespace();
+ return targetNamespace == null ? xsdSchema.getTargetNamespace() == null : targetNamespace.equals(xsdSchema.getTargetNamespace());
+ }
+
+ @Override
+ protected void didAdd(int index, Object newObject)
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)newObject;
+ if (isFromThisNamespace(xsdNamedComponent))
+ {
+ if (map == null)
+ {
+ map = new HashMap<String, XSDNamedComponent>();
+ }
+ map.put(xsdNamedComponent.getName(), xsdNamedComponent);
+ }
+ }
+
+ @Override
+ protected void didClear(int size, Object[] oldObjects)
+ {
+ map = null;
+ }
+
+ @Override
+ protected void didRemove(int index, Object oldObject)
+ {
+ if (map != null)
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)oldObject;
+ if (isFromThisNamespace(xsdNamedComponent))
+ {
+ map.values().remove(xsdNamedComponent);
+ }
+ }
+ }
+
+ @Override
+ protected void didSet(int index, Object newObject, Object oldObject)
+ {
+ didRemove(index, oldObject);
+ didAdd(index, newObject);
+ }
+
+ public XSDNamedComponent get(String targetNamespace, String localName)
+ {
+ // If the list is empty, there can't be a match.
+ //
+ if (isEmpty())
+ {
+ return null;
+ }
+
+ // If we are looking up a name in the owning schema's namespace...
+ //
+ if (targetNamespace == null ? xsdSchema.getTargetNamespace() == null : targetNamespace.equals(xsdSchema.getTargetNamespace()))
+ {
+ // Look up the result in the map if there is one.
+ //
+ if (map == null)
+ {
+ return null;
+ }
+ XSDNamedComponent result = map.get(localName);
+ return result;
+ }
+
+ int index =
+ Collections.binarySearch(this, new String [] { targetNamespace, localName}, StringPairComparator.getInstance());
+ if (index < 0)
+ {
+ return null;
+ }
+ else
+ {
+ return this.get(index);
+ }
+ }
+ }
+
+ public static XSDNamedComponent findInSortedList(List<? extends XSDNamedComponent> xsdNamedComponents, String targetNamespace, String localName)
+ {
+ if (xsdNamedComponents instanceof XSDNamedComponentList<?>)
+ {
+ return ((XSDNamedComponentList<? extends XSDNamedComponent>)xsdNamedComponents).get(targetNamespace, localName);
+ }
+ int index =
+ Collections.binarySearch(xsdNamedComponents, new String [] { targetNamespace, localName}, StringPairComparator.getInstance());
+ if (index < 0)
+ {
+ return null;
+ }
+ else
+ {
+ return xsdNamedComponents.get(index);
+ }
+ }
+
+ public static <T extends XSDNamedComponent> void mergeToSortedList(List<T> xsdNamedComponentsTarget, List<T> xsdNamedComponentsSource)
+ {
+ Iterator<T> sourceComponents = xsdNamedComponentsSource.iterator();
+ if (sourceComponents.hasNext())
+ {
+ Comparator comparator = Comparator.getInstance();
+ T sourceComponent = sourceComponents.next();
+ for (ListIterator<T> targetComponents = xsdNamedComponentsTarget.listIterator(); targetComponents.hasNext(); )
+ {
+ T targetComponent = targetComponents.next();
+ if (targetComponent == sourceComponent)
+ {
+ // Do nothing.
+ }
+ else if (comparator.compare(sourceComponent, targetComponent) < 0)
+ {
+ targetComponents.previous();
+ targetComponents.add(sourceComponent);
+ }
+ else
+ {
+ continue;
+ }
+
+ if (sourceComponents.hasNext())
+ {
+ sourceComponent = sourceComponents.next();
+ }
+ else
+ {
+ sourceComponent = null;
+ break;
+ }
+ }
+
+ if (sourceComponent != null)
+ {
+ xsdNamedComponentsTarget.add(sourceComponent);
+ while (sourceComponents.hasNext())
+ {
+ sourceComponent = sourceComponents.next();
+ xsdNamedComponentsTarget.add(sourceComponent);
+ }
+ }
+ }
+ }
+
+ public static class Comparator implements java.util.Comparator<XSDNamedComponent>
+ {
+ protected static Comparator instance = new Comparator();
+
+ public static Comparator getInstance()
+ {
+ if (instance == null)
+ {
+ instance = new Comparator();
+ }
+ return instance;
+ }
+
+ protected XSDPlugin.StringComparator collator = XSDPlugin.INSTANCE.getComparator();
+
+ public Comparator()
+ {
+ super();
+ }
+
+ @Override
+ public boolean equals(Object that)
+ {
+ return this == that;
+ }
+
+ public int compare(XSDNamedComponent xsdNamedComponent1, XSDNamedComponent xsdNamedComponent2)
+ {
+ String name1 = xsdNamedComponent1.getName();
+ String name2 = xsdNamedComponent2.getName();
+ if (name1 == null && name2 == null)
+ {
+ return xsdNamedComponent1.hashCode() - xsdNamedComponent2.hashCode();
+ }
+ else if (name1 == null)
+ {
+ return 1;
+ }
+ else if (name2 == null)
+ {
+ return -1;
+ }
+ else
+ {
+ int result = collator.compare(name1, name2);
+ if (result == 0)
+ {
+ String namespace1 = xsdNamedComponent1.getTargetNamespace();
+ String namespace2 = xsdNamedComponent2.getTargetNamespace();
+ if (namespace1 == null && namespace2 == null)
+ {
+ return xsdNamedComponent1.hashCode() - xsdNamedComponent2.hashCode();
+ }
+ else if (namespace1 == null)
+ {
+ return 1;
+ }
+ else if (namespace2 == null)
+ {
+ return -1;
+ }
+ else
+ {
+ result = collator.compare(namespace1, namespace2);
+ if (result == 0)
+ {
+ result = xsdNamedComponent1.hashCode() - xsdNamedComponent2.hashCode();
+ }
+ return result;
+ }
+ }
+ else
+ {
+ return result;
+ }
+ }
+ }
+ }
+
+ public static class StringPairComparator implements java.util.Comparator<Object>
+ {
+ protected static StringPairComparator instance = new StringPairComparator();
+
+ public static StringPairComparator getInstance()
+ {
+ if (instance == null)
+ {
+ instance = new StringPairComparator();
+ }
+ return instance;
+ }
+
+ protected XSDPlugin.StringComparator collator = XSDPlugin.INSTANCE.getComparator();
+
+ public StringPairComparator()
+ {
+ super();
+ }
+
+ @Override
+ public boolean equals(Object that)
+ {
+ return this == that;
+ }
+
+ public int compare(Object o1, Object o2)
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)o1;
+ String [] strings = (String [])o2;
+ String name1 = xsdNamedComponent.getName();
+ String name2 = strings[1];
+ if (name1 == null && name2 == null)
+ {
+ return 0;
+ }
+ else if (name1 == null)
+ {
+ return 1;
+ }
+ else if (name2 == null)
+ {
+ return -1;
+ }
+ else
+ {
+ int result = collator.compare(name1, name2);
+ if (result == 0)
+ {
+ String namespace1 = xsdNamedComponent.getTargetNamespace();
+ String namespace2 = strings[0];
+ if (namespace1 == null && namespace2 == null)
+ {
+ return 0;
+ }
+ else if (namespace1 == null)
+ {
+ return 1;
+ }
+ else if (namespace2 == null)
+ {
+ return -1;
+ }
+ else
+ {
+ return collator.compare(namespace1, namespace2);
+ }
+ }
+ else
+ {
+ return result;
+ }
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDNamedComponentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_NAMED_COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NAMED_COMPONENT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTargetNamespace()
+ {
+ return targetNamespace;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetNamespace(String newTargetNamespace)
+ {
+ String oldTargetNamespace = targetNamespace;
+ targetNamespace = newTargetNamespace;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NAMED_COMPONENT__TARGET_NAMESPACE, oldTargetNamespace, targetNamespace));
+ }
+
+ @Override
+ protected String getURIReferenceLabel()
+ {
+ return getName();
+ }
+
+ public String getAliasName()
+ {
+ String result = getName();
+ if (result == null)
+ {
+ XSDConcreteComponent container = getContainer();
+ if (container instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)container;
+ String baseName = xsdNamedComponent.getAliasName();
+ if (container instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)container;
+ switch (xsdSimpleTypeDefinition.getVariety().getValue())
+ {
+ case XSDVariety.ATOMIC:
+ {
+ result = baseName + "_._base";
+ break;
+ }
+ case XSDVariety.LIST:
+ {
+ result = baseName + (XSDConstants.isURType(xsdSimpleTypeDefinition.getBaseTypeDefinition()) ? "_._item" : "_._base");
+ break;
+ }
+ case XSDVariety.UNION:
+ {
+ result =
+ baseName +
+ (XSDConstants.isURType(xsdSimpleTypeDefinition.getBaseTypeDefinition()) ?
+ "_._member" + "_._" + xsdSimpleTypeDefinition.getMemberTypeDefinitions().indexOf((XSDSimpleTypeDefinition)this) :
+ "_._base");
+ break;
+ }
+ }
+ }
+ else if (container instanceof XSDComplexTypeDefinition)
+ {
+ result = baseName + "_._base";
+ }
+ else
+ {
+ result = baseName + "_._type";
+ }
+ }
+ }
+ return result;
+ }
+
+ public String getURI()
+ {
+ String theTargetNamespace = getTargetNamespace();
+ if (theTargetNamespace == null)
+ {
+ theTargetNamespace = "";
+ }
+ String theName = getName();
+ if (theName == null)
+ {
+ theName = getAliasName();
+ }
+ return theTargetNamespace + "#" + theName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public String getAliasURI()
+ {
+ XSDSchema xsdSchema = getSchema();
+ String theTargetNamespace = xsdSchema == null ? getTargetNamespace() : xsdSchema.getTargetNamespace();
+ if (theTargetNamespace == null)
+ {
+ theTargetNamespace = "";
+ }
+ String theName = getAliasName();
+ if (theName == null)
+ {
+ theName = getAliasName();
+ }
+ return theTargetNamespace + "#" + theName;
+ }
+
+ public String getQName(XSDConcreteComponent relativeToComponent)
+ {
+ String theName = getName();
+ if (theName != null && relativeToComponent != null)
+ {
+ Element theElement = relativeToComponent.getElement();
+ if (theElement != null)
+ {
+ String qualifier = XSDConstants.lookupQualifier(theElement, getTargetNamespace());
+ if (qualifier != null && qualifier.length() != 0)
+ {
+ return qualifier + ":" + theName;
+ }
+ }
+ }
+
+ return theName;
+ }
+
+ public String getQName()
+ {
+ return getQName(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NAMED_COMPONENT__NAME:
+ return getName();
+ case XSDPackage.XSD_NAMED_COMPONENT__TARGET_NAMESPACE:
+ return getTargetNamespace();
+ case XSDPackage.XSD_NAMED_COMPONENT__ALIAS_NAME:
+ return getAliasName();
+ case XSDPackage.XSD_NAMED_COMPONENT__URI:
+ return getURI();
+ case XSDPackage.XSD_NAMED_COMPONENT__ALIAS_URI:
+ return getAliasURI();
+ case XSDPackage.XSD_NAMED_COMPONENT__QNAME:
+ return getQName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NAMED_COMPONENT__NAME:
+ setName((String)newValue);
+ return;
+ case XSDPackage.XSD_NAMED_COMPONENT__TARGET_NAMESPACE:
+ setTargetNamespace((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NAMED_COMPONENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case XSDPackage.XSD_NAMED_COMPONENT__TARGET_NAMESPACE:
+ setTargetNamespace(TARGET_NAMESPACE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NAMED_COMPONENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case XSDPackage.XSD_NAMED_COMPONENT__TARGET_NAMESPACE:
+ return TARGET_NAMESPACE_EDEFAULT == null ? targetNamespace != null : !TARGET_NAMESPACE_EDEFAULT.equals(targetNamespace);
+ case XSDPackage.XSD_NAMED_COMPONENT__ALIAS_NAME:
+ return ALIAS_NAME_EDEFAULT == null ? getAliasName() != null : !ALIAS_NAME_EDEFAULT.equals(getAliasName());
+ case XSDPackage.XSD_NAMED_COMPONENT__URI:
+ return URI_EDEFAULT == null ? getURI() != null : !URI_EDEFAULT.equals(getURI());
+ case XSDPackage.XSD_NAMED_COMPONENT__ALIAS_URI:
+ return ALIAS_URI_EDEFAULT == null ? getAliasURI() != null : !ALIAS_URI_EDEFAULT.equals(getAliasURI());
+ case XSDPackage.XSD_NAMED_COMPONENT__QNAME:
+ return QNAME_EDEFAULT == null ? getQName() != null : !QNAME_EDEFAULT.equals(getQName());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", targetNamespace: ");
+ result.append(targetNamespace);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ protected void patch()
+ {
+ patchTargetNamespaceAttribute();
+ super.patch();
+ }
+
+ protected void patchTargetNamespaceAttribute()
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ patchTargetNamespaceAttribute(xsdSchema);
+ }
+ }
+
+ protected void patchTargetNamespaceAttribute(XSDSchema xsdSchema)
+ {
+ String newTargetNamespace = xsdSchema.getTargetNamespace();
+ if (newTargetNamespace == null ? getTargetNamespace() != null : !newTargetNamespace.equals(getTargetNamespace()))
+ {
+ setTargetNamespace(newTargetNamespace);
+ }
+ }
+
+ @Override
+ protected void adoptBy(XSDSchema xsdSchema)
+ {
+ patchTargetNamespaceAttribute(xsdSchema);
+ super.adoptBy(xsdSchema);
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+ if (changedElement == getElement())
+ {
+ reconcileNameAttribute();
+ }
+ }
+
+ protected void reconcileNameAttribute()
+ {
+ Element theElement = getElement();
+ if (theElement.hasAttributeNS(null, XSDConstants.NAME_ATTRIBUTE))
+ {
+ String newName = XMLTypeUtil.normalize(theElement.getAttributeNS(null, XSDConstants.NAME_ATTRIBUTE), true);
+ if (!newName.equals(getName()))
+ {
+ setName(newName);
+ }
+ }
+ else if (getName() != null)
+ {
+ setName(null);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (!isNamedComponentReference())
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_NAMED_COMPONENT__NAME)
+ {
+ if (eAttribute != null)
+ {
+ XSDSchemaImpl xsdSchema = (XSDSchemaImpl)getSchema();
+ if (xsdSchema != null)
+ {
+ xsdSchema.updateSortedList(this);
+ }
+ }
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.NAME_ATTRIBUTE, getName());
+ }
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ }
+ }
+
+ public boolean isNamedComponentReference()
+ {
+ return false;
+ }
+
+ public XSDNamedComponent getResolvedNamedComponent()
+ {
+ return this;
+ }
+
+ public boolean hasSameNameAndTargetNamespace(XSDNamedComponent xsdNamedComponent)
+ {
+ return
+ (getTargetNamespace() == null ?
+ xsdNamedComponent.getTargetNamespace() == null :
+ getTargetNamespace().equals(xsdNamedComponent.getTargetNamespace())) &&
+ (getName() == null ?
+ xsdNamedComponent.getName() == null :
+ getName().equals(xsdNamedComponent.getName()));
+
+ }
+
+ public boolean hasNameAndTargetNamespace(String name, String targetNamespace)
+ {
+ return
+ (targetNamespace == null ?
+ getTargetNamespace() == null :
+ targetNamespace.equals(getTargetNamespace())) &&
+ (name == null ?
+ getName() == null :
+ name.equals(getName()));
+ }
+
+ public boolean hasURI(String uri)
+ {
+ String theTargetNamespace = getTargetNamespace();
+ if (theTargetNamespace == null)
+ {
+ theTargetNamespace = "";
+ }
+ String theName = getName();
+ if (theName == null)
+ {
+ theName = "";
+ }
+
+ return
+ uri.startsWith(theTargetNamespace) &&
+ uri.endsWith(theName) &&
+ uri.length() == theName.length() + theTargetNamespace.length() + 1;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNotationDeclarationImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNotationDeclarationImpl.java
new file mode 100644
index 0000000..dc80f9f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNotationDeclarationImpl.java
@@ -0,0 +1,507 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Notation Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDNotationDeclarationImpl#getSystemIdentifier <em>System Identifier</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNotationDeclarationImpl#getPublicIdentifier <em>Public Identifier</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDNotationDeclarationImpl#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDNotationDeclarationImpl
+ extends XSDNamedComponentImpl
+ implements XSDNotationDeclaration
+{
+ /**
+ * The default value of the '{@link #getSystemIdentifier() <em>System Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSystemIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String SYSTEM_IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSystemIdentifier() <em>System Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSystemIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected String systemIdentifier = SYSTEM_IDENTIFIER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPublicIdentifier() <em>Public Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPublicIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String PUBLIC_IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPublicIdentifier() <em>Public Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPublicIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected String publicIdentifier = PUBLIC_IDENTIFIER_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ public static XSDNotationDeclaration createNotationDeclaration(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.NOTATION_ELEMENT)
+ {
+ XSDNotationDeclaration xsdNotationDeclaration = XSDFactory.eINSTANCE.createXSDNotationDeclaration();
+ xsdNotationDeclaration.setElement((Element)node);
+ return xsdNotationDeclaration;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDNotationDeclarationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_NOTATION_DECLARATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSystemIdentifier()
+ {
+ return systemIdentifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSystemIdentifier(String newSystemIdentifier)
+ {
+ String oldSystemIdentifier = systemIdentifier;
+ systemIdentifier = newSystemIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER, oldSystemIdentifier, systemIdentifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPublicIdentifier()
+ {
+ return publicIdentifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPublicIdentifier(String newPublicIdentifier)
+ {
+ String oldPublicIdentifier = publicIdentifier;
+ publicIdentifier = newPublicIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER, oldPublicIdentifier, publicIdentifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER:
+ return getSystemIdentifier();
+ case XSDPackage.XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER:
+ return getPublicIdentifier();
+ case XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION:
+ return getAnnotation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER:
+ setSystemIdentifier((String)newValue);
+ return;
+ case XSDPackage.XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER:
+ setPublicIdentifier((String)newValue);
+ return;
+ case XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER:
+ setSystemIdentifier(SYSTEM_IDENTIFIER_EDEFAULT);
+ return;
+ case XSDPackage.XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER:
+ setPublicIdentifier(PUBLIC_IDENTIFIER_EDEFAULT);
+ return;
+ case XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER:
+ return SYSTEM_IDENTIFIER_EDEFAULT == null ? systemIdentifier != null : !SYSTEM_IDENTIFIER_EDEFAULT.equals(systemIdentifier);
+ case XSDPackage.XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER:
+ return PUBLIC_IDENTIFIER_EDEFAULT == null ? publicIdentifier != null : !PUBLIC_IDENTIFIER_EDEFAULT.equals(publicIdentifier);
+ case XSDPackage.XSD_NOTATION_DECLARATION__ANNOTATION:
+ return annotation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (systemIdentifier: ");
+ result.append(systemIdentifier);
+ result.append(", publicIdentifier: ");
+ result.append(publicIdentifier);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.NOTATION_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-notation",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE,
+ XSDConstants.PUBLIC_ATTRIBUTE,
+ XSDConstants.SYSTEM_ATTRIBUTE
+ });
+
+ checkComplexContent("annotated", XSDConstants.PART1, "element-notation", theElement);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-notation",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART1,
+ "element-notation",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+
+ checkBuiltInTypeConstraint
+ ("public",
+ getPublicIdentifier(),
+ XSDConstants.PART1,
+ "element-notation",
+ theElement,
+ XSDConstants.PUBLIC_ATTRIBUTE,
+ true);
+
+ checkBuiltInTypeConstraint
+ ("anyURI",
+ getSystemIdentifier(),
+ XSDConstants.PART1,
+ "element-notation",
+ theElement,
+ XSDConstants.SYSTEM_ATTRIBUTE,
+ false);
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.PUBLIC_ATTRIBUTE))
+ {
+ String newPublicIdentifier = changedElement.getAttributeNS(null, XSDConstants.PUBLIC_ATTRIBUTE);
+
+ if (newPublicIdentifier == null || !newPublicIdentifier.equals(getPublicIdentifier()))
+ {
+ setPublicIdentifier(newPublicIdentifier);
+ }
+ }
+ else if (getPublicIdentifier() != null)
+ {
+ setPublicIdentifier(null);
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.SYSTEM_ATTRIBUTE))
+ {
+ String newSystemIdentifier = changedElement.getAttributeNS(null, XSDConstants.SYSTEM_ATTRIBUTE);
+
+ if (newSystemIdentifier == null || !newSystemIdentifier.equals(getSystemIdentifier()))
+ {
+ setSystemIdentifier(newSystemIdentifier);
+ }
+ }
+ else if (getSystemIdentifier() != null)
+ {
+ setSystemIdentifier(null);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeAttribute(eAttribute);
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.PUBLIC_ATTRIBUTE, getPublicIdentifier());
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.SYSTEM_ATTRIBUTE, getSystemIdentifier());
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDNotationDeclarationImpl clonedNotationDeclaration =
+ (XSDNotationDeclarationImpl)getXSDFactory().createXSDNotationDeclaration();
+ clonedNotationDeclaration.isReconciling = true;
+
+ if (getName() != null)
+ {
+ clonedNotationDeclaration.setName(getName());
+ }
+ clonedNotationDeclaration.setPublicIdentifier(getPublicIdentifier());
+ clonedNotationDeclaration.setSystemIdentifier(getSystemIdentifier());
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedNotationDeclaration.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedNotationDeclaration.setElement(getElement());
+ }
+
+ clonedNotationDeclaration.isReconciling = shareDOM;
+ return clonedNotationDeclaration;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNumericFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNumericFacetImpl.java
new file mode 100644
index 0000000..051d07d
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDNumericFacetImpl.java
@@ -0,0 +1,191 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDNumericFacet;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Numeric Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDNumericFacetImpl#isValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDNumericFacetImpl
+ extends XSDFundamentalFacetImpl
+ implements XSDNumericFacet
+{
+ /**
+ * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean VALUE_EDEFAULT = false;
+
+ /**
+ * The flag representing the value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG = 1 << 8;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDNumericFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_NUMERIC_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isValue()
+ {
+ return (eFlags & VALUE_EFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(boolean newValue)
+ {
+ boolean oldValue = (eFlags & VALUE_EFLAG) != 0;
+ if (newValue) eFlags |= VALUE_EFLAG; else eFlags &= ~VALUE_EFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_NUMERIC_FACET__VALUE, oldValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NUMERIC_FACET__VALUE:
+ return isValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NUMERIC_FACET__VALUE:
+ setValue((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NUMERIC_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_NUMERIC_FACET__VALUE:
+ return ((eFlags & VALUE_EFLAG) != 0) != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append((eFlags & VALUE_EFLAG) != 0);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return isValue() ? Boolean.TRUE : Boolean.FALSE;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDOrderedFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDOrderedFacetImpl.java
new file mode 100644
index 0000000..5138e36
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDOrderedFacetImpl.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDOrdered;
+import org.eclipse.xsd.XSDOrderedFacet;
+import org.eclipse.xsd.XSDPackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ordered Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDOrderedFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDOrderedFacetImpl
+ extends XSDFundamentalFacetImpl
+ implements XSDOrderedFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDOrdered VALUE_EDEFAULT = XSDOrdered.FALSE_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG_DEFAULT = VALUE_EDEFAULT.ordinal() << VALUE_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDOrdered Ordered}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDOrdered[] VALUE_EFLAG_VALUES = XSDOrdered.values();
+
+ /**
+ * The flags representing the value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG = 0x3 << VALUE_EFLAG_OFFSET;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDOrderedFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_ORDERED_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDOrdered getValue()
+ {
+ return VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(XSDOrdered newValue)
+ {
+ XSDOrdered oldValue = VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET];
+ if (newValue == null) newValue = VALUE_EDEFAULT;
+ eFlags = eFlags & ~VALUE_EFLAG | newValue.ordinal() << VALUE_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_ORDERED_FACET__VALUE, oldValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ORDERED_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ORDERED_FACET__VALUE:
+ setValue((XSDOrdered)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ORDERED_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_ORDERED_FACET__VALUE:
+ return (eFlags & VALUE_EFLAG) != VALUE_EFLAG_DEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET]);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDPackageImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDPackageImpl.java
new file mode 100644
index 0000000..5ac2267
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDPackageImpl.java
@@ -0,0 +1,4751 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDBoundedFacet;
+import org.eclipse.xsd.XSDCardinality;
+import org.eclipse.xsd.XSDCardinalityFacet;
+import org.eclipse.xsd.XSDComplexFinal;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstrainingFacet;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDContentTypeCategory;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDDisallowedSubstitutions;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDFundamentalFacet;
+import org.eclipse.xsd.XSDIdentityConstraintCategory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDNamespaceConstraintCategory;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDNumericFacet;
+import org.eclipse.xsd.XSDOrdered;
+import org.eclipse.xsd.XSDOrderedFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDProcessContents;
+import org.eclipse.xsd.XSDProhibitedSubstitutions;
+import org.eclipse.xsd.XSDRedefinableComponent;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDRedefineContent;
+import org.eclipse.xsd.XSDRepeatableFacet;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaCompositor;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDScope;
+import org.eclipse.xsd.XSDSimpleFinal;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDSubstitutionGroupExclusions;
+import org.eclipse.xsd.XSDTerm;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.XSDXPathVariety;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XSDPackageImpl
+ extends EPackageImpl
+ implements XSDPackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdAnnotationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdAttributeDeclarationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdAttributeGroupContentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdAttributeGroupDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdAttributeUseEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdBoundedFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdCardinalityFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdComplexTypeContentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdComplexTypeDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdConcreteComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdConstrainingFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdDiagnosticEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdElementDeclarationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdEnumerationFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdFeatureEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdFixedFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdFractionDigitsFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdFundamentalFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdIdentityConstraintDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdImportEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdIncludeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdLengthFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMaxExclusiveFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMaxFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMaxInclusiveFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMaxLengthFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMinExclusiveFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMinFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMinInclusiveFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMinLengthFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdModelGroupEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdModelGroupDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdNamedComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdNotationDeclarationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdNumericFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdOrderedFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdParticleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdParticleContentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdPatternFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdRedefinableComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdRedefineContentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdRedefineEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdRepeatableFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdSchemaEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdSchemaCompositorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdSchemaContentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdSchemaDirectiveEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdScopeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdSimpleTypeDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdTermEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdTotalDigitsFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdTypeDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdWhiteSpaceFacetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdWildcardEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdxPathDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdAttributeUseCategoryEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdCardinalityEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdComplexFinalEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdCompositorEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdConstraintEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdContentTypeCategoryEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdDerivationMethodEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdDiagnosticSeverityEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdDisallowedSubstitutionsEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdFormEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdIdentityConstraintCategoryEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdNamespaceConstraintCategoryEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdOrderedEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdProcessContentsEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdProhibitedSubstitutionsEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdSimpleFinalEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdSubstitutionGroupExclusionsEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdVarietyEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdWhiteSpaceEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum xsdxPathVarietyEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType domAttrEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType domDocumentEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType domElementEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType domNodeEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType valueEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.xsd.XSDPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private XSDPackageImpl()
+ {
+ super(eNS_URI, XSDFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDAnnotation()
+ {
+ return xsdAnnotationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAnnotation_ApplicationInformation()
+ {
+ return (EAttribute)xsdAnnotationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAnnotation_UserInformation()
+ {
+ return (EAttribute)xsdAnnotationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAnnotation_Attributes()
+ {
+ return (EAttribute)xsdAnnotationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDAttributeDeclaration()
+ {
+ return xsdAttributeDeclarationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeDeclaration_AttributeDeclarationReference()
+ {
+ return (EAttribute)xsdAttributeDeclarationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeDeclaration_Annotation()
+ {
+ return (EReference)xsdAttributeDeclarationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeDeclaration_AnonymousTypeDefinition()
+ {
+ return (EReference)xsdAttributeDeclarationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeDeclaration_TypeDefinition()
+ {
+ return (EReference)xsdAttributeDeclarationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeDeclaration_ResolvedAttributeDeclaration()
+ {
+ return (EReference)xsdAttributeDeclarationEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDAttributeGroupContent()
+ {
+ return xsdAttributeGroupContentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDAttributeGroupDefinition()
+ {
+ return xsdAttributeGroupDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeGroupDefinition_AttributeGroupDefinitionReference()
+ {
+ return (EAttribute)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_Annotation()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_Contents()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_AttributeUses()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_AttributeWildcardContent()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_AttributeWildcard()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_ResolvedAttributeGroupDefinition()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeGroupDefinition_SyntheticWildcard()
+ {
+ return (EReference)xsdAttributeGroupDefinitionEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDAttributeUse()
+ {
+ return xsdAttributeUseEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeUse_Required()
+ {
+ return (EAttribute)xsdAttributeUseEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeUse_Value()
+ {
+ return (EAttribute)xsdAttributeUseEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeUse_Constraint()
+ {
+ return (EAttribute)xsdAttributeUseEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeUse_Use()
+ {
+ return (EAttribute)xsdAttributeUseEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDAttributeUse_LexicalValue()
+ {
+ return (EAttribute)xsdAttributeUseEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeUse_AttributeDeclaration()
+ {
+ return (EReference)xsdAttributeUseEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDAttributeUse_Content()
+ {
+ return (EReference)xsdAttributeUseEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDBoundedFacet()
+ {
+ return xsdBoundedFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDBoundedFacet_Value()
+ {
+ return (EAttribute)xsdBoundedFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDCardinalityFacet()
+ {
+ return xsdCardinalityFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDCardinalityFacet_Value()
+ {
+ return (EAttribute)xsdCardinalityFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDComplexTypeContent()
+ {
+ return xsdComplexTypeContentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDComplexTypeDefinition()
+ {
+ return xsdComplexTypeDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_DerivationMethod()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_Final()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_Abstract()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_ContentTypeCategory()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_ProhibitedSubstitutions()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_LexicalFinal()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_Block()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDComplexTypeDefinition_Mixed()
+ {
+ return (EAttribute)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_ContentAnnotation()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_BaseTypeDefinition()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_Content()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_ContentType()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_AttributeUses()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_AttributeContents()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_AttributeWildcard()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_AttributeWildcardContent()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_RootTypeDefinition()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_SyntheticParticle()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDComplexTypeDefinition_SyntheticWildcard()
+ {
+ return (EReference)xsdComplexTypeDefinitionEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDComponent()
+ {
+ return xsdComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDConcreteComponent()
+ {
+ return xsdConcreteComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDConcreteComponent_Element()
+ {
+ return (EAttribute)xsdConcreteComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDConcreteComponent_Container()
+ {
+ return (EReference)xsdConcreteComponentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDConcreteComponent_RootContainer()
+ {
+ return (EReference)xsdConcreteComponentEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDConcreteComponent_Schema()
+ {
+ return (EReference)xsdConcreteComponentEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDConcreteComponent_Diagnostics()
+ {
+ return (EReference)xsdConcreteComponentEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDConstrainingFacet()
+ {
+ return xsdConstrainingFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDDiagnostic()
+ {
+ return xsdDiagnosticEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Severity()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Message()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_LocationURI()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Line()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Column()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Node()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_AnnotationURI()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Key()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDDiagnostic_Substitutions()
+ {
+ return (EAttribute)xsdDiagnosticEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDDiagnostic_Components()
+ {
+ return (EReference)xsdDiagnosticEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDDiagnostic_PrimaryComponent()
+ {
+ return (EReference)xsdDiagnosticEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDElementDeclaration()
+ {
+ return xsdElementDeclarationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_Nillable()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_DisallowedSubstitutions()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_SubstitutionGroupExclusions()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_Abstract()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_LexicalFinal()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_Block()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_ElementDeclarationReference()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDElementDeclaration_Circular()
+ {
+ return (EAttribute)xsdElementDeclarationEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_Annotation()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_AnonymousTypeDefinition()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_TypeDefinition()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_IdentityConstraintDefinitions()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_ResolvedElementDeclaration()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_SubstitutionGroupAffiliation()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDElementDeclaration_SubstitutionGroup()
+ {
+ return (EReference)xsdElementDeclarationEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDEnumerationFacet()
+ {
+ return xsdEnumerationFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDEnumerationFacet_Value()
+ {
+ return (EAttribute)xsdEnumerationFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDFacet()
+ {
+ return xsdFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFacet_LexicalValue()
+ {
+ return (EAttribute)xsdFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFacet_FacetName()
+ {
+ return (EAttribute)xsdFacetEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFacet_EffectiveValue()
+ {
+ return (EAttribute)xsdFacetEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDFacet_Annotation()
+ {
+ return (EReference)xsdFacetEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDFacet_SimpleTypeDefinition()
+ {
+ return (EReference)xsdFacetEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDFeature()
+ {
+ return xsdFeatureEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFeature_Value()
+ {
+ return (EAttribute)xsdFeatureEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFeature_Constraint()
+ {
+ return (EAttribute)xsdFeatureEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFeature_Form()
+ {
+ return (EAttribute)xsdFeatureEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFeature_LexicalValue()
+ {
+ return (EAttribute)xsdFeatureEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFeature_Global()
+ {
+ return (EAttribute)xsdFeatureEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFeature_FeatureReference()
+ {
+ return (EAttribute)xsdFeatureEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDFeature_Scope()
+ {
+ return (EReference)xsdFeatureEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDFeature_ResolvedFeature()
+ {
+ return (EReference)xsdFeatureEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDFeature_Type()
+ {
+ return (EReference)xsdFeatureEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDFixedFacet()
+ {
+ return xsdFixedFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFixedFacet_Fixed()
+ {
+ return (EAttribute)xsdFixedFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDFractionDigitsFacet()
+ {
+ return xsdFractionDigitsFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDFractionDigitsFacet_Value()
+ {
+ return (EAttribute)xsdFractionDigitsFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDFundamentalFacet()
+ {
+ return xsdFundamentalFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDIdentityConstraintDefinition()
+ {
+ return xsdIdentityConstraintDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDIdentityConstraintDefinition_IdentityConstraintCategory()
+ {
+ return (EAttribute)xsdIdentityConstraintDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDIdentityConstraintDefinition_Annotation()
+ {
+ return (EReference)xsdIdentityConstraintDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDIdentityConstraintDefinition_ReferencedKey()
+ {
+ return (EReference)xsdIdentityConstraintDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDIdentityConstraintDefinition_Selector()
+ {
+ return (EReference)xsdIdentityConstraintDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDIdentityConstraintDefinition_Fields()
+ {
+ return (EReference)xsdIdentityConstraintDefinitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDImport()
+ {
+ return xsdImportEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDImport_Namespace()
+ {
+ return (EAttribute)xsdImportEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDImport_Annotation()
+ {
+ return (EReference)xsdImportEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDInclude()
+ {
+ return xsdIncludeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDInclude_Annotation()
+ {
+ return (EReference)xsdIncludeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDLengthFacet()
+ {
+ return xsdLengthFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDLengthFacet_Value()
+ {
+ return (EAttribute)xsdLengthFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMaxExclusiveFacet()
+ {
+ return xsdMaxExclusiveFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMaxFacet()
+ {
+ return xsdMaxFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMaxFacet_Value()
+ {
+ return (EAttribute)xsdMaxFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMaxFacet_Inclusive()
+ {
+ return (EAttribute)xsdMaxFacetEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMaxFacet_Exclusive()
+ {
+ return (EAttribute)xsdMaxFacetEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMaxInclusiveFacet()
+ {
+ return xsdMaxInclusiveFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMaxLengthFacet()
+ {
+ return xsdMaxLengthFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMaxLengthFacet_Value()
+ {
+ return (EAttribute)xsdMaxLengthFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMinExclusiveFacet()
+ {
+ return xsdMinExclusiveFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMinFacet()
+ {
+ return xsdMinFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMinFacet_Value()
+ {
+ return (EAttribute)xsdMinFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMinFacet_Inclusive()
+ {
+ return (EAttribute)xsdMinFacetEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMinFacet_Exclusive()
+ {
+ return (EAttribute)xsdMinFacetEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMinInclusiveFacet()
+ {
+ return xsdMinInclusiveFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDMinLengthFacet()
+ {
+ return xsdMinLengthFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDMinLengthFacet_Value()
+ {
+ return (EAttribute)xsdMinLengthFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDModelGroup()
+ {
+ return xsdModelGroupEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDModelGroup_Compositor()
+ {
+ return (EAttribute)xsdModelGroupEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDModelGroup_Annotation()
+ {
+ return (EReference)xsdModelGroupEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDModelGroup_Contents()
+ {
+ return (EReference)xsdModelGroupEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDModelGroup_Particles()
+ {
+ return (EReference)xsdModelGroupEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDModelGroupDefinition()
+ {
+ return xsdModelGroupDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDModelGroupDefinition_ModelGroupDefinitionReference()
+ {
+ return (EAttribute)xsdModelGroupDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDModelGroupDefinition_Annotation()
+ {
+ return (EReference)xsdModelGroupDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDModelGroupDefinition_ModelGroup()
+ {
+ return (EReference)xsdModelGroupDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDModelGroupDefinition_ResolvedModelGroupDefinition()
+ {
+ return (EReference)xsdModelGroupDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDNamedComponent()
+ {
+ return xsdNamedComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNamedComponent_Name()
+ {
+ return (EAttribute)xsdNamedComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNamedComponent_TargetNamespace()
+ {
+ return (EAttribute)xsdNamedComponentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNamedComponent_AliasName()
+ {
+ return (EAttribute)xsdNamedComponentEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNamedComponent_URI()
+ {
+ return (EAttribute)xsdNamedComponentEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNamedComponent_AliasURI()
+ {
+ return (EAttribute)xsdNamedComponentEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNamedComponent_QName()
+ {
+ return (EAttribute)xsdNamedComponentEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDNotationDeclaration()
+ {
+ return xsdNotationDeclarationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNotationDeclaration_SystemIdentifier()
+ {
+ return (EAttribute)xsdNotationDeclarationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNotationDeclaration_PublicIdentifier()
+ {
+ return (EAttribute)xsdNotationDeclarationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDNotationDeclaration_Annotation()
+ {
+ return (EReference)xsdNotationDeclarationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDNumericFacet()
+ {
+ return xsdNumericFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDNumericFacet_Value()
+ {
+ return (EAttribute)xsdNumericFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDOrderedFacet()
+ {
+ return xsdOrderedFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDOrderedFacet_Value()
+ {
+ return (EAttribute)xsdOrderedFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDParticle()
+ {
+ return xsdParticleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDParticle_MinOccurs()
+ {
+ return (EAttribute)xsdParticleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDParticle_MaxOccurs()
+ {
+ return (EAttribute)xsdParticleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDParticle_Content()
+ {
+ return (EReference)xsdParticleEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDParticle_Term()
+ {
+ return (EReference)xsdParticleEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDParticleContent()
+ {
+ return xsdParticleContentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDPatternFacet()
+ {
+ return xsdPatternFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDPatternFacet_Value()
+ {
+ return (EAttribute)xsdPatternFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDRedefinableComponent()
+ {
+ return xsdRedefinableComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDRedefinableComponent_Circular()
+ {
+ return (EAttribute)xsdRedefinableComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDRedefineContent()
+ {
+ return xsdRedefineContentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDRedefine()
+ {
+ return xsdRedefineEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDRedefine_Annotations()
+ {
+ return (EReference)xsdRedefineEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDRedefine_Contents()
+ {
+ return (EReference)xsdRedefineEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDRepeatableFacet()
+ {
+ return xsdRepeatableFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDRepeatableFacet_Annotations()
+ {
+ return (EReference)xsdRepeatableFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDSchema()
+ {
+ return xsdSchemaEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_Document()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_SchemaLocation()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_TargetNamespace()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_AttributeFormDefault()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_ElementFormDefault()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_FinalDefault()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_BlockDefault()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchema_Version()
+ {
+ return (EAttribute)xsdSchemaEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_Contents()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_ElementDeclarations()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_AttributeDeclarations()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_AttributeGroupDefinitions()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_TypeDefinitions()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_ModelGroupDefinitions()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_IdentityConstraintDefinitions()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_NotationDeclarations()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_Annotations()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_AllDiagnostics()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_ReferencingDirectives()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_RootVersion()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(19);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_OriginalVersion()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(20);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_IncorporatedVersions()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(21);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchema_SchemaForSchema()
+ {
+ return (EReference)xsdSchemaEClass.getEStructuralFeatures().get(22);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDSchemaCompositor()
+ {
+ return xsdSchemaCompositorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchemaCompositor_IncorporatedSchema()
+ {
+ return (EReference)xsdSchemaCompositorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDSchemaContent()
+ {
+ return xsdSchemaContentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDSchemaDirective()
+ {
+ return xsdSchemaDirectiveEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSchemaDirective_SchemaLocation()
+ {
+ return (EAttribute)xsdSchemaDirectiveEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSchemaDirective_ResolvedSchema()
+ {
+ return (EReference)xsdSchemaDirectiveEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDScope()
+ {
+ return xsdScopeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDSimpleTypeDefinition()
+ {
+ return xsdSimpleTypeDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSimpleTypeDefinition_Variety()
+ {
+ return (EAttribute)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSimpleTypeDefinition_Final()
+ {
+ return (EAttribute)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSimpleTypeDefinition_LexicalFinal()
+ {
+ return (EAttribute)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDSimpleTypeDefinition_ValidFacets()
+ {
+ return (EAttribute)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_Contents()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_FacetContents()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_Facets()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MemberTypeDefinitions()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_FundamentalFacets()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_BaseTypeDefinition()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_PrimitiveTypeDefinition()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_ItemTypeDefinition()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_RootTypeDefinition()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MinFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MaxFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MaxInclusiveFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MinInclusiveFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MinExclusiveFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MaxExclusiveFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_LengthFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(19);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_WhiteSpaceFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(20);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EnumerationFacets()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(21);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_PatternFacets()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(22);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_CardinalityFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(23);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_NumericFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(24);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MaxLengthFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(25);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_MinLengthFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(26);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_TotalDigitsFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(27);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_FractionDigitsFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(28);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_OrderedFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(29);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_BoundedFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(30);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveMaxFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(31);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveWhiteSpaceFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(32);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveMaxLengthFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(33);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveFractionDigitsFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(34);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectivePatternFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(35);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveEnumerationFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(36);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveTotalDigitsFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(37);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveMinLengthFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(38);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveLengthFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(39);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_EffectiveMinFacet()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(40);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDSimpleTypeDefinition_SyntheticFacets()
+ {
+ return (EReference)xsdSimpleTypeDefinitionEClass.getEStructuralFeatures().get(41);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDTerm()
+ {
+ return xsdTermEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDTotalDigitsFacet()
+ {
+ return xsdTotalDigitsFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDTotalDigitsFacet_Value()
+ {
+ return (EAttribute)xsdTotalDigitsFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDTypeDefinition()
+ {
+ return xsdTypeDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_Annotation()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_DerivationAnnotation()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_Annotations()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_RootType()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_BaseType()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_SimpleType()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDTypeDefinition_ComplexType()
+ {
+ return (EReference)xsdTypeDefinitionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDWhiteSpaceFacet()
+ {
+ return xsdWhiteSpaceFacetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDWhiteSpaceFacet_Value()
+ {
+ return (EAttribute)xsdWhiteSpaceFacetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDWildcard()
+ {
+ return xsdWildcardEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDWildcard_NamespaceConstraintCategory()
+ {
+ return (EAttribute)xsdWildcardEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDWildcard_NamespaceConstraint()
+ {
+ return (EAttribute)xsdWildcardEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDWildcard_ProcessContents()
+ {
+ return (EAttribute)xsdWildcardEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDWildcard_LexicalNamespaceConstraint()
+ {
+ return (EAttribute)xsdWildcardEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDWildcard_Annotation()
+ {
+ return (EReference)xsdWildcardEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDWildcard_Annotations()
+ {
+ return (EReference)xsdWildcardEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getXSDXPathDefinition()
+ {
+ return xsdxPathDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDXPathDefinition_Variety()
+ {
+ return (EAttribute)xsdxPathDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getXSDXPathDefinition_Value()
+ {
+ return (EAttribute)xsdxPathDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getXSDXPathDefinition_Annotation()
+ {
+ return (EReference)xsdxPathDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDAttributeUseCategory()
+ {
+ return xsdAttributeUseCategoryEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDCardinality()
+ {
+ return xsdCardinalityEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDComplexFinal()
+ {
+ return xsdComplexFinalEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDCompositor()
+ {
+ return xsdCompositorEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDConstraint()
+ {
+ return xsdConstraintEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDContentTypeCategory()
+ {
+ return xsdContentTypeCategoryEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDDerivationMethod()
+ {
+ return xsdDerivationMethodEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDDiagnosticSeverity()
+ {
+ return xsdDiagnosticSeverityEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDDisallowedSubstitutions()
+ {
+ return xsdDisallowedSubstitutionsEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDForm()
+ {
+ return xsdFormEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDIdentityConstraintCategory()
+ {
+ return xsdIdentityConstraintCategoryEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDNamespaceConstraintCategory()
+ {
+ return xsdNamespaceConstraintCategoryEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDOrdered()
+ {
+ return xsdOrderedEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDProcessContents()
+ {
+ return xsdProcessContentsEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDProhibitedSubstitutions()
+ {
+ return xsdProhibitedSubstitutionsEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDSimpleFinal()
+ {
+ return xsdSimpleFinalEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDSubstitutionGroupExclusions()
+ {
+ return xsdSubstitutionGroupExclusionsEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDVariety()
+ {
+ return xsdVarietyEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDWhiteSpace()
+ {
+ return xsdWhiteSpaceEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getXSDXPathVariety()
+ {
+ return xsdxPathVarietyEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getDOMAttr()
+ {
+ return domAttrEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getDOMDocument()
+ {
+ return domDocumentEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getDOMElement()
+ {
+ return domElementEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getDOMNode()
+ {
+ return domNodeEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getValue()
+ {
+ return valueEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDFactory getXSDFactory()
+ {
+ return (XSDFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ xsdAnnotationEClass = createEClass(XSD_ANNOTATION);
+ createEAttribute(xsdAnnotationEClass, XSD_ANNOTATION__APPLICATION_INFORMATION);
+ createEAttribute(xsdAnnotationEClass, XSD_ANNOTATION__USER_INFORMATION);
+ createEAttribute(xsdAnnotationEClass, XSD_ANNOTATION__ATTRIBUTES);
+
+ xsdAttributeDeclarationEClass = createEClass(XSD_ATTRIBUTE_DECLARATION);
+ createEAttribute(xsdAttributeDeclarationEClass, XSD_ATTRIBUTE_DECLARATION__ATTRIBUTE_DECLARATION_REFERENCE);
+ createEReference(xsdAttributeDeclarationEClass, XSD_ATTRIBUTE_DECLARATION__ANNOTATION);
+ createEReference(xsdAttributeDeclarationEClass, XSD_ATTRIBUTE_DECLARATION__ANONYMOUS_TYPE_DEFINITION);
+ createEReference(xsdAttributeDeclarationEClass, XSD_ATTRIBUTE_DECLARATION__TYPE_DEFINITION);
+ createEReference(xsdAttributeDeclarationEClass, XSD_ATTRIBUTE_DECLARATION__RESOLVED_ATTRIBUTE_DECLARATION);
+
+ xsdAttributeGroupContentEClass = createEClass(XSD_ATTRIBUTE_GROUP_CONTENT);
+
+ xsdAttributeGroupDefinitionEClass = createEClass(XSD_ATTRIBUTE_GROUP_DEFINITION);
+ createEAttribute(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_GROUP_DEFINITION_REFERENCE);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__ANNOTATION);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__CONTENTS);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_USES);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__ATTRIBUTE_WILDCARD);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__RESOLVED_ATTRIBUTE_GROUP_DEFINITION);
+ createEReference(xsdAttributeGroupDefinitionEClass, XSD_ATTRIBUTE_GROUP_DEFINITION__SYNTHETIC_WILDCARD);
+
+ xsdAttributeUseEClass = createEClass(XSD_ATTRIBUTE_USE);
+ createEAttribute(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__REQUIRED);
+ createEAttribute(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__VALUE);
+ createEAttribute(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__CONSTRAINT);
+ createEAttribute(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__USE);
+ createEAttribute(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__LEXICAL_VALUE);
+ createEReference(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__ATTRIBUTE_DECLARATION);
+ createEReference(xsdAttributeUseEClass, XSD_ATTRIBUTE_USE__CONTENT);
+
+ xsdBoundedFacetEClass = createEClass(XSD_BOUNDED_FACET);
+ createEAttribute(xsdBoundedFacetEClass, XSD_BOUNDED_FACET__VALUE);
+
+ xsdCardinalityFacetEClass = createEClass(XSD_CARDINALITY_FACET);
+ createEAttribute(xsdCardinalityFacetEClass, XSD_CARDINALITY_FACET__VALUE);
+
+ xsdComplexTypeContentEClass = createEClass(XSD_COMPLEX_TYPE_CONTENT);
+
+ xsdComplexTypeDefinitionEClass = createEClass(XSD_COMPLEX_TYPE_DEFINITION);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__DERIVATION_METHOD);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__FINAL);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__ABSTRACT);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE_CATEGORY);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__PROHIBITED_SUBSTITUTIONS);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__LEXICAL_FINAL);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__BLOCK);
+ createEAttribute(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__MIXED);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__CONTENT_ANNOTATION);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__BASE_TYPE_DEFINITION);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__CONTENT);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__CONTENT_TYPE);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_USES);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_CONTENTS);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__ATTRIBUTE_WILDCARD_CONTENT);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__ROOT_TYPE_DEFINITION);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_PARTICLE);
+ createEReference(xsdComplexTypeDefinitionEClass, XSD_COMPLEX_TYPE_DEFINITION__SYNTHETIC_WILDCARD);
+
+ xsdComponentEClass = createEClass(XSD_COMPONENT);
+
+ xsdConcreteComponentEClass = createEClass(XSD_CONCRETE_COMPONENT);
+ createEAttribute(xsdConcreteComponentEClass, XSD_CONCRETE_COMPONENT__ELEMENT);
+ createEReference(xsdConcreteComponentEClass, XSD_CONCRETE_COMPONENT__CONTAINER);
+ createEReference(xsdConcreteComponentEClass, XSD_CONCRETE_COMPONENT__ROOT_CONTAINER);
+ createEReference(xsdConcreteComponentEClass, XSD_CONCRETE_COMPONENT__SCHEMA);
+ createEReference(xsdConcreteComponentEClass, XSD_CONCRETE_COMPONENT__DIAGNOSTICS);
+
+ xsdConstrainingFacetEClass = createEClass(XSD_CONSTRAINING_FACET);
+
+ xsdDiagnosticEClass = createEClass(XSD_DIAGNOSTIC);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__SEVERITY);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__MESSAGE);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__LOCATION_URI);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__LINE);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__COLUMN);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__NODE);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__ANNOTATION_URI);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__KEY);
+ createEAttribute(xsdDiagnosticEClass, XSD_DIAGNOSTIC__SUBSTITUTIONS);
+ createEReference(xsdDiagnosticEClass, XSD_DIAGNOSTIC__COMPONENTS);
+ createEReference(xsdDiagnosticEClass, XSD_DIAGNOSTIC__PRIMARY_COMPONENT);
+
+ xsdElementDeclarationEClass = createEClass(XSD_ELEMENT_DECLARATION);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__NILLABLE);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__DISALLOWED_SUBSTITUTIONS);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_EXCLUSIONS);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__ABSTRACT);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__LEXICAL_FINAL);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__BLOCK);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__ELEMENT_DECLARATION_REFERENCE);
+ createEAttribute(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__CIRCULAR);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__ANNOTATION);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__ANONYMOUS_TYPE_DEFINITION);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__TYPE_DEFINITION);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__IDENTITY_CONSTRAINT_DEFINITIONS);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__RESOLVED_ELEMENT_DECLARATION);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP_AFFILIATION);
+ createEReference(xsdElementDeclarationEClass, XSD_ELEMENT_DECLARATION__SUBSTITUTION_GROUP);
+
+ xsdEnumerationFacetEClass = createEClass(XSD_ENUMERATION_FACET);
+ createEAttribute(xsdEnumerationFacetEClass, XSD_ENUMERATION_FACET__VALUE);
+
+ xsdFacetEClass = createEClass(XSD_FACET);
+ createEAttribute(xsdFacetEClass, XSD_FACET__LEXICAL_VALUE);
+ createEAttribute(xsdFacetEClass, XSD_FACET__FACET_NAME);
+ createEAttribute(xsdFacetEClass, XSD_FACET__EFFECTIVE_VALUE);
+ createEReference(xsdFacetEClass, XSD_FACET__ANNOTATION);
+ createEReference(xsdFacetEClass, XSD_FACET__SIMPLE_TYPE_DEFINITION);
+
+ xsdFeatureEClass = createEClass(XSD_FEATURE);
+ createEAttribute(xsdFeatureEClass, XSD_FEATURE__VALUE);
+ createEAttribute(xsdFeatureEClass, XSD_FEATURE__CONSTRAINT);
+ createEAttribute(xsdFeatureEClass, XSD_FEATURE__FORM);
+ createEAttribute(xsdFeatureEClass, XSD_FEATURE__LEXICAL_VALUE);
+ createEAttribute(xsdFeatureEClass, XSD_FEATURE__GLOBAL);
+ createEAttribute(xsdFeatureEClass, XSD_FEATURE__FEATURE_REFERENCE);
+ createEReference(xsdFeatureEClass, XSD_FEATURE__SCOPE);
+ createEReference(xsdFeatureEClass, XSD_FEATURE__RESOLVED_FEATURE);
+ createEReference(xsdFeatureEClass, XSD_FEATURE__TYPE);
+
+ xsdFixedFacetEClass = createEClass(XSD_FIXED_FACET);
+ createEAttribute(xsdFixedFacetEClass, XSD_FIXED_FACET__FIXED);
+
+ xsdFractionDigitsFacetEClass = createEClass(XSD_FRACTION_DIGITS_FACET);
+ createEAttribute(xsdFractionDigitsFacetEClass, XSD_FRACTION_DIGITS_FACET__VALUE);
+
+ xsdFundamentalFacetEClass = createEClass(XSD_FUNDAMENTAL_FACET);
+
+ xsdIdentityConstraintDefinitionEClass = createEClass(XSD_IDENTITY_CONSTRAINT_DEFINITION);
+ createEAttribute(xsdIdentityConstraintDefinitionEClass, XSD_IDENTITY_CONSTRAINT_DEFINITION__IDENTITY_CONSTRAINT_CATEGORY);
+ createEReference(xsdIdentityConstraintDefinitionEClass, XSD_IDENTITY_CONSTRAINT_DEFINITION__ANNOTATION);
+ createEReference(xsdIdentityConstraintDefinitionEClass, XSD_IDENTITY_CONSTRAINT_DEFINITION__REFERENCED_KEY);
+ createEReference(xsdIdentityConstraintDefinitionEClass, XSD_IDENTITY_CONSTRAINT_DEFINITION__SELECTOR);
+ createEReference(xsdIdentityConstraintDefinitionEClass, XSD_IDENTITY_CONSTRAINT_DEFINITION__FIELDS);
+
+ xsdImportEClass = createEClass(XSD_IMPORT);
+ createEAttribute(xsdImportEClass, XSD_IMPORT__NAMESPACE);
+ createEReference(xsdImportEClass, XSD_IMPORT__ANNOTATION);
+
+ xsdIncludeEClass = createEClass(XSD_INCLUDE);
+ createEReference(xsdIncludeEClass, XSD_INCLUDE__ANNOTATION);
+
+ xsdLengthFacetEClass = createEClass(XSD_LENGTH_FACET);
+ createEAttribute(xsdLengthFacetEClass, XSD_LENGTH_FACET__VALUE);
+
+ xsdMaxExclusiveFacetEClass = createEClass(XSD_MAX_EXCLUSIVE_FACET);
+
+ xsdMaxFacetEClass = createEClass(XSD_MAX_FACET);
+ createEAttribute(xsdMaxFacetEClass, XSD_MAX_FACET__VALUE);
+ createEAttribute(xsdMaxFacetEClass, XSD_MAX_FACET__INCLUSIVE);
+ createEAttribute(xsdMaxFacetEClass, XSD_MAX_FACET__EXCLUSIVE);
+
+ xsdMaxInclusiveFacetEClass = createEClass(XSD_MAX_INCLUSIVE_FACET);
+
+ xsdMaxLengthFacetEClass = createEClass(XSD_MAX_LENGTH_FACET);
+ createEAttribute(xsdMaxLengthFacetEClass, XSD_MAX_LENGTH_FACET__VALUE);
+
+ xsdMinExclusiveFacetEClass = createEClass(XSD_MIN_EXCLUSIVE_FACET);
+
+ xsdMinFacetEClass = createEClass(XSD_MIN_FACET);
+ createEAttribute(xsdMinFacetEClass, XSD_MIN_FACET__VALUE);
+ createEAttribute(xsdMinFacetEClass, XSD_MIN_FACET__INCLUSIVE);
+ createEAttribute(xsdMinFacetEClass, XSD_MIN_FACET__EXCLUSIVE);
+
+ xsdMinInclusiveFacetEClass = createEClass(XSD_MIN_INCLUSIVE_FACET);
+
+ xsdMinLengthFacetEClass = createEClass(XSD_MIN_LENGTH_FACET);
+ createEAttribute(xsdMinLengthFacetEClass, XSD_MIN_LENGTH_FACET__VALUE);
+
+ xsdModelGroupEClass = createEClass(XSD_MODEL_GROUP);
+ createEAttribute(xsdModelGroupEClass, XSD_MODEL_GROUP__COMPOSITOR);
+ createEReference(xsdModelGroupEClass, XSD_MODEL_GROUP__ANNOTATION);
+ createEReference(xsdModelGroupEClass, XSD_MODEL_GROUP__CONTENTS);
+ createEReference(xsdModelGroupEClass, XSD_MODEL_GROUP__PARTICLES);
+
+ xsdModelGroupDefinitionEClass = createEClass(XSD_MODEL_GROUP_DEFINITION);
+ createEAttribute(xsdModelGroupDefinitionEClass, XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP_DEFINITION_REFERENCE);
+ createEReference(xsdModelGroupDefinitionEClass, XSD_MODEL_GROUP_DEFINITION__ANNOTATION);
+ createEReference(xsdModelGroupDefinitionEClass, XSD_MODEL_GROUP_DEFINITION__MODEL_GROUP);
+ createEReference(xsdModelGroupDefinitionEClass, XSD_MODEL_GROUP_DEFINITION__RESOLVED_MODEL_GROUP_DEFINITION);
+
+ xsdNamedComponentEClass = createEClass(XSD_NAMED_COMPONENT);
+ createEAttribute(xsdNamedComponentEClass, XSD_NAMED_COMPONENT__NAME);
+ createEAttribute(xsdNamedComponentEClass, XSD_NAMED_COMPONENT__TARGET_NAMESPACE);
+ createEAttribute(xsdNamedComponentEClass, XSD_NAMED_COMPONENT__ALIAS_NAME);
+ createEAttribute(xsdNamedComponentEClass, XSD_NAMED_COMPONENT__URI);
+ createEAttribute(xsdNamedComponentEClass, XSD_NAMED_COMPONENT__ALIAS_URI);
+ createEAttribute(xsdNamedComponentEClass, XSD_NAMED_COMPONENT__QNAME);
+
+ xsdNotationDeclarationEClass = createEClass(XSD_NOTATION_DECLARATION);
+ createEAttribute(xsdNotationDeclarationEClass, XSD_NOTATION_DECLARATION__SYSTEM_IDENTIFIER);
+ createEAttribute(xsdNotationDeclarationEClass, XSD_NOTATION_DECLARATION__PUBLIC_IDENTIFIER);
+ createEReference(xsdNotationDeclarationEClass, XSD_NOTATION_DECLARATION__ANNOTATION);
+
+ xsdNumericFacetEClass = createEClass(XSD_NUMERIC_FACET);
+ createEAttribute(xsdNumericFacetEClass, XSD_NUMERIC_FACET__VALUE);
+
+ xsdOrderedFacetEClass = createEClass(XSD_ORDERED_FACET);
+ createEAttribute(xsdOrderedFacetEClass, XSD_ORDERED_FACET__VALUE);
+
+ xsdParticleEClass = createEClass(XSD_PARTICLE);
+ createEAttribute(xsdParticleEClass, XSD_PARTICLE__MIN_OCCURS);
+ createEAttribute(xsdParticleEClass, XSD_PARTICLE__MAX_OCCURS);
+ createEReference(xsdParticleEClass, XSD_PARTICLE__CONTENT);
+ createEReference(xsdParticleEClass, XSD_PARTICLE__TERM);
+
+ xsdParticleContentEClass = createEClass(XSD_PARTICLE_CONTENT);
+
+ xsdPatternFacetEClass = createEClass(XSD_PATTERN_FACET);
+ createEAttribute(xsdPatternFacetEClass, XSD_PATTERN_FACET__VALUE);
+
+ xsdRedefinableComponentEClass = createEClass(XSD_REDEFINABLE_COMPONENT);
+ createEAttribute(xsdRedefinableComponentEClass, XSD_REDEFINABLE_COMPONENT__CIRCULAR);
+
+ xsdRedefineContentEClass = createEClass(XSD_REDEFINE_CONTENT);
+
+ xsdRedefineEClass = createEClass(XSD_REDEFINE);
+ createEReference(xsdRedefineEClass, XSD_REDEFINE__ANNOTATIONS);
+ createEReference(xsdRedefineEClass, XSD_REDEFINE__CONTENTS);
+
+ xsdRepeatableFacetEClass = createEClass(XSD_REPEATABLE_FACET);
+ createEReference(xsdRepeatableFacetEClass, XSD_REPEATABLE_FACET__ANNOTATIONS);
+
+ xsdSchemaEClass = createEClass(XSD_SCHEMA);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__DOCUMENT);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__SCHEMA_LOCATION);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__TARGET_NAMESPACE);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__ELEMENT_FORM_DEFAULT);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__FINAL_DEFAULT);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__BLOCK_DEFAULT);
+ createEAttribute(xsdSchemaEClass, XSD_SCHEMA__VERSION);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__CONTENTS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ELEMENT_DECLARATIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ATTRIBUTE_DECLARATIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__TYPE_DEFINITIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__MODEL_GROUP_DEFINITIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__NOTATION_DECLARATIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ANNOTATIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ALL_DIAGNOSTICS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__REFERENCING_DIRECTIVES);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ROOT_VERSION);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__ORIGINAL_VERSION);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__INCORPORATED_VERSIONS);
+ createEReference(xsdSchemaEClass, XSD_SCHEMA__SCHEMA_FOR_SCHEMA);
+
+ xsdSchemaCompositorEClass = createEClass(XSD_SCHEMA_COMPOSITOR);
+ createEReference(xsdSchemaCompositorEClass, XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA);
+
+ xsdSchemaContentEClass = createEClass(XSD_SCHEMA_CONTENT);
+
+ xsdSchemaDirectiveEClass = createEClass(XSD_SCHEMA_DIRECTIVE);
+ createEAttribute(xsdSchemaDirectiveEClass, XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION);
+ createEReference(xsdSchemaDirectiveEClass, XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA);
+
+ xsdScopeEClass = createEClass(XSD_SCOPE);
+
+ xsdSimpleTypeDefinitionEClass = createEClass(XSD_SIMPLE_TYPE_DEFINITION);
+ createEAttribute(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__VARIETY);
+ createEAttribute(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__FINAL);
+ createEAttribute(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL);
+ createEAttribute(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__CONTENTS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__FACETS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__ROOT_TYPE_DEFINITION);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MIN_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MAX_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MAX_INCLUSIVE_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MIN_INCLUSIVE_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MIN_EXCLUSIVE_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MAX_EXCLUSIVE_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__LENGTH_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__WHITE_SPACE_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__ENUMERATION_FACETS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__PATTERN_FACETS);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__CARDINALITY_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__NUMERIC_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MAX_LENGTH_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__MIN_LENGTH_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__TOTAL_DIGITS_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__FRACTION_DIGITS_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__ORDERED_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__BOUNDED_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_WHITE_SPACE_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_LENGTH_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_FRACTION_DIGITS_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_PATTERN_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_ENUMERATION_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_TOTAL_DIGITS_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_LENGTH_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_LENGTH_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_FACET);
+ createEReference(xsdSimpleTypeDefinitionEClass, XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS);
+
+ xsdTermEClass = createEClass(XSD_TERM);
+
+ xsdTotalDigitsFacetEClass = createEClass(XSD_TOTAL_DIGITS_FACET);
+ createEAttribute(xsdTotalDigitsFacetEClass, XSD_TOTAL_DIGITS_FACET__VALUE);
+
+ xsdTypeDefinitionEClass = createEClass(XSD_TYPE_DEFINITION);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__ANNOTATION);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__ANNOTATIONS);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__ROOT_TYPE);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__BASE_TYPE);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__SIMPLE_TYPE);
+ createEReference(xsdTypeDefinitionEClass, XSD_TYPE_DEFINITION__COMPLEX_TYPE);
+
+ xsdWhiteSpaceFacetEClass = createEClass(XSD_WHITE_SPACE_FACET);
+ createEAttribute(xsdWhiteSpaceFacetEClass, XSD_WHITE_SPACE_FACET__VALUE);
+
+ xsdWildcardEClass = createEClass(XSD_WILDCARD);
+ createEAttribute(xsdWildcardEClass, XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY);
+ createEAttribute(xsdWildcardEClass, XSD_WILDCARD__NAMESPACE_CONSTRAINT);
+ createEAttribute(xsdWildcardEClass, XSD_WILDCARD__PROCESS_CONTENTS);
+ createEAttribute(xsdWildcardEClass, XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT);
+ createEReference(xsdWildcardEClass, XSD_WILDCARD__ANNOTATION);
+ createEReference(xsdWildcardEClass, XSD_WILDCARD__ANNOTATIONS);
+
+ xsdxPathDefinitionEClass = createEClass(XSD_XPATH_DEFINITION);
+ createEAttribute(xsdxPathDefinitionEClass, XSD_XPATH_DEFINITION__VARIETY);
+ createEAttribute(xsdxPathDefinitionEClass, XSD_XPATH_DEFINITION__VALUE);
+ createEReference(xsdxPathDefinitionEClass, XSD_XPATH_DEFINITION__ANNOTATION);
+
+ // Create enums
+ xsdAttributeUseCategoryEEnum = createEEnum(XSD_ATTRIBUTE_USE_CATEGORY);
+ xsdCardinalityEEnum = createEEnum(XSD_CARDINALITY);
+ xsdComplexFinalEEnum = createEEnum(XSD_COMPLEX_FINAL);
+ xsdCompositorEEnum = createEEnum(XSD_COMPOSITOR);
+ xsdConstraintEEnum = createEEnum(XSD_CONSTRAINT);
+ xsdContentTypeCategoryEEnum = createEEnum(XSD_CONTENT_TYPE_CATEGORY);
+ xsdDerivationMethodEEnum = createEEnum(XSD_DERIVATION_METHOD);
+ xsdDiagnosticSeverityEEnum = createEEnum(XSD_DIAGNOSTIC_SEVERITY);
+ xsdDisallowedSubstitutionsEEnum = createEEnum(XSD_DISALLOWED_SUBSTITUTIONS);
+ xsdFormEEnum = createEEnum(XSD_FORM);
+ xsdIdentityConstraintCategoryEEnum = createEEnum(XSD_IDENTITY_CONSTRAINT_CATEGORY);
+ xsdNamespaceConstraintCategoryEEnum = createEEnum(XSD_NAMESPACE_CONSTRAINT_CATEGORY);
+ xsdOrderedEEnum = createEEnum(XSD_ORDERED);
+ xsdProcessContentsEEnum = createEEnum(XSD_PROCESS_CONTENTS);
+ xsdProhibitedSubstitutionsEEnum = createEEnum(XSD_PROHIBITED_SUBSTITUTIONS);
+ xsdSimpleFinalEEnum = createEEnum(XSD_SIMPLE_FINAL);
+ xsdSubstitutionGroupExclusionsEEnum = createEEnum(XSD_SUBSTITUTION_GROUP_EXCLUSIONS);
+ xsdVarietyEEnum = createEEnum(XSD_VARIETY);
+ xsdWhiteSpaceEEnum = createEEnum(XSD_WHITE_SPACE);
+ xsdxPathVarietyEEnum = createEEnum(XSD_XPATH_VARIETY);
+
+ // Create data types
+ domAttrEDataType = createEDataType(DOM_ATTR);
+ domDocumentEDataType = createEDataType(DOM_DOCUMENT);
+ domElementEDataType = createEDataType(DOM_ELEMENT);
+ domNodeEDataType = createEDataType(DOM_NODE);
+ valueEDataType = createEDataType(VALUE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ xsdAnnotationEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdAnnotationEClass.getESuperTypes().add(this.getXSDRedefineContent());
+ xsdAttributeDeclarationEClass.getESuperTypes().add(this.getXSDFeature());
+ xsdAttributeDeclarationEClass.getESuperTypes().add(this.getXSDSchemaContent());
+ xsdAttributeGroupContentEClass.getESuperTypes().add(this.getXSDConcreteComponent());
+ xsdAttributeGroupDefinitionEClass.getESuperTypes().add(this.getXSDRedefinableComponent());
+ xsdAttributeGroupDefinitionEClass.getESuperTypes().add(this.getXSDAttributeGroupContent());
+ xsdAttributeGroupDefinitionEClass.getESuperTypes().add(this.getXSDRedefineContent());
+ xsdAttributeUseEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdAttributeUseEClass.getESuperTypes().add(this.getXSDAttributeGroupContent());
+ xsdBoundedFacetEClass.getESuperTypes().add(this.getXSDFundamentalFacet());
+ xsdCardinalityFacetEClass.getESuperTypes().add(this.getXSDFundamentalFacet());
+ xsdComplexTypeContentEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdComplexTypeDefinitionEClass.getESuperTypes().add(this.getXSDTypeDefinition());
+ xsdComplexTypeDefinitionEClass.getESuperTypes().add(this.getXSDScope());
+ xsdComponentEClass.getESuperTypes().add(this.getXSDConcreteComponent());
+ xsdConstrainingFacetEClass.getESuperTypes().add(this.getXSDFacet());
+ xsdDiagnosticEClass.getESuperTypes().add(this.getXSDConcreteComponent());
+ xsdElementDeclarationEClass.getESuperTypes().add(this.getXSDFeature());
+ xsdElementDeclarationEClass.getESuperTypes().add(this.getXSDSchemaContent());
+ xsdElementDeclarationEClass.getESuperTypes().add(this.getXSDTerm());
+ xsdEnumerationFacetEClass.getESuperTypes().add(this.getXSDRepeatableFacet());
+ xsdFacetEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdFeatureEClass.getESuperTypes().add(this.getXSDNamedComponent());
+ xsdFixedFacetEClass.getESuperTypes().add(this.getXSDConstrainingFacet());
+ xsdFractionDigitsFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdFundamentalFacetEClass.getESuperTypes().add(this.getXSDFacet());
+ xsdIdentityConstraintDefinitionEClass.getESuperTypes().add(this.getXSDNamedComponent());
+ xsdImportEClass.getESuperTypes().add(this.getXSDSchemaDirective());
+ xsdIncludeEClass.getESuperTypes().add(this.getXSDSchemaCompositor());
+ xsdLengthFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdMaxExclusiveFacetEClass.getESuperTypes().add(this.getXSDMaxFacet());
+ xsdMaxFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdMaxInclusiveFacetEClass.getESuperTypes().add(this.getXSDMaxFacet());
+ xsdMaxLengthFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdMinExclusiveFacetEClass.getESuperTypes().add(this.getXSDMinFacet());
+ xsdMinFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdMinInclusiveFacetEClass.getESuperTypes().add(this.getXSDMinFacet());
+ xsdMinLengthFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdModelGroupEClass.getESuperTypes().add(this.getXSDTerm());
+ xsdModelGroupDefinitionEClass.getESuperTypes().add(this.getXSDRedefinableComponent());
+ xsdModelGroupDefinitionEClass.getESuperTypes().add(this.getXSDParticleContent());
+ xsdModelGroupDefinitionEClass.getESuperTypes().add(this.getXSDRedefineContent());
+ xsdNamedComponentEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdNotationDeclarationEClass.getESuperTypes().add(this.getXSDNamedComponent());
+ xsdNotationDeclarationEClass.getESuperTypes().add(this.getXSDSchemaContent());
+ xsdNumericFacetEClass.getESuperTypes().add(this.getXSDFundamentalFacet());
+ xsdOrderedFacetEClass.getESuperTypes().add(this.getXSDFundamentalFacet());
+ xsdParticleEClass.getESuperTypes().add(this.getXSDComplexTypeContent());
+ xsdParticleContentEClass.getESuperTypes().add(this.getXSDConcreteComponent());
+ xsdPatternFacetEClass.getESuperTypes().add(this.getXSDRepeatableFacet());
+ xsdRedefinableComponentEClass.getESuperTypes().add(this.getXSDNamedComponent());
+ xsdRedefinableComponentEClass.getESuperTypes().add(this.getXSDRedefineContent());
+ xsdRedefineContentEClass.getESuperTypes().add(this.getXSDSchemaContent());
+ xsdRedefineEClass.getESuperTypes().add(this.getXSDSchemaCompositor());
+ xsdRepeatableFacetEClass.getESuperTypes().add(this.getXSDConstrainingFacet());
+ xsdSchemaEClass.getESuperTypes().add(this.getXSDScope());
+ xsdSchemaCompositorEClass.getESuperTypes().add(this.getXSDSchemaDirective());
+ xsdSchemaContentEClass.getESuperTypes().add(this.getXSDConcreteComponent());
+ xsdSchemaDirectiveEClass.getESuperTypes().add(this.getXSDSchemaContent());
+ xsdScopeEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdSimpleTypeDefinitionEClass.getESuperTypes().add(this.getXSDTypeDefinition());
+ xsdSimpleTypeDefinitionEClass.getESuperTypes().add(this.getXSDComplexTypeContent());
+ xsdTermEClass.getESuperTypes().add(this.getXSDComponent());
+ xsdTermEClass.getESuperTypes().add(this.getXSDParticleContent());
+ xsdTotalDigitsFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdTypeDefinitionEClass.getESuperTypes().add(this.getXSDRedefinableComponent());
+ xsdTypeDefinitionEClass.getESuperTypes().add(this.getXSDRedefineContent());
+ xsdWhiteSpaceFacetEClass.getESuperTypes().add(this.getXSDFixedFacet());
+ xsdWildcardEClass.getESuperTypes().add(this.getXSDTerm());
+ xsdxPathDefinitionEClass.getESuperTypes().add(this.getXSDComponent());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(xsdAnnotationEClass, XSDAnnotation.class, "XSDAnnotation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDAnnotation_ApplicationInformation(), this.getDOMElement(), "applicationInformation", null, 0, -1, XSDAnnotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDAnnotation_UserInformation(), this.getDOMElement(), "userInformation", null, 0, -1, XSDAnnotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDAnnotation_Attributes(), this.getDOMAttr(), "attributes", null, 0, -1, XSDAnnotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdAttributeDeclarationEClass, XSDAttributeDeclaration.class, "XSDAttributeDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDAttributeDeclaration_AttributeDeclarationReference(), ecorePackage.getEBoolean(), "attributeDeclarationReference", null, 0, 1, XSDAttributeDeclaration.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeDeclaration_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDAttributeDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeDeclaration_AnonymousTypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "anonymousTypeDefinition", null, 0, 1, XSDAttributeDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeDeclaration_TypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "typeDefinition", null, 1, 1, XSDAttributeDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeDeclaration_ResolvedAttributeDeclaration(), this.getXSDAttributeDeclaration(), null, "resolvedAttributeDeclaration", null, 1, 1, XSDAttributeDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdAttributeGroupContentEClass, XSDAttributeGroupContent.class, "XSDAttributeGroupContent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdAttributeGroupDefinitionEClass, XSDAttributeGroupDefinition.class, "XSDAttributeGroupDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDAttributeGroupDefinition_AttributeGroupDefinitionReference(), ecorePackage.getEBoolean(), "attributeGroupDefinitionReference", null, 0, 1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_Contents(), this.getXSDAttributeGroupContent(), null, "contents", null, 0, -1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_AttributeUses(), this.getXSDAttributeUse(), null, "attributeUses", null, 0, -1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_AttributeWildcardContent(), this.getXSDWildcard(), null, "attributeWildcardContent", null, 0, 1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_AttributeWildcard(), this.getXSDWildcard(), null, "attributeWildcard", null, 0, 1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_ResolvedAttributeGroupDefinition(), this.getXSDAttributeGroupDefinition(), null, "resolvedAttributeGroupDefinition", null, 1, 1, XSDAttributeGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeGroupDefinition_SyntheticWildcard(), this.getXSDWildcard(), null, "syntheticWildcard", null, 0, 1, XSDAttributeGroupDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdAttributeUseEClass, XSDAttributeUse.class, "XSDAttributeUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDAttributeUse_Required(), ecorePackage.getEBoolean(), "required", null, 0, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDAttributeUse_Value(), this.getValue(), "value", null, 0, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDAttributeUse_Constraint(), this.getXSDConstraint(), "constraint", null, 0, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDAttributeUse_Use(), this.getXSDAttributeUseCategory(), "use", null, 0, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDAttributeUse_LexicalValue(), ecorePackage.getEString(), "lexicalValue", null, 0, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeUse_AttributeDeclaration(), this.getXSDAttributeDeclaration(), null, "attributeDeclaration", null, 1, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDAttributeUse_Content(), this.getXSDAttributeDeclaration(), null, "content", null, 1, 1, XSDAttributeUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdBoundedFacetEClass, XSDBoundedFacet.class, "XSDBoundedFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDBoundedFacet_Value(), ecorePackage.getEBoolean(), "value", null, 0, 1, XSDBoundedFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdCardinalityFacetEClass, XSDCardinalityFacet.class, "XSDCardinalityFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDCardinalityFacet_Value(), this.getXSDCardinality(), "value", null, 0, 1, XSDCardinalityFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdComplexTypeContentEClass, XSDComplexTypeContent.class, "XSDComplexTypeContent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdComplexTypeDefinitionEClass, XSDComplexTypeDefinition.class, "XSDComplexTypeDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDComplexTypeDefinition_DerivationMethod(), this.getXSDDerivationMethod(), "derivationMethod", "restriction", 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_Final(), this.getXSDComplexFinal(), "final", null, 0, -1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_Abstract(), ecorePackage.getEBoolean(), "abstract", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_ContentTypeCategory(), this.getXSDContentTypeCategory(), "contentTypeCategory", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_ProhibitedSubstitutions(), this.getXSDProhibitedSubstitutions(), "prohibitedSubstitutions", null, 0, -1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_LexicalFinal(), this.getXSDComplexFinal(), "lexicalFinal", null, 0, -1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_Block(), this.getXSDProhibitedSubstitutions(), "block", null, 0, -1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDComplexTypeDefinition_Mixed(), ecorePackage.getEBoolean(), "mixed", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_ContentAnnotation(), this.getXSDAnnotation(), null, "contentAnnotation", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_BaseTypeDefinition(), this.getXSDTypeDefinition(), null, "baseTypeDefinition", null, 1, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_Content(), this.getXSDComplexTypeContent(), null, "content", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_ContentType(), this.getXSDComplexTypeContent(), null, "contentType", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_AttributeUses(), this.getXSDAttributeUse(), null, "attributeUses", null, 0, -1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_AttributeContents(), this.getXSDAttributeGroupContent(), null, "attributeContents", null, 0, -1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_AttributeWildcard(), this.getXSDWildcard(), null, "attributeWildcard", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_AttributeWildcardContent(), this.getXSDWildcard(), null, "attributeWildcardContent", null, 0, 1, XSDComplexTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_RootTypeDefinition(), this.getXSDTypeDefinition(), null, "rootTypeDefinition", null, 1, 1, XSDComplexTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_SyntheticParticle(), this.getXSDParticle(), null, "syntheticParticle", null, 0, 1, XSDComplexTypeDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDComplexTypeDefinition_SyntheticWildcard(), this.getXSDWildcard(), null, "syntheticWildcard", null, 0, 1, XSDComplexTypeDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdComponentEClass, XSDComponent.class, "XSDComponent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdConcreteComponentEClass, XSDConcreteComponent.class, "XSDConcreteComponent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDConcreteComponent_Element(), this.getDOMElement(), "element", null, 0, 1, XSDConcreteComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDConcreteComponent_Container(), this.getXSDConcreteComponent(), null, "container", null, 0, 1, XSDConcreteComponent.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDConcreteComponent_RootContainer(), this.getXSDConcreteComponent(), null, "rootContainer", null, 1, 1, XSDConcreteComponent.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDConcreteComponent_Schema(), this.getXSDSchema(), null, "schema", null, 0, 1, XSDConcreteComponent.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDConcreteComponent_Diagnostics(), this.getXSDDiagnostic(), null, "diagnostics", null, 0, -1, XSDConcreteComponent.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdConstrainingFacetEClass, XSDConstrainingFacet.class, "XSDConstrainingFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdDiagnosticEClass, XSDDiagnostic.class, "XSDDiagnostic", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDDiagnostic_Severity(), this.getXSDDiagnosticSeverity(), "severity", null, 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_Message(), ecorePackage.getEString(), "message", null, 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_LocationURI(), ecorePackage.getEString(), "locationURI", null, 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_Line(), ecorePackage.getEInt(), "line", "1", 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_Column(), ecorePackage.getEInt(), "column", "1", 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_Node(), this.getDOMNode(), "node", null, 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_AnnotationURI(), ecorePackage.getEString(), "annotationURI", null, 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_Key(), ecorePackage.getEString(), "key", null, 0, 1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDDiagnostic_Substitutions(), ecorePackage.getEString(), "substitutions", null, 0, -1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDDiagnostic_Components(), this.getXSDConcreteComponent(), null, "components", null, 1, -1, XSDDiagnostic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDDiagnostic_PrimaryComponent(), this.getXSDConcreteComponent(), null, "primaryComponent", null, 1, 1, XSDDiagnostic.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdElementDeclarationEClass, XSDElementDeclaration.class, "XSDElementDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDElementDeclaration_Nillable(), ecorePackage.getEBoolean(), "nillable", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_DisallowedSubstitutions(), this.getXSDDisallowedSubstitutions(), "disallowedSubstitutions", null, 0, -1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_SubstitutionGroupExclusions(), this.getXSDSubstitutionGroupExclusions(), "substitutionGroupExclusions", null, 0, -1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_Abstract(), ecorePackage.getEBoolean(), "abstract", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_LexicalFinal(), this.getXSDProhibitedSubstitutions(), "lexicalFinal", null, 0, -1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_Block(), this.getXSDDisallowedSubstitutions(), "block", null, 0, -1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_ElementDeclarationReference(), ecorePackage.getEBoolean(), "elementDeclarationReference", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDElementDeclaration_Circular(), ecorePackage.getEBoolean(), "circular", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_AnonymousTypeDefinition(), this.getXSDTypeDefinition(), null, "anonymousTypeDefinition", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_TypeDefinition(), this.getXSDTypeDefinition(), null, "typeDefinition", null, 1, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_IdentityConstraintDefinitions(), this.getXSDIdentityConstraintDefinition(), null, "identityConstraintDefinitions", null, 0, -1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_ResolvedElementDeclaration(), this.getXSDElementDeclaration(), null, "resolvedElementDeclaration", null, 1, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_SubstitutionGroupAffiliation(), this.getXSDElementDeclaration(), null, "substitutionGroupAffiliation", null, 0, 1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDElementDeclaration_SubstitutionGroup(), this.getXSDElementDeclaration(), null, "substitutionGroup", null, 0, -1, XSDElementDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdEnumerationFacetEClass, XSDEnumerationFacet.class, "XSDEnumerationFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDEnumerationFacet_Value(), this.getValue(), "value", null, 0, -1, XSDEnumerationFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdFacetEClass, XSDFacet.class, "XSDFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDFacet_LexicalValue(), ecorePackage.getEString(), "lexicalValue", null, 0, 1, XSDFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFacet_FacetName(), ecorePackage.getEString(), "facetName", null, 0, 1, XSDFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFacet_EffectiveValue(), this.getValue(), "effectiveValue", null, 0, 1, XSDFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDFacet_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDFacet_SimpleTypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "simpleTypeDefinition", null, 0, 1, XSDFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdFeatureEClass, XSDFeature.class, "XSDFeature", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDFeature_Value(), this.getValue(), "value", null, 0, 1, XSDFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFeature_Constraint(), this.getXSDConstraint(), "constraint", null, 0, 1, XSDFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFeature_Form(), this.getXSDForm(), "form", null, 0, 1, XSDFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFeature_LexicalValue(), ecorePackage.getEString(), "lexicalValue", null, 0, 1, XSDFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFeature_Global(), ecorePackage.getEBoolean(), "global", null, 0, 1, XSDFeature.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDFeature_FeatureReference(), ecorePackage.getEBoolean(), "featureReference", null, 0, 1, XSDFeature.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDFeature_Scope(), this.getXSDScope(), null, "scope", null, 0, 1, XSDFeature.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDFeature_ResolvedFeature(), this.getXSDFeature(), null, "resolvedFeature", null, 1, 1, XSDFeature.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDFeature_Type(), this.getXSDTypeDefinition(), null, "type", null, 1, 1, XSDFeature.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdFixedFacetEClass, XSDFixedFacet.class, "XSDFixedFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDFixedFacet_Fixed(), ecorePackage.getEBoolean(), "fixed", null, 0, 1, XSDFixedFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdFractionDigitsFacetEClass, XSDFractionDigitsFacet.class, "XSDFractionDigitsFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDFractionDigitsFacet_Value(), ecorePackage.getEInt(), "value", null, 0, 1, XSDFractionDigitsFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdFundamentalFacetEClass, XSDFundamentalFacet.class, "XSDFundamentalFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdIdentityConstraintDefinitionEClass, XSDIdentityConstraintDefinition.class, "XSDIdentityConstraintDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDIdentityConstraintDefinition_IdentityConstraintCategory(), this.getXSDIdentityConstraintCategory(), "identityConstraintCategory", null, 0, 1, XSDIdentityConstraintDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDIdentityConstraintDefinition_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDIdentityConstraintDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDIdentityConstraintDefinition_ReferencedKey(), this.getXSDIdentityConstraintDefinition(), null, "referencedKey", null, 0, 1, XSDIdentityConstraintDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDIdentityConstraintDefinition_Selector(), this.getXSDXPathDefinition(), null, "selector", null, 1, 1, XSDIdentityConstraintDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDIdentityConstraintDefinition_Fields(), this.getXSDXPathDefinition(), null, "fields", null, 1, -1, XSDIdentityConstraintDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdImportEClass, XSDImport.class, "XSDImport", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDImport_Namespace(), ecorePackage.getEString(), "namespace", null, 0, 1, XSDImport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDImport_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDImport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdIncludeEClass, XSDInclude.class, "XSDInclude", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXSDInclude_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdLengthFacetEClass, XSDLengthFacet.class, "XSDLengthFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDLengthFacet_Value(), ecorePackage.getEInt(), "value", null, 0, 1, XSDLengthFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdMaxExclusiveFacetEClass, XSDMaxExclusiveFacet.class, "XSDMaxExclusiveFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdMaxFacetEClass, XSDMaxFacet.class, "XSDMaxFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDMaxFacet_Value(), this.getValue(), "value", null, 0, 1, XSDMaxFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDMaxFacet_Inclusive(), ecorePackage.getEBoolean(), "inclusive", null, 0, 1, XSDMaxFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDMaxFacet_Exclusive(), ecorePackage.getEBoolean(), "exclusive", null, 0, 1, XSDMaxFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdMaxInclusiveFacetEClass, XSDMaxInclusiveFacet.class, "XSDMaxInclusiveFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdMaxLengthFacetEClass, XSDMaxLengthFacet.class, "XSDMaxLengthFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDMaxLengthFacet_Value(), ecorePackage.getEInt(), "value", null, 0, 1, XSDMaxLengthFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdMinExclusiveFacetEClass, XSDMinExclusiveFacet.class, "XSDMinExclusiveFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdMinFacetEClass, XSDMinFacet.class, "XSDMinFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDMinFacet_Value(), this.getValue(), "value", null, 0, 1, XSDMinFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDMinFacet_Inclusive(), ecorePackage.getEBoolean(), "inclusive", null, 0, 1, XSDMinFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDMinFacet_Exclusive(), ecorePackage.getEBoolean(), "exclusive", null, 0, 1, XSDMinFacet.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdMinInclusiveFacetEClass, XSDMinInclusiveFacet.class, "XSDMinInclusiveFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdMinLengthFacetEClass, XSDMinLengthFacet.class, "XSDMinLengthFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDMinLengthFacet_Value(), ecorePackage.getEInt(), "value", null, 0, 1, XSDMinLengthFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdModelGroupEClass, XSDModelGroup.class, "XSDModelGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDModelGroup_Compositor(), this.getXSDCompositor(), "compositor", null, 0, 1, XSDModelGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDModelGroup_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDModelGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDModelGroup_Contents(), this.getXSDParticle(), null, "contents", null, 0, -1, XSDModelGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDModelGroup_Particles(), this.getXSDParticle(), null, "particles", null, 1, -1, XSDModelGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdModelGroupDefinitionEClass, XSDModelGroupDefinition.class, "XSDModelGroupDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDModelGroupDefinition_ModelGroupDefinitionReference(), ecorePackage.getEBoolean(), "modelGroupDefinitionReference", null, 0, 1, XSDModelGroupDefinition.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDModelGroupDefinition_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDModelGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDModelGroupDefinition_ModelGroup(), this.getXSDModelGroup(), null, "modelGroup", null, 1, 1, XSDModelGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDModelGroupDefinition_ResolvedModelGroupDefinition(), this.getXSDModelGroupDefinition(), null, "resolvedModelGroupDefinition", null, 1, 1, XSDModelGroupDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdNamedComponentEClass, XSDNamedComponent.class, "XSDNamedComponent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDNamedComponent_Name(), ecorePackage.getEString(), "name", null, 0, 1, XSDNamedComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDNamedComponent_TargetNamespace(), ecorePackage.getEString(), "targetNamespace", null, 0, 1, XSDNamedComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDNamedComponent_AliasName(), ecorePackage.getEString(), "aliasName", null, 0, 1, XSDNamedComponent.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDNamedComponent_URI(), ecorePackage.getEString(), "uRI", null, 0, 1, XSDNamedComponent.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDNamedComponent_AliasURI(), ecorePackage.getEString(), "aliasURI", null, 0, 1, XSDNamedComponent.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDNamedComponent_QName(), ecorePackage.getEString(), "qName", null, 0, 1, XSDNamedComponent.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdNotationDeclarationEClass, XSDNotationDeclaration.class, "XSDNotationDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDNotationDeclaration_SystemIdentifier(), ecorePackage.getEString(), "systemIdentifier", null, 0, 1, XSDNotationDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDNotationDeclaration_PublicIdentifier(), ecorePackage.getEString(), "publicIdentifier", null, 0, 1, XSDNotationDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDNotationDeclaration_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDNotationDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdNumericFacetEClass, XSDNumericFacet.class, "XSDNumericFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDNumericFacet_Value(), ecorePackage.getEBoolean(), "value", null, 0, 1, XSDNumericFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdOrderedFacetEClass, XSDOrderedFacet.class, "XSDOrderedFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDOrderedFacet_Value(), this.getXSDOrdered(), "value", null, 0, 1, XSDOrderedFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdParticleEClass, XSDParticle.class, "XSDParticle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDParticle_MinOccurs(), ecorePackage.getEInt(), "minOccurs", "1", 0, 1, XSDParticle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDParticle_MaxOccurs(), ecorePackage.getEInt(), "maxOccurs", "1", 0, 1, XSDParticle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDParticle_Content(), this.getXSDParticleContent(), null, "content", null, 1, 1, XSDParticle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDParticle_Term(), this.getXSDTerm(), null, "term", null, 1, 1, XSDParticle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdParticleContentEClass, XSDParticleContent.class, "XSDParticleContent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdPatternFacetEClass, XSDPatternFacet.class, "XSDPatternFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDPatternFacet_Value(), ecorePackage.getEString(), "value", null, 0, -1, XSDPatternFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdRedefinableComponentEClass, XSDRedefinableComponent.class, "XSDRedefinableComponent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDRedefinableComponent_Circular(), ecorePackage.getEBoolean(), "circular", null, 0, 1, XSDRedefinableComponent.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdRedefineContentEClass, XSDRedefineContent.class, "XSDRedefineContent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdRedefineEClass, XSDRedefine.class, "XSDRedefine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXSDRedefine_Annotations(), this.getXSDAnnotation(), null, "annotations", null, 0, -1, XSDRedefine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDRedefine_Contents(), this.getXSDRedefineContent(), null, "contents", null, 0, -1, XSDRedefine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdRepeatableFacetEClass, XSDRepeatableFacet.class, "XSDRepeatableFacet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXSDRepeatableFacet_Annotations(), this.getXSDAnnotation(), null, "annotations", null, 0, -1, XSDRepeatableFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdSchemaEClass, XSDSchema.class, "XSDSchema", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDSchema_Document(), this.getDOMDocument(), "document", null, 0, 1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_SchemaLocation(), ecorePackage.getEString(), "schemaLocation", null, 0, 1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_TargetNamespace(), ecorePackage.getEString(), "targetNamespace", null, 0, 1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_AttributeFormDefault(), this.getXSDForm(), "attributeFormDefault", "unqualified", 0, 1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_ElementFormDefault(), this.getXSDForm(), "elementFormDefault", "unqualified", 0, 1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_FinalDefault(), this.getXSDProhibitedSubstitutions(), "finalDefault", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_BlockDefault(), this.getXSDDisallowedSubstitutions(), "blockDefault", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSchema_Version(), ecorePackage.getEString(), "version", null, 0, 1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_Contents(), this.getXSDSchemaContent(), null, "contents", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_ElementDeclarations(), this.getXSDElementDeclaration(), null, "elementDeclarations", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_AttributeDeclarations(), this.getXSDAttributeDeclaration(), null, "attributeDeclarations", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_AttributeGroupDefinitions(), this.getXSDAttributeGroupDefinition(), null, "attributeGroupDefinitions", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_TypeDefinitions(), this.getXSDTypeDefinition(), null, "typeDefinitions", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_ModelGroupDefinitions(), this.getXSDModelGroupDefinition(), null, "modelGroupDefinitions", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_IdentityConstraintDefinitions(), this.getXSDIdentityConstraintDefinition(), null, "identityConstraintDefinitions", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_NotationDeclarations(), this.getXSDNotationDeclaration(), null, "notationDeclarations", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_Annotations(), this.getXSDAnnotation(), null, "annotations", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_AllDiagnostics(), this.getXSDDiagnostic(), null, "allDiagnostics", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_ReferencingDirectives(), this.getXSDSchemaDirective(), null, "referencingDirectives", null, 0, -1, XSDSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_RootVersion(), this.getXSDSchema(), null, "rootVersion", null, 1, 1, XSDSchema.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_OriginalVersion(), this.getXSDSchema(), null, "originalVersion", null, 0, 1, XSDSchema.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_IncorporatedVersions(), this.getXSDSchema(), null, "incorporatedVersions", null, 0, -1, XSDSchema.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchema_SchemaForSchema(), this.getXSDSchema(), null, "schemaForSchema", null, 1, 1, XSDSchema.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdSchemaCompositorEClass, XSDSchemaCompositor.class, "XSDSchemaCompositor", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXSDSchemaCompositor_IncorporatedSchema(), this.getXSDSchema(), null, "incorporatedSchema", null, 0, 1, XSDSchemaCompositor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdSchemaContentEClass, XSDSchemaContent.class, "XSDSchemaContent", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdSchemaDirectiveEClass, XSDSchemaDirective.class, "XSDSchemaDirective", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDSchemaDirective_SchemaLocation(), ecorePackage.getEString(), "schemaLocation", null, 0, 1, XSDSchemaDirective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSchemaDirective_ResolvedSchema(), this.getXSDSchema(), null, "resolvedSchema", null, 0, 1, XSDSchemaDirective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdScopeEClass, XSDScope.class, "XSDScope", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdSimpleTypeDefinitionEClass, XSDSimpleTypeDefinition.class, "XSDSimpleTypeDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDSimpleTypeDefinition_Variety(), this.getXSDVariety(), "variety", null, 0, 1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSimpleTypeDefinition_Final(), this.getXSDSimpleFinal(), "final", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSimpleTypeDefinition_LexicalFinal(), this.getXSDSimpleFinal(), "lexicalFinal", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDSimpleTypeDefinition_ValidFacets(), ecorePackage.getEString(), "validFacets", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_Contents(), this.getXSDSimpleTypeDefinition(), null, "contents", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_FacetContents(), this.getXSDConstrainingFacet(), null, "facetContents", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_Facets(), this.getXSDConstrainingFacet(), null, "facets", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MemberTypeDefinitions(), this.getXSDSimpleTypeDefinition(), null, "memberTypeDefinitions", null, 0, -1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_FundamentalFacets(), this.getXSDFundamentalFacet(), null, "fundamentalFacets", null, 1, -1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_BaseTypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "baseTypeDefinition", null, 1, 1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_PrimitiveTypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "primitiveTypeDefinition", null, 0, 1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_ItemTypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "itemTypeDefinition", null, 0, 1, XSDSimpleTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_RootTypeDefinition(), this.getXSDSimpleTypeDefinition(), null, "rootTypeDefinition", null, 1, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MinFacet(), this.getXSDMinFacet(), null, "minFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MaxFacet(), this.getXSDMaxFacet(), null, "maxFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MaxInclusiveFacet(), this.getXSDMaxInclusiveFacet(), null, "maxInclusiveFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MinInclusiveFacet(), this.getXSDMinInclusiveFacet(), null, "minInclusiveFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MinExclusiveFacet(), this.getXSDMinExclusiveFacet(), null, "minExclusiveFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MaxExclusiveFacet(), this.getXSDMaxExclusiveFacet(), null, "maxExclusiveFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_LengthFacet(), this.getXSDLengthFacet(), null, "lengthFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_WhiteSpaceFacet(), this.getXSDWhiteSpaceFacet(), null, "whiteSpaceFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EnumerationFacets(), this.getXSDEnumerationFacet(), null, "enumerationFacets", null, 0, -1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_PatternFacets(), this.getXSDPatternFacet(), null, "patternFacets", null, 0, -1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_CardinalityFacet(), this.getXSDCardinalityFacet(), null, "cardinalityFacet", null, 1, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_NumericFacet(), this.getXSDNumericFacet(), null, "numericFacet", null, 1, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MaxLengthFacet(), this.getXSDMaxLengthFacet(), null, "maxLengthFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_MinLengthFacet(), this.getXSDMinLengthFacet(), null, "minLengthFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_TotalDigitsFacet(), this.getXSDTotalDigitsFacet(), null, "totalDigitsFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_FractionDigitsFacet(), this.getXSDFractionDigitsFacet(), null, "fractionDigitsFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_OrderedFacet(), this.getXSDOrderedFacet(), null, "orderedFacet", null, 1, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_BoundedFacet(), this.getXSDBoundedFacet(), null, "boundedFacet", null, 1, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveMaxFacet(), this.getXSDMaxFacet(), null, "effectiveMaxFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveWhiteSpaceFacet(), this.getXSDWhiteSpaceFacet(), null, "effectiveWhiteSpaceFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveMaxLengthFacet(), this.getXSDMaxLengthFacet(), null, "effectiveMaxLengthFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveFractionDigitsFacet(), this.getXSDFractionDigitsFacet(), null, "effectiveFractionDigitsFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectivePatternFacet(), this.getXSDPatternFacet(), null, "effectivePatternFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveEnumerationFacet(), this.getXSDEnumerationFacet(), null, "effectiveEnumerationFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveTotalDigitsFacet(), this.getXSDTotalDigitsFacet(), null, "effectiveTotalDigitsFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveMinLengthFacet(), this.getXSDMinLengthFacet(), null, "effectiveMinLengthFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveLengthFacet(), this.getXSDLengthFacet(), null, "effectiveLengthFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_EffectiveMinFacet(), this.getXSDMinFacet(), null, "effectiveMinFacet", null, 0, 1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDSimpleTypeDefinition_SyntheticFacets(), this.getXSDFacet(), null, "syntheticFacets", null, 0, -1, XSDSimpleTypeDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdTermEClass, XSDTerm.class, "XSDTerm", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(xsdTotalDigitsFacetEClass, XSDTotalDigitsFacet.class, "XSDTotalDigitsFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDTotalDigitsFacet_Value(), ecorePackage.getEInt(), "value", null, 0, 1, XSDTotalDigitsFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdTypeDefinitionEClass, XSDTypeDefinition.class, "XSDTypeDefinition", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXSDTypeDefinition_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDTypeDefinition_DerivationAnnotation(), this.getXSDAnnotation(), null, "derivationAnnotation", null, 0, 1, XSDTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDTypeDefinition_Annotations(), this.getXSDAnnotation(), null, "annotations", null, 0, -1, XSDTypeDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDTypeDefinition_RootType(), this.getXSDTypeDefinition(), null, "rootType", null, 1, 1, XSDTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDTypeDefinition_BaseType(), this.getXSDTypeDefinition(), null, "baseType", null, 1, 1, XSDTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDTypeDefinition_SimpleType(), this.getXSDSimpleTypeDefinition(), null, "simpleType", null, 0, 1, XSDTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDTypeDefinition_ComplexType(), this.getXSDParticle(), null, "complexType", null, 0, 1, XSDTypeDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdWhiteSpaceFacetEClass, XSDWhiteSpaceFacet.class, "XSDWhiteSpaceFacet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDWhiteSpaceFacet_Value(), this.getXSDWhiteSpace(), "value", null, 0, 1, XSDWhiteSpaceFacet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdWildcardEClass, XSDWildcard.class, "XSDWildcard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDWildcard_NamespaceConstraintCategory(), this.getXSDNamespaceConstraintCategory(), "namespaceConstraintCategory", null, 0, 1, XSDWildcard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDWildcard_NamespaceConstraint(), ecorePackage.getEString(), "namespaceConstraint", null, 0, -1, XSDWildcard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDWildcard_ProcessContents(), this.getXSDProcessContents(), "processContents", null, 0, 1, XSDWildcard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDWildcard_LexicalNamespaceConstraint(), ecorePackage.getEString(), "lexicalNamespaceConstraint", null, 0, -1, XSDWildcard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDWildcard_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDWildcard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDWildcard_Annotations(), this.getXSDAnnotation(), null, "annotations", null, 0, -1, XSDWildcard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdxPathDefinitionEClass, XSDXPathDefinition.class, "XSDXPathDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDXPathDefinition_Variety(), this.getXSDXPathVariety(), "variety", null, 0, 1, XSDXPathDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXSDXPathDefinition_Value(), ecorePackage.getEString(), "value", null, 0, 1, XSDXPathDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXSDXPathDefinition_Annotation(), this.getXSDAnnotation(), null, "annotation", null, 0, 1, XSDXPathDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(xsdAttributeUseCategoryEEnum, XSDAttributeUseCategory.class, "XSDAttributeUseCategory");
+ addEEnumLiteral(xsdAttributeUseCategoryEEnum, XSDAttributeUseCategory.OPTIONAL_LITERAL);
+ addEEnumLiteral(xsdAttributeUseCategoryEEnum, XSDAttributeUseCategory.PROHIBITED_LITERAL);
+ addEEnumLiteral(xsdAttributeUseCategoryEEnum, XSDAttributeUseCategory.REQUIRED_LITERAL);
+
+ initEEnum(xsdCardinalityEEnum, XSDCardinality.class, "XSDCardinality");
+ addEEnumLiteral(xsdCardinalityEEnum, XSDCardinality.FINITE_LITERAL);
+ addEEnumLiteral(xsdCardinalityEEnum, XSDCardinality.COUNTABLY_INFINITE_LITERAL);
+
+ initEEnum(xsdComplexFinalEEnum, XSDComplexFinal.class, "XSDComplexFinal");
+ addEEnumLiteral(xsdComplexFinalEEnum, XSDComplexFinal.EXTENSION_LITERAL);
+ addEEnumLiteral(xsdComplexFinalEEnum, XSDComplexFinal.RESTRICTION_LITERAL);
+ addEEnumLiteral(xsdComplexFinalEEnum, XSDComplexFinal.ALL_LITERAL);
+
+ initEEnum(xsdCompositorEEnum, XSDCompositor.class, "XSDCompositor");
+ addEEnumLiteral(xsdCompositorEEnum, XSDCompositor.ALL_LITERAL);
+ addEEnumLiteral(xsdCompositorEEnum, XSDCompositor.CHOICE_LITERAL);
+ addEEnumLiteral(xsdCompositorEEnum, XSDCompositor.SEQUENCE_LITERAL);
+
+ initEEnum(xsdConstraintEEnum, XSDConstraint.class, "XSDConstraint");
+ addEEnumLiteral(xsdConstraintEEnum, XSDConstraint.DEFAULT_LITERAL);
+ addEEnumLiteral(xsdConstraintEEnum, XSDConstraint.FIXED_LITERAL);
+
+ initEEnum(xsdContentTypeCategoryEEnum, XSDContentTypeCategory.class, "XSDContentTypeCategory");
+ addEEnumLiteral(xsdContentTypeCategoryEEnum, XSDContentTypeCategory.EMPTY_LITERAL);
+ addEEnumLiteral(xsdContentTypeCategoryEEnum, XSDContentTypeCategory.SIMPLE_LITERAL);
+ addEEnumLiteral(xsdContentTypeCategoryEEnum, XSDContentTypeCategory.MIXED_LITERAL);
+ addEEnumLiteral(xsdContentTypeCategoryEEnum, XSDContentTypeCategory.ELEMENT_ONLY_LITERAL);
+
+ initEEnum(xsdDerivationMethodEEnum, XSDDerivationMethod.class, "XSDDerivationMethod");
+ addEEnumLiteral(xsdDerivationMethodEEnum, XSDDerivationMethod.EXTENSION_LITERAL);
+ addEEnumLiteral(xsdDerivationMethodEEnum, XSDDerivationMethod.RESTRICTION_LITERAL);
+
+ initEEnum(xsdDiagnosticSeverityEEnum, XSDDiagnosticSeverity.class, "XSDDiagnosticSeverity");
+ addEEnumLiteral(xsdDiagnosticSeverityEEnum, XSDDiagnosticSeverity.FATAL_LITERAL);
+ addEEnumLiteral(xsdDiagnosticSeverityEEnum, XSDDiagnosticSeverity.ERROR_LITERAL);
+ addEEnumLiteral(xsdDiagnosticSeverityEEnum, XSDDiagnosticSeverity.WARNING_LITERAL);
+ addEEnumLiteral(xsdDiagnosticSeverityEEnum, XSDDiagnosticSeverity.INFORMATION_LITERAL);
+
+ initEEnum(xsdDisallowedSubstitutionsEEnum, XSDDisallowedSubstitutions.class, "XSDDisallowedSubstitutions");
+ addEEnumLiteral(xsdDisallowedSubstitutionsEEnum, XSDDisallowedSubstitutions.SUBSTITUTION_LITERAL);
+ addEEnumLiteral(xsdDisallowedSubstitutionsEEnum, XSDDisallowedSubstitutions.EXTENSION_LITERAL);
+ addEEnumLiteral(xsdDisallowedSubstitutionsEEnum, XSDDisallowedSubstitutions.RESTRICTION_LITERAL);
+ addEEnumLiteral(xsdDisallowedSubstitutionsEEnum, XSDDisallowedSubstitutions.ALL_LITERAL);
+
+ initEEnum(xsdFormEEnum, XSDForm.class, "XSDForm");
+ addEEnumLiteral(xsdFormEEnum, XSDForm.QUALIFIED_LITERAL);
+ addEEnumLiteral(xsdFormEEnum, XSDForm.UNQUALIFIED_LITERAL);
+
+ initEEnum(xsdIdentityConstraintCategoryEEnum, XSDIdentityConstraintCategory.class, "XSDIdentityConstraintCategory");
+ addEEnumLiteral(xsdIdentityConstraintCategoryEEnum, XSDIdentityConstraintCategory.KEY_LITERAL);
+ addEEnumLiteral(xsdIdentityConstraintCategoryEEnum, XSDIdentityConstraintCategory.KEYREF_LITERAL);
+ addEEnumLiteral(xsdIdentityConstraintCategoryEEnum, XSDIdentityConstraintCategory.UNIQUE_LITERAL);
+
+ initEEnum(xsdNamespaceConstraintCategoryEEnum, XSDNamespaceConstraintCategory.class, "XSDNamespaceConstraintCategory");
+ addEEnumLiteral(xsdNamespaceConstraintCategoryEEnum, XSDNamespaceConstraintCategory.ANY_LITERAL);
+ addEEnumLiteral(xsdNamespaceConstraintCategoryEEnum, XSDNamespaceConstraintCategory.NOT_LITERAL);
+ addEEnumLiteral(xsdNamespaceConstraintCategoryEEnum, XSDNamespaceConstraintCategory.SET_LITERAL);
+
+ initEEnum(xsdOrderedEEnum, XSDOrdered.class, "XSDOrdered");
+ addEEnumLiteral(xsdOrderedEEnum, XSDOrdered.FALSE_LITERAL);
+ addEEnumLiteral(xsdOrderedEEnum, XSDOrdered.PARTIAL_LITERAL);
+ addEEnumLiteral(xsdOrderedEEnum, XSDOrdered.TOTAL_LITERAL);
+
+ initEEnum(xsdProcessContentsEEnum, XSDProcessContents.class, "XSDProcessContents");
+ addEEnumLiteral(xsdProcessContentsEEnum, XSDProcessContents.STRICT_LITERAL);
+ addEEnumLiteral(xsdProcessContentsEEnum, XSDProcessContents.LAX_LITERAL);
+ addEEnumLiteral(xsdProcessContentsEEnum, XSDProcessContents.SKIP_LITERAL);
+
+ initEEnum(xsdProhibitedSubstitutionsEEnum, XSDProhibitedSubstitutions.class, "XSDProhibitedSubstitutions");
+ addEEnumLiteral(xsdProhibitedSubstitutionsEEnum, XSDProhibitedSubstitutions.EXTENSION_LITERAL);
+ addEEnumLiteral(xsdProhibitedSubstitutionsEEnum, XSDProhibitedSubstitutions.RESTRICTION_LITERAL);
+ addEEnumLiteral(xsdProhibitedSubstitutionsEEnum, XSDProhibitedSubstitutions.ALL_LITERAL);
+
+ initEEnum(xsdSimpleFinalEEnum, XSDSimpleFinal.class, "XSDSimpleFinal");
+ addEEnumLiteral(xsdSimpleFinalEEnum, XSDSimpleFinal.LIST_LITERAL);
+ addEEnumLiteral(xsdSimpleFinalEEnum, XSDSimpleFinal.RESTRICTION_LITERAL);
+ addEEnumLiteral(xsdSimpleFinalEEnum, XSDSimpleFinal.UNION_LITERAL);
+ addEEnumLiteral(xsdSimpleFinalEEnum, XSDSimpleFinal.ALL_LITERAL);
+
+ initEEnum(xsdSubstitutionGroupExclusionsEEnum, XSDSubstitutionGroupExclusions.class, "XSDSubstitutionGroupExclusions");
+ addEEnumLiteral(xsdSubstitutionGroupExclusionsEEnum, XSDSubstitutionGroupExclusions.EXTENSION_LITERAL);
+ addEEnumLiteral(xsdSubstitutionGroupExclusionsEEnum, XSDSubstitutionGroupExclusions.RESTRICTION_LITERAL);
+
+ initEEnum(xsdVarietyEEnum, XSDVariety.class, "XSDVariety");
+ addEEnumLiteral(xsdVarietyEEnum, XSDVariety.ATOMIC_LITERAL);
+ addEEnumLiteral(xsdVarietyEEnum, XSDVariety.LIST_LITERAL);
+ addEEnumLiteral(xsdVarietyEEnum, XSDVariety.UNION_LITERAL);
+
+ initEEnum(xsdWhiteSpaceEEnum, XSDWhiteSpace.class, "XSDWhiteSpace");
+ addEEnumLiteral(xsdWhiteSpaceEEnum, XSDWhiteSpace.PRESERVE_LITERAL);
+ addEEnumLiteral(xsdWhiteSpaceEEnum, XSDWhiteSpace.REPLACE_LITERAL);
+ addEEnumLiteral(xsdWhiteSpaceEEnum, XSDWhiteSpace.COLLAPSE_LITERAL);
+
+ initEEnum(xsdxPathVarietyEEnum, XSDXPathVariety.class, "XSDXPathVariety");
+ addEEnumLiteral(xsdxPathVarietyEEnum, XSDXPathVariety.SELECTOR_LITERAL);
+ addEEnumLiteral(xsdxPathVarietyEEnum, XSDXPathVariety.FIELD_LITERAL);
+
+ // Initialize data types
+ initEDataType(domAttrEDataType, Attr.class, "DOMAttr", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(domDocumentEDataType, Document.class, "DOMDocument", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(domElementEDataType, Element.class, "DOMElement", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(domNodeEDataType, Node.class, "DOMNode", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(valueEDataType, Object.class, "Value", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link XSDPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static XSDPackage init()
+ {
+ if (isInited) return (XSDPackage)EPackage.Registry.INSTANCE.getEPackage(XSDPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredXSDPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ XSDPackageImpl theXSDPackage = registeredXSDPackage instanceof XSDPackageImpl ? (XSDPackageImpl)registeredXSDPackage : new XSDPackageImpl();
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theXSDPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theXSDPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theXSDPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(XSDPackage.eNS_URI, theXSDPackage);
+ return theXSDPackage;
+ }
+
+} //XSDPackageImpl
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDParticleContentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDParticleContentImpl.java
new file mode 100644
index 0000000..003c6a6
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDParticleContentImpl.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Particle Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDParticleContentImpl
+ extends XSDConcreteComponentImpl
+ implements XSDParticleContent
+{
+ public static XSDParticleContent createParticleContent(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.ALL_ELEMENT:
+ case XSDConstants.CHOICE_ELEMENT:
+ case XSDConstants.SEQUENCE_ELEMENT:
+ {
+ return XSDModelGroupImpl.createModelGroup(node);
+ }
+ case XSDConstants.ELEMENT_ELEMENT:
+ {
+ return XSDElementDeclarationImpl.createElementDeclaration(node);
+ }
+ case XSDConstants.GROUP_ELEMENT:
+ {
+ return XSDModelGroupDefinitionImpl.createModelGroupDefinition(node);
+ }
+ case XSDConstants.ANY_ELEMENT:
+ {
+ return XSDWildcardImpl.createWildcard(node);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDParticleContentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_PARTICLE_CONTENT;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDParticleImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDParticleImpl.java
new file mode 100644
index 0000000..118d860
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDParticleImpl.java
@@ -0,0 +1,2363 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTerm;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDSwitch;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Particle</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDParticleImpl#getMinOccurs <em>Min Occurs</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDParticleImpl#getMaxOccurs <em>Max Occurs</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDParticleImpl#getContent <em>Content</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDParticleImpl#getTerm <em>Term</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDParticleImpl
+ extends XSDComplexTypeContentImpl
+ implements XSDParticle
+{
+ protected static final int MAXIMUM_STATES = 10000;
+
+ /**
+ * The default value of the '{@link #getMinOccurs() <em>Min Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMinOccurs()
+ * @generated
+ * @ordered
+ */
+ protected static final int MIN_OCCURS_EDEFAULT = 1;
+
+ /**
+ * The cached value of the '{@link #getMinOccurs() <em>Min Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMinOccurs()
+ * @generated
+ * @ordered
+ */
+ protected int minOccurs = MIN_OCCURS_EDEFAULT;
+
+ /**
+ * The flag representing whether the Min Occurs attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int MIN_OCCURS_ESETFLAG = 1 << 8;
+
+ /**
+ * The default value of the '{@link #getMaxOccurs() <em>Max Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMaxOccurs()
+ * @generated
+ * @ordered
+ */
+ protected static final int MAX_OCCURS_EDEFAULT = 1;
+
+ /**
+ * The cached value of the '{@link #getMaxOccurs() <em>Max Occurs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMaxOccurs()
+ * @generated
+ * @ordered
+ */
+ protected int maxOccurs = MAX_OCCURS_EDEFAULT;
+
+ /**
+ * The flag representing whether the Max Occurs attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int MAX_OCCURS_ESETFLAG = 1 << 9;
+
+ /**
+ * The cached value of the '{@link #getContent() <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContent()
+ * @generated
+ * @ordered
+ */
+ protected XSDParticleContent content;
+
+ /**
+ * The cached value of the '{@link #getTerm() <em>Term</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTerm()
+ * @generated
+ * @ordered
+ */
+ protected XSDTerm term;
+
+ public static XSDParticle createParticle(Node node)
+ {
+ XSDParticleContent xsdParticleContent = XSDParticleContentImpl.createParticleContent(node);
+ if (xsdParticleContent != null)
+ {
+ XSDParticle xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setElement((Element)node);
+ xsdParticle.setContent(xsdParticleContent);
+ return xsdParticle;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDParticleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_PARTICLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getMinOccurs()
+ {
+ return minOccurs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMinOccurs(int newMinOccurs)
+ {
+ int oldMinOccurs = minOccurs;
+ minOccurs = newMinOccurs;
+ boolean oldMinOccursESet = (eFlags & MIN_OCCURS_ESETFLAG) != 0;
+ eFlags |= MIN_OCCURS_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_PARTICLE__MIN_OCCURS, oldMinOccurs, minOccurs, !oldMinOccursESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetMinOccurs()
+ {
+ int oldMinOccurs = minOccurs;
+ boolean oldMinOccursESet = (eFlags & MIN_OCCURS_ESETFLAG) != 0;
+ minOccurs = MIN_OCCURS_EDEFAULT;
+ eFlags &= ~MIN_OCCURS_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_PARTICLE__MIN_OCCURS, oldMinOccurs, MIN_OCCURS_EDEFAULT, oldMinOccursESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetMinOccurs()
+ {
+ return (eFlags & MIN_OCCURS_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getMaxOccurs()
+ {
+ return maxOccurs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMaxOccurs(int newMaxOccurs)
+ {
+ int oldMaxOccurs = maxOccurs;
+ maxOccurs = newMaxOccurs;
+ boolean oldMaxOccursESet = (eFlags & MAX_OCCURS_ESETFLAG) != 0;
+ eFlags |= MAX_OCCURS_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_PARTICLE__MAX_OCCURS, oldMaxOccurs, maxOccurs, !oldMaxOccursESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetMaxOccurs()
+ {
+ int oldMaxOccurs = maxOccurs;
+ boolean oldMaxOccursESet = (eFlags & MAX_OCCURS_ESETFLAG) != 0;
+ maxOccurs = MAX_OCCURS_EDEFAULT;
+ eFlags &= ~MAX_OCCURS_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_PARTICLE__MAX_OCCURS, oldMaxOccurs, MAX_OCCURS_EDEFAULT, oldMaxOccursESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetMaxOccurs()
+ {
+ return (eFlags & MAX_OCCURS_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDParticleContent getContent()
+ {
+ return content;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContent(XSDParticleContent newContent)
+ {
+ if (newContent != content)
+ {
+ NotificationChain msgs = null;
+ if (content != null)
+ msgs = ((InternalEObject)content).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_PARTICLE__CONTENT, null, msgs);
+ if (newContent != null)
+ msgs = ((InternalEObject)newContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_PARTICLE__CONTENT, null, msgs);
+ msgs = basicSetContent(newContent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_PARTICLE__CONTENT, newContent, newContent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetContent(XSDParticleContent newContent, NotificationChain msgs)
+ {
+ XSDParticleContent oldContent = content;
+ content = newContent;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_PARTICLE__CONTENT, oldContent, newContent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDTerm getTerm()
+ {
+ return term;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTerm(XSDTerm newTerm)
+ {
+ XSDTerm oldTerm = term;
+ term = newTerm;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_PARTICLE__TERM, oldTerm, term));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PARTICLE__CONTENT:
+ return basicSetContent(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PARTICLE__MIN_OCCURS:
+ return getMinOccurs();
+ case XSDPackage.XSD_PARTICLE__MAX_OCCURS:
+ return getMaxOccurs();
+ case XSDPackage.XSD_PARTICLE__CONTENT:
+ return getContent();
+ case XSDPackage.XSD_PARTICLE__TERM:
+ return getTerm();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PARTICLE__MIN_OCCURS:
+ setMinOccurs((Integer)newValue);
+ return;
+ case XSDPackage.XSD_PARTICLE__MAX_OCCURS:
+ setMaxOccurs((Integer)newValue);
+ return;
+ case XSDPackage.XSD_PARTICLE__CONTENT:
+ setContent((XSDParticleContent)newValue);
+ return;
+ case XSDPackage.XSD_PARTICLE__TERM:
+ setTerm((XSDTerm)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PARTICLE__MIN_OCCURS:
+ unsetMinOccurs();
+ return;
+ case XSDPackage.XSD_PARTICLE__MAX_OCCURS:
+ unsetMaxOccurs();
+ return;
+ case XSDPackage.XSD_PARTICLE__CONTENT:
+ setContent((XSDParticleContent)null);
+ return;
+ case XSDPackage.XSD_PARTICLE__TERM:
+ setTerm((XSDTerm)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PARTICLE__MIN_OCCURS:
+ return isSetMinOccurs();
+ case XSDPackage.XSD_PARTICLE__MAX_OCCURS:
+ return isSetMaxOccurs();
+ case XSDPackage.XSD_PARTICLE__CONTENT:
+ return content != null;
+ case XSDPackage.XSD_PARTICLE__TERM:
+ return term != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (minOccurs: ");
+ if ((eFlags & MIN_OCCURS_ESETFLAG) != 0) result.append(minOccurs); else result.append("<unset>");
+ result.append(", maxOccurs: ");
+ if ((eFlags & MAX_OCCURS_ESETFLAG) != 0) result.append(maxOccurs); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = null;
+ XSDParticleContent theContent = getContent();
+ if (theContent != null)
+ {
+ newElement = ((XSDConcreteComponentImpl)theContent).createElement();
+ setElement(newElement);
+ }
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+ patchHelper();
+ }
+
+ protected void patchHelper()
+ {
+ XSDParticleContent theContent = getContent();
+ XSDTerm newTerm = null;
+ if (theContent instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)theContent;
+ newTerm = xsdModelGroupDefinition.getResolvedModelGroupDefinition().getModelGroup();
+ }
+ else if (theContent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)theContent;
+ newTerm = xsdElementDeclaration.getResolvedElementDeclaration();
+ }
+ else
+ {
+ newTerm = (XSDTerm)theContent;
+ }
+
+ if (getTerm() != newTerm)
+ {
+ setTerm(newTerm);
+ }
+ }
+
+ @Override
+ public boolean analyze()
+ {
+ xsdNFA = null;
+ return super.analyze();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ if (getMaxOccurs() != -1)
+ {
+ if (getMinOccurs() > getMaxOccurs())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "coss-particle.2.1");
+ }
+ }
+ }
+
+ @Override
+ protected Collection<Element> getContentNodes(Element changedElement)
+ {
+ return Collections.singleton(getElement());
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.MINOCCURS_ATTRIBUTE))
+ {
+ String newMinOccurs = changedElement.getAttributeNS(null, XSDConstants.MINOCCURS_ATTRIBUTE);
+ try
+ {
+ int newMinOccursValue = Integer.parseInt(newMinOccurs);
+ if (!isSetMinOccurs() || newMinOccursValue != getMinOccurs())
+ {
+ setMinOccurs(newMinOccursValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ // Ignore
+ }
+ }
+ else if (isSetMinOccurs())
+ {
+ unsetMinOccurs();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.MAXOCCURS_ATTRIBUTE))
+ {
+ String newMaxOccurs = changedElement.getAttributeNS(null, XSDConstants.MAXOCCURS_ATTRIBUTE);
+ try
+ {
+ int newMaxOccursValue = "unbounded".equals(newMaxOccurs) ? -1 : Integer.parseInt(newMaxOccurs);
+ if (!isSetMaxOccurs() || newMaxOccursValue != getMaxOccurs())
+ {
+ setMaxOccurs(newMaxOccursValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ // Ignore
+ }
+ }
+ else if (isSetMaxOccurs())
+ {
+ unsetMaxOccurs();
+ }
+
+ XSDParticleContent theContent = getContent();
+ if (theContent != null)
+ {
+ theContent.elementAttributesChanged(changedElement);
+ }
+ }
+ }
+
+ @Override
+ protected void reconcileContents(Element changedElement)
+ {
+ super.reconcileContents(changedElement);
+ XSDParticleContent theContent = getContent();
+ if (theContent != null)
+ {
+ theContent.elementContentsChanged(changedElement);
+
+ XSDTerm newTerm =
+ (XSDTerm)
+ new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDElementDeclaration(XSDElementDeclaration xsdElementDeclaration)
+ {
+ return xsdElementDeclaration.getResolvedElementDeclaration();
+ }
+ @Override
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ return xsdModelGroupDefinition.getResolvedModelGroupDefinition().getModelGroup();
+ }
+ @Override
+ public Object caseXSDWildcard(XSDWildcard xsdWildcard)
+ {
+ return xsdWildcard;
+ }
+ @Override
+ public Object caseXSDModelGroup(XSDModelGroup xsdModelGroup)
+ {
+ return xsdModelGroup;
+ }
+ }.doSwitch(theContent);
+
+ if (newTerm != getTerm())
+ {
+ setTerm(newTerm);
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_PARTICLE__MIN_OCCURS)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ isSetMinOccurs() ? Integer.toString(getMinOccurs()) : null);
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_PARTICLE__MAX_OCCURS)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ isSetMaxOccurs() ? getMaxOccurs() == -1 ? "unbounded" : Integer.toString(getMaxOccurs()) : null);
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_PARTICLE__CONTENT)
+ {
+ patchHelper();
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_PARTICLE__CONTENT)
+ {
+ patchHelper();
+ traverseToRootForPatching();
+ }
+ }
+
+ public static class XSDNFA implements XSDParticle.DFA
+ {
+ private static final class StateList extends BasicEList<State>
+ {
+ private static final long serialVersionUID = 1L;
+
+ public StateList()
+ {
+ super();
+ }
+
+ public StateList(Collection<State> states)
+ {
+ super(states);
+ }
+
+ @Override
+ protected Object [] newData(int capacity)
+ {
+ return new StateImpl [capacity];
+ }
+
+ @Override
+ protected final boolean useEquals()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object object)
+ {
+ for (int i = 0; i < size; ++i)
+ {
+ if (data[i] == object)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public void clear()
+ {
+ Object [] oldData = data;
+ super.clear();
+ data = oldData;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T[] toArray(T[] array)
+ {
+ if (array == EMPTY_STATE_ARRAY)
+ {
+ return (T[])data;
+ }
+ else
+ {
+ return super.toArray(array);
+ }
+ }
+ }
+
+ private static final class TransitionList extends UniqueEList<Transition>
+ {
+ private static final long serialVersionUID = 1L;
+
+ Set<XSDParticle.DFA.Transition> set = new HashSet<XSDParticle.DFA.Transition>();
+
+ @Override
+ protected Object[] newData(int capacity)
+ {
+ return new TransitionImpl [capacity];
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends Transition> collection)
+ {
+ boolean result = false;
+ Transition [] transitions = collection.toArray(EMPTY_TRANSITION_ARRAY);
+ int collectionSize = collection.size();
+ grow(size + collectionSize);
+ for (int i = 0; i < collectionSize; ++i)
+ {
+ Transition transition = transitions[i];
+ if (set.add(transition))
+ {
+ data[size++] = transition;
+ result = true;
+ }
+ }
+ return result;
+ }
+
+ @Override
+ protected void didAdd(int index, Transition newObject)
+ {
+ set.add(newObject);
+ }
+
+ @Override
+ protected void didRemove(int index, Transition oldObject)
+ {
+ set.remove(oldObject);
+ }
+
+ @Override
+ protected void didClear(int size, Object[] oldObjects)
+ {
+ set.clear();
+ }
+
+ @Override
+ public boolean contains(Object object)
+ {
+ return set.contains(object);
+ }
+
+ @Override
+ public void clear()
+ {
+ Object [] oldData = data;
+ super.clear();
+ data = oldData;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T[] toArray(T[] array)
+ {
+ if (array == EMPTY_TRANSITION_ARRAY)
+ {
+ return (T[])data;
+ }
+ else
+ {
+ return super.toArray(array);
+ }
+ }
+ }
+
+ public static class StateImpl implements XSDParticle.DFA.State
+ {
+ protected UniqueEList<XSDParticle.DFA.Transition> transitions;
+ protected boolean isAccepting;
+
+ public StateImpl()
+ {
+ transitions = new TransitionList();
+ }
+
+ public List<XSDParticle.DFA.Transition> getTransitions()
+ {
+ return transitions;
+ }
+
+ public boolean isAccepting()
+ {
+ return isAccepting;
+ }
+
+ public void setAccepting(boolean isAccepting)
+ {
+ this.isAccepting = isAccepting;
+ }
+
+ protected TransitionImpl createdTransition;
+
+ public XSDParticle.DFA.Transition createTransition(XSDParticle xsdParticle, XSDParticle.DFA.State state)
+ {
+ if (createdTransition == null)
+ {
+ createdTransition = new TransitionImpl(xsdParticle, state);
+ }
+ else
+ {
+ createdTransition.setParticle(xsdParticle);
+ createdTransition.setState(state);
+ }
+
+ if (transitions.add(createdTransition))
+ {
+ XSDParticle.DFA.Transition result = createdTransition;
+ createdTransition = null;
+ return result;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public XSDParticle.DFA.Transition accept(String namespaceURI, String localName)
+ {
+ for (Transition transition : getTransitions())
+ {
+ XSDParticle xsdParticle = transition.getParticle();
+ XSDTerm xsdTerm = xsdParticle.getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ if ((namespaceURI == null ?
+ xsdElementDeclaration.getTargetNamespace() == null :
+ namespaceURI.equals(xsdElementDeclaration.getTargetNamespace())) &&
+ localName.equals(xsdElementDeclaration.getName()))
+ {
+ return transition;
+ }
+ }
+ else if (xsdTerm instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm;
+ if (xsdWildcard.allows(namespaceURI))
+ {
+ return transition;
+ }
+ }
+ }
+
+ return null;
+ }
+ }
+
+ public static class TransitionImpl implements XSDParticle.DFA.Transition
+ {
+ protected XSDParticle xsdParticle;
+ protected XSDParticle.DFA.State state;
+ protected int hashCode;
+
+ public TransitionImpl(XSDParticle xsdParticle, XSDParticle.DFA.State state)
+ {
+ this.xsdParticle = xsdParticle;
+ this.state = state;
+ hashCode = -1;
+ }
+
+ public final XSDParticle.DFA.State getState()
+ {
+ return state;
+ }
+
+ public void setState(XSDParticle.DFA.State state)
+ {
+ this.state = state;
+ hashCode = -1;
+ }
+
+ public final XSDParticle getParticle()
+ {
+ return xsdParticle;
+ }
+
+ public void setParticle(XSDParticle xsdParticle)
+ {
+ this.xsdParticle = xsdParticle;
+ hashCode = -1;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ if (hashCode == -1)
+ {
+ hashCode = (xsdParticle == null ? 0 : xsdParticle.hashCode()) ^ (state == null ? 0 : state.hashCode());
+ }
+ return hashCode;
+ }
+
+ @Override
+ public boolean equals(Object that)
+ {
+ if (that instanceof TransitionImpl)
+ {
+ TransitionImpl otherTransition = (TransitionImpl)that;
+ return
+ xsdParticle == otherTransition.xsdParticle &&
+ state == otherTransition.state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ private static final StateImpl[] EMPTY_STATE_ARRAY = new StateImpl [0];
+ private static final TransitionImpl[] EMPTY_TRANSITION_ARRAY = new TransitionImpl [0];
+
+ protected List<State> states = new StateList();
+
+ protected StateImpl initialState;
+ protected StateImpl finalState;
+ protected XSDParticle xsdParticle;
+ protected StateImpl currentState;
+ protected Set<XSDModelGroup> visitedModelGroups;
+ protected Collection<XSDDiagnostic> diagnostics;
+ protected boolean isApproximate;
+
+ protected XSDNFA(boolean isApproximate)
+ {
+ this.isApproximate = isApproximate;
+ currentState = initialState = createState(null);
+ finalState = createState(null);
+ }
+
+ protected XSDNFA(Set<XSDModelGroup> visitedModelGroups, XSDParticle xsdParticle, XSDTerm xsdTerm, boolean isApproximate)
+ {
+ this.isApproximate = isApproximate;
+ this.visitedModelGroups = visitedModelGroups;
+ this.xsdParticle = xsdParticle;
+ currentState = initialState = createState(null);
+ finalState = createState(xsdTerm);
+ if (!visitedModelGroups.contains(xsdTerm))
+ {
+ initialize(xsdTerm);
+ }
+ }
+
+ public XSDNFA(Set<XSDModelGroup> visitedModelGroups, XSDParticle xsdParticle, boolean isApproximate)
+ {
+ this.isApproximate = isApproximate;
+ this.visitedModelGroups = visitedModelGroups;
+ this.xsdParticle = xsdParticle;
+ currentState = initialState = createState(null);
+ finalState = createState(xsdParticle);
+ initialize(xsdParticle);
+ }
+
+ public XSDNFA(XSDParticle xsdParticle, boolean isApproximate)
+ {
+ this.isApproximate = isApproximate;
+ this.visitedModelGroups = new HashSet<XSDModelGroup>();
+ this.xsdParticle = xsdParticle;
+ currentState = initialState = createState(null);
+ finalState = createState(xsdParticle);
+ initialize(xsdParticle);
+ }
+
+ protected void checkBadTransitions()
+ {
+ for (State state : getStates())
+ {
+ for (Transition transition : state.getTransitions())
+ {
+ if (!getStates().contains(transition.getState()))
+ {
+ Thread.dumpStack();
+ }
+ }
+ }
+ }
+
+ protected XSDNFA(XSDNFA original, boolean isApproximate)
+ {
+ this.isApproximate = isApproximate;
+ xsdParticle = original.getParticle();
+
+ Map<State, State> stateCloneMap = new HashMap<State, State>();
+ List<State> originalStates = original.getStates();
+ for (int i = 0, size = originalStates.size(); i < size; ++i)
+ {
+ State originalState = originalStates.get(i);
+ StateImpl clonedState = createState(null);
+ stateCloneMap.put(originalState, clonedState);
+ clonedState.setAccepting(originalState.isAccepting());
+ }
+
+ currentState = initialState = (StateImpl)stateCloneMap.get(original.getInitialState());
+ finalState = (StateImpl)stateCloneMap.get(original.getFinalState());
+
+ for (int i = 0, size = originalStates.size(); i < size; ++i)
+ {
+ State originalState = originalStates.get(i);
+ List<Transition> originalTransitions = originalState.getTransitions();
+ for (int j = 0, transitionSize = originalTransitions.size(); j < transitionSize; ++j)
+ {
+ Transition originalTransition = originalTransitions.get(j);
+ ((StateImpl)stateCloneMap.get(originalState)).createTransition
+ (originalTransition.getParticle(), stateCloneMap.get(originalTransition.getState()));
+ }
+ }
+ }
+
+ protected StateImpl createState(XSDComponent associatedComponent)
+ {
+ StateImpl result = new StateImpl();
+ states.add(result);
+ return result;
+ }
+
+ protected void initialize(XSDComponent xsdComponent)
+ {
+ if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent;
+ for (XSDElementDeclaration substititonGroupMember : xsdElementDeclaration.getSubstitutionGroup())
+ {
+ if (substititonGroupMember == xsdElementDeclaration)
+ {
+ initialState.createTransition(xsdParticle, finalState);
+ }
+ else
+ {
+ XSDParticle substititonGroupMemberParticle = ((XSDParticleImpl)xsdParticle).getXSDFactory().createXSDParticle();
+ substititonGroupMemberParticle.setTerm(substititonGroupMember);
+ initialState.createTransition(substititonGroupMemberParticle, finalState);
+ }
+ }
+ }
+ else if (xsdComponent instanceof XSDWildcard)
+ {
+ initialState.createTransition(xsdParticle, finalState);
+ }
+ else if (xsdComponent instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdComponent;
+ visitedModelGroups.add(xsdModelGroup);
+ switch (xsdModelGroup.getCompositor().getValue())
+ {
+ case XSDCompositor.SEQUENCE:
+ {
+ StateImpl previousState = initialState;
+ for (XSDParticle xsdParticle : xsdModelGroup.getParticles())
+ {
+ XSDNFA particleNFA = new XSDNFA(visitedModelGroups, xsdParticle, isApproximate);
+ propagateStates(particleNFA);
+ previousState.createTransition(null, particleNFA.getInitialState());
+ previousState = (StateImpl)particleNFA.getFinalState();
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+ previousState.createTransition(null, finalState);
+ break;
+ }
+ case XSDCompositor.CHOICE:
+ {
+ for (XSDParticle xsdParticle : xsdModelGroup.getParticles())
+ {
+ XSDNFA particleNFA = new XSDNFA(visitedModelGroups, xsdParticle, isApproximate);
+ propagateStates(particleNFA);
+ initialState.createTransition(null, particleNFA.getInitialState());
+ ((StateImpl)particleNFA.getFinalState()).createTransition(null, finalState);
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+ break;
+ }
+ case XSDCompositor.ALL:
+ default:
+ {
+ if (visitedModelGroups.size() > 1)
+ {
+ if (diagnostics == null)
+ {
+ diagnostics = new ArrayList<XSDDiagnostic>();
+ }
+
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(xsdDiagnostic, "cos-all-limited.1", null)
+ }));
+
+ diagnostics.add(xsdDiagnostic);
+ }
+
+ if (xsdModelGroup.getParticles().size() == 0)
+ {
+ initialState.createTransition(null, finalState);
+ }
+ else
+ {
+ List<XSDNFA> particleNFAs = new ArrayList<XSDNFA>(xsdModelGroup.getParticles().size());
+ for (XSDParticle xsdParticle : xsdModelGroup.getParticles())
+ {
+ XSDNFA newParticleNFA = new XSDNFA(visitedModelGroups, xsdParticle, isApproximate);
+ particleNFAs.add(newParticleNFA);
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+
+ if (xsdModelGroup.getParticles().size() > 4)
+ {
+ // diagnostics = new ArrayList();
+ // XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ // xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ // xsdDiagnostic.setMessage
+ // (XSDPlugin.INSTANCE.getString
+ // ("_UI_XSDError_message",
+ // new Object []
+ // {
+ // XSDPlugin.INSTANCE.getString
+ // ("coss-particle.0.2", new Object [] { xsdModelGroup.getParticles().size() })
+ // }));
+ // diagnostics.add(xsdDiagnostic);
+
+ isApproximate = true;
+
+ // Treat it like a repeating choice.
+ //
+ for (XSDParticle xsdParticle : xsdModelGroup.getParticles())
+ {
+ XSDNFA particleNFA = new XSDNFA(visitedModelGroups, xsdParticle, isApproximate);
+ propagateStates(particleNFA);
+ initialState.createTransition(null, particleNFA.getInitialState());
+ ((StateImpl)particleNFA.getFinalState()).createTransition(null, finalState);
+ ((StateImpl)particleNFA.getFinalState()).createTransition(null, initialState);
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ XSDNFA xsdNFA = createPermutations(xsdModelGroup.getParticles(), particleNFAs, new HashMap<List<XSDParticle>, XSDNFA>());
+
+ propagateStates(xsdNFA);
+
+ initialState.createTransition(null, xsdNFA.getInitialState());
+ ((StateImpl)xsdNFA.getFinalState()).createTransition(null, finalState);
+ }
+ }
+ break;
+ }
+ }
+ visitedModelGroups.remove(xsdModelGroup);
+ }
+ else if (xsdComponent instanceof XSDParticle)
+ {
+ XSDParticle xsdParticle = (XSDParticle)xsdComponent;
+ int minOccurs = xsdParticle.getMinOccurs();
+ int maxOccurs = xsdParticle.getMaxOccurs();
+ int count = maxOccurs == -1 || isApproximate ? minOccurs : maxOccurs;
+ if (minOccurs <= count)
+ {
+ List<XSDNFA> termNFAs = new ArrayList<XSDNFA>(count);
+ XSDNFA firstTermNFA = new XSDNFA(visitedModelGroups, xsdParticle, xsdParticle.getTerm(), isApproximate);
+ propagateStates(firstTermNFA);
+ termNFAs.add(firstTermNFA);
+ for (int i = 2; i <= count; ++i)
+ {
+ XSDNFA clonedTermNFA = new XSDNFA(firstTermNFA, isApproximate);
+ propagateStates(clonedTermNFA);
+ termNFAs.add(clonedTermNFA);
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+
+ //XSDNFA previousTermNFA = firstTermNFA;
+ StateImpl previousState = initialState;
+ int i;
+ if (minOccurs == 0)
+ {
+ initialState.createTransition(null, firstTermNFA.getInitialState());
+ initialState.createTransition(null, firstTermNFA.getFinalState());
+ previousState = (StateImpl)firstTermNFA.getFinalState();
+ i = 2;
+ }
+ else
+ {
+ for (i = 1; i <= minOccurs; ++i)
+ {
+ XSDNFA termNFA = termNFAs.get(i - 1);
+ previousState.createTransition(null, termNFA.getInitialState());
+ previousState = (StateImpl)termNFA.getFinalState();
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+ }
+
+ if (maxOccurs == -1 || isApproximate)
+ {
+ previousState.createTransition(null, firstTermNFA.getInitialState());
+ }
+ else
+ {
+ for ( ; i <= maxOccurs; ++i)
+ {
+ XSDNFA termNFA = termNFAs.get(i - 1);
+ previousState.createTransition(null, termNFA.getInitialState());
+ ((StateImpl)termNFA.getInitialState()).createTransition(null, finalState);
+ previousState = (StateImpl)termNFA.getFinalState();
+ if (getStates().size() > MAXIMUM_STATES)
+ {
+ break;
+ }
+ }
+ }
+ previousState.createTransition(null, finalState);
+ }
+ }
+ }
+
+ protected XSDNFA createPermutations(List<XSDParticle> particles, List<XSDNFA> particleNFAs, Map<List<XSDParticle>, XSDNFA> particlesToNFAMap)
+ {
+ XSDNFA result = particlesToNFAMap.get(particles);
+ if (result == null)
+ {
+ int size = particleNFAs.size();
+ if (size == 1)
+ {
+ result = new XSDNFA(particleNFAs.get(0), isApproximate);
+ particlesToNFAMap.put(particles, result);
+ }
+ else
+ {
+ result = new XSDNFA(isApproximate);
+ List<XSDNFA> otherParticleNFAs = new ArrayList<XSDNFA>(size - 1);
+ List<XSDParticle> otherParticles = new ArrayList<XSDParticle>(size - 1);
+ for (int i = 0; i < size; ++i)
+ {
+ XSDNFA particleNFA = particleNFAs.get(i);
+ XSDParticle particle = particles.get(i);
+ otherParticleNFAs.clear();
+ otherParticles.clear();
+ for (int j = 0; j < size; ++j)
+ {
+ XSDParticle otherParticle = particles.get(j);
+ if (particle != otherParticle)
+ {
+ XSDNFA otherParticleNFA = particleNFAs.get(j);
+ otherParticleNFAs.add(otherParticleNFA);
+ otherParticles.add(otherParticle);
+ }
+ }
+
+ XSDNFA clonedParticleNFA = new XSDNFA(particleNFA, isApproximate);
+ result.propagateStates(clonedParticleNFA);
+ ((StateImpl)result.getInitialState()).createTransition(null, clonedParticleNFA.getInitialState());
+
+ XSDNFA combinationXSDNFA = createPermutations
+ (otherParticles,
+ otherParticleNFAs,
+ particlesToNFAMap);
+ result.propagateStates(combinationXSDNFA);
+
+ ((StateImpl)clonedParticleNFA.getFinalState()).createTransition(null, combinationXSDNFA.getInitialState());
+ ((StateImpl)combinationXSDNFA.getFinalState()).createTransition(null, result.getFinalState());
+ }
+
+ if (result.getStates().size() > 50)
+ {
+ result.epsilonClosure();
+ result.minimize();
+ result.determinize();
+ result.minimize();
+ result.createFinalState();
+ }
+ }
+ particlesToNFAMap.put(particles, result);
+ }
+
+ return result;
+ }
+
+ public boolean isApproximate()
+ {
+ return isApproximate;
+ }
+
+ public List<State> getStates()
+ {
+ return states;
+ }
+
+ public XSDParticle.DFA.State getInitialState()
+ {
+ return initialState;
+ }
+
+ public XSDParticle.DFA.State getFinalState()
+ {
+ return finalState;
+ }
+
+ public XSDParticle getParticle()
+ {
+ return xsdParticle;
+ }
+
+ public static String getComponentLabel(Collection<XSDComponent> xsdComponents)
+ {
+ StringBuffer result = new StringBuffer();
+ result.append("{");
+ for (Iterator<XSDComponent> i = xsdComponents.iterator(); i.hasNext(); )
+ {
+ XSDComponent xsdComponent = i.next();
+ result.append(getComponentLabel(xsdComponent));
+ if (i.hasNext())
+ {
+ result.append(" ");
+ }
+ }
+ result.append("}");
+ return result.toString();
+ }
+
+ public static String getComponentLabel(XSDComponent xsdComponent)
+ {
+ if (xsdComponent == null)
+ {
+ return "-";
+ }
+ else if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent;
+ return xsdElementDeclaration.getName();
+ }
+ else if (xsdComponent instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdComponent;
+ return xsdWildcard.getStringNamespaceConstraint();
+ }
+ else if (xsdComponent instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdComponent;
+ switch (xsdModelGroup.getCompositor().getValue())
+ {
+ case XSDCompositor.SEQUENCE:
+ {
+ return "<sequence/>";
+ }
+ case XSDCompositor.CHOICE:
+ {
+ return "<choice/>";
+ }
+ case XSDCompositor.ALL:
+ default:
+ {
+ return "<all/>";
+ }
+ }
+ }
+ else if (xsdComponent instanceof XSDParticle)
+ {
+ XSDParticle xsdParticle = (XSDParticle)xsdComponent;
+ return getComponentLabel(xsdParticle.getTerm()) + "[" + xsdParticle.getMinOccurs() + "," + xsdParticle.getMaxOccurs() + "]";
+ }
+ else
+ {
+ return xsdComponent.toString();
+ }
+ }
+
+ public void dump(PrintStream out)
+ {
+ List<State> stateList = new StateList(getStates());
+ stateList.remove(initialState);
+ stateList.add(0, initialState);
+ if (finalState != null)
+ {
+ stateList.remove(finalState);
+ stateList.add(finalState);
+ }
+
+ out.println
+ ("Component: " + getComponentLabel(xsdParticle) +
+ " [" + stateList.indexOf(initialState) + ", " +
+ stateList.indexOf(finalState) + "]");
+ for (State state : stateList)
+ {
+ out.println
+ (" State: " + stateList.indexOf(state) + (state.isAccepting() ? " *" : ""));
+
+ for (Transition transition : state.getTransitions())
+ {
+ out.println
+ (" --> : " + getComponentLabel(transition.getParticle()) + " -> " + stateList.indexOf(transition.getState()));
+ }
+ }
+ }
+
+ public void epsilonClosure()
+ {
+ finalState.setAccepting(true);
+ boolean closed;
+
+ StateImpl[] statesArray = states.toArray(EMPTY_STATE_ARRAY);
+ int statesSize = states.size();
+ Set<Transition> nullTransitions = new HashSet<Transition>();
+ do
+ {
+ closed = true;
+ for (int i = 0; i < statesSize; ++i)
+ {
+ StateImpl state = statesArray[i];
+ List<Transition> stateTransitions = state.getTransitions();
+ TransitionImpl [] stateTransitionsArray = stateTransitions.toArray(EMPTY_TRANSITION_ARRAY);
+ for (int j = 0; j < stateTransitions.size(); ++j)
+ {
+ TransitionImpl transition = stateTransitionsArray[j];
+ if (transition.getParticle() == null)
+ {
+ stateTransitions.remove(j);
+ --j;
+ closed = false;
+ State otherState = transition.getState();
+ if (state != otherState && nullTransitions.add(transition))
+ {
+ if (otherState.isAccepting())
+ {
+ state.setAccepting(true);
+ }
+ stateTransitions.addAll(otherState.getTransitions());
+ }
+ stateTransitionsArray = stateTransitions.toArray(EMPTY_TRANSITION_ARRAY);
+ }
+ }
+ nullTransitions.clear();
+ }
+ }
+ while (!closed);
+ }
+
+ public void createFinalState()
+ {
+ finalState = createState(null);
+ for (int i = 0, iSize = states.size(); i < iSize; ++i)
+ {
+ StateImpl state = (StateImpl)states.get(i);
+ if (state.isAccepting())
+ {
+ state.setAccepting(false);
+ state.createTransition(null, finalState);
+ }
+ }
+ }
+
+ protected TransitionImpl testTransition = new TransitionImpl(null, null);
+
+ public boolean isEquivalent(XSDParticle.DFA.State s1, XSDParticle.DFA.State s2)
+ {
+ if (s1.isAccepting() != s2.isAccepting() || s1.getTransitions().size() != s2.getTransitions().size())
+ {
+ return false;
+ }
+ else
+ {
+ List<Transition> stateTransitions = s1.getTransitions();
+ TransitionImpl[] stateTransitionsArray = stateTransitions.toArray(EMPTY_TRANSITION_ARRAY);
+ for (int i = 0, iSize = stateTransitions.size(); i < iSize; ++i)
+ {
+ TransitionImpl transition = stateTransitionsArray[i];
+ testTransition.setParticle(transition.getParticle());
+ testTransition.setState(transition.getState());
+
+ if (!s2.getTransitions().contains(testTransition))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ }
+
+ public void minimize()
+ {
+ int size = states.size();
+ StateImpl [] theStates = states.toArray(new StateImpl[size]);
+ StateList equivalentStates = new StateList();
+ equivalentStates.grow(size);
+ boolean minimal;
+ do
+ {
+ minimal = true;
+ for (int i = 0; i < theStates.length; ++i)
+ {
+ StateImpl state = theStates[i];
+ if (state != null)
+ {
+ for (int j = i + 1; j < theStates.length; ++j)
+ {
+ State otherState = theStates[j];
+ if (otherState != null && isEquivalent(state, otherState))
+ {
+ equivalentStates.add(otherState);
+ theStates[j] = null;
+ }
+ }
+ if (!equivalentStates.isEmpty())
+ {
+ for (int j = 0; j < theStates.length; ++j)
+ {
+ State otherState = theStates[j];
+ if (otherState != null)
+ {
+ List<Transition> theTransitions = otherState.getTransitions();
+ TransitionImpl[] theTransitionsArray = theTransitions.toArray(EMPTY_TRANSITION_ARRAY);
+ if (equivalentStates.contains(otherState))
+ {
+ for (int k = 0, kSize = theTransitions.size(); k < kSize; ++k)
+ {
+ TransitionImpl transition = theTransitionsArray[k];
+ State outgoingState = transition.getState();
+ if (equivalentStates.contains(outgoingState))
+ {
+ state.createTransition(transition.getParticle(), state);
+ }
+ else
+ {
+ state.createTransition(transition.getParticle(), outgoingState);
+ }
+ }
+ }
+ else
+ {
+ for (int k = theTransitions.size(); --k >= 0; )
+ {
+ TransitionImpl transition = theTransitionsArray[k];
+ State outgoingState = transition.getState();
+ if (equivalentStates.contains(outgoingState))
+ {
+ theTransitions.remove(k);
+ theTransitions.add(new TransitionImpl(transition.getParticle(), state));
+ }
+ }
+ }
+ }
+ }
+
+ states.removeAll(equivalentStates);
+ equivalentStates.clear();
+ minimal = false;
+ }
+ }
+ }
+ }
+ while (!minimal);
+ }
+
+ protected XSDElementDeclaration [] xsdElementDeclarations;
+
+ public int checksum()
+ {
+ int result = 0;
+ if (xsdElementDeclarations != null)
+ {
+ for (int i = 0, length = xsdElementDeclarations.length; i < length; ++i)
+ {
+ result += xsdElementDeclarations[i].getSubstitutionGroup().hashCode();
+ }
+ }
+ else
+ {
+ List<XSDElementDeclaration> elements = new UniqueEList.FastCompare<XSDElementDeclaration>();
+ StateImpl[] statesArray = states.toArray(EMPTY_STATE_ARRAY);
+ for (int i = 0, iSize = states.size(); i < iSize; ++i)
+ {
+ StateImpl state = statesArray[i];
+ List<Transition> theTransitions = state.getTransitions();
+ TransitionImpl[] transitionsArray = theTransitions.toArray(EMPTY_TRANSITION_ARRAY);
+ for (int j = 0, jSize = theTransitions.size(); j < jSize; ++j)
+ {
+ TransitionImpl transition = transitionsArray[j];
+ XSDTerm xsdTerm = transition.getParticle().getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ if (elements.add(xsdElementDeclaration))
+ {
+ result += xsdElementDeclaration.getSubstitutionGroup().hashCode();
+ }
+ }
+ }
+ }
+ xsdElementDeclarations = new XSDElementDeclaration[elements.size()];
+ elements.toArray(xsdElementDeclarations);
+ }
+ return result;
+ }
+
+ public void determinize()
+ {
+ Set<Set<State>> stateSubsets = new HashSet<Set<State>>();
+ State originalInitialState = initialState;
+ Set<State> initialStateSubset = Collections.<State>singleton(initialState);
+ stateSubsets.add(initialStateSubset);
+
+ states.clear();
+ currentState = initialState = createState(null);
+ initialState.setAccepting(originalInitialState.isAccepting());
+ finalState = null;
+ xsdParticle = null;
+
+ Map<Set<State>, State> stateSubsetToStateMap = new HashMap<Set<State>, State>();
+ stateSubsetToStateMap.put(initialStateSubset, initialState);
+ List<Transition> transitions = new TransitionList();
+ do
+ {
+ Iterator<Set<State>> s = stateSubsets.iterator();
+ Set<State> stateSubset = s.next();
+ s.remove();
+
+ StateImpl newState = (StateImpl)stateSubsetToStateMap.get(stateSubset);
+
+ transitions.clear();
+ for (State originalState : stateSubset)
+ {
+ transitions.addAll(originalState.getTransitions());
+ }
+
+ TransitionImpl [] transitionsArray = transitions.toArray(EMPTY_TRANSITION_ARRAY);
+ int count = transitions.size();
+ while (count > 0)
+ {
+ TransitionImpl originalTransition = transitionsArray[0];
+ int moveIndex = 0;
+ int index = 1;
+ XSDParticle particle = originalTransition.getParticle();
+ State orginalTransitionState = originalTransition.getState();
+ Set<State> newStateSubset = new HashSet<State>();
+ newStateSubset.add(orginalTransitionState);
+ boolean isAccepting = orginalTransitionState.isAccepting();
+ while (index < count)
+ {
+ TransitionImpl otherOriginalTransition = transitionsArray[index++];
+ if (otherOriginalTransition.getParticle() == particle)
+ {
+ State otherOriginalTransitionState = otherOriginalTransition.getState();
+ newStateSubset.add(otherOriginalTransitionState);
+ if (otherOriginalTransitionState.isAccepting())
+ {
+ isAccepting = true;
+ }
+ }
+ else
+ {
+ // Shift it forward to the next unused slot for subsequent processing.
+ //
+ transitionsArray[moveIndex++] = otherOriginalTransition;
+ }
+ }
+ count = moveIndex;
+ StateImpl newNextState = (StateImpl)stateSubsetToStateMap.get(newStateSubset);
+ if (newNextState == null)
+ {
+ newNextState = createState(null);
+ if (isAccepting)
+ {
+ newNextState.setAccepting(true);
+ }
+ stateSubsetToStateMap.put(newStateSubset, newNextState);
+ stateSubsets.add(newStateSubset);
+ }
+ else
+ {
+ if (newNextState.isAccepting() != isAccepting)
+ {
+ Thread.dumpStack();
+ }
+ }
+
+ newState.createTransition(particle, newNextState);
+ }
+ }
+ while (!stateSubsets.isEmpty());
+ }
+
+ public XSDDiagnostic checkOverlap(XSDTerm xsdComponent1, XSDTerm xsdComponent2)
+ {
+ if (xsdComponent1 instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration1 = (XSDElementDeclaration)xsdComponent1;
+ return checkOverlap(xsdElementDeclaration1, xsdComponent2);
+ }
+ else if (xsdComponent1 instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard1 = (XSDWildcard)xsdComponent1;
+ return checkOverlap(xsdWildcard1, xsdComponent2);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected XSDDiagnostic checkOverlap(XSDElementDeclaration xsdElementDeclaration1, XSDTerm xsdComponent2)
+ {
+ if (xsdComponent2 instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration2 = (XSDElementDeclaration)xsdComponent2;
+ if (xsdElementDeclaration1.hasSameNameAndTargetNamespace(xsdElementDeclaration2))
+ {
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic
+ (xsdDiagnostic, "key-overlap.1", new Object [] { xsdElementDeclaration1.getURI() })
+ }));
+ return xsdDiagnostic;
+ }
+ }
+ else if (xsdComponent2 instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard2 = (XSDWildcard)xsdComponent2;
+ if (xsdWildcard2.allows(xsdElementDeclaration1.getTargetNamespace()))
+ {
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(xsdDiagnostic, "key-overlap.2", new Object [] { xsdElementDeclaration1.getURI() })
+ }));
+ return xsdDiagnostic;
+ }
+ }
+ return null;
+ }
+
+ protected XSDDiagnostic checkOverlap(XSDWildcard xsdWildcard1, XSDTerm xsdComponent2)
+ {
+ if (xsdComponent2 instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration2 = (XSDElementDeclaration)xsdComponent2;
+ if (xsdWildcard1.allows(xsdElementDeclaration2.getTargetNamespace()))
+ {
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(xsdDiagnostic, "key-overlap.2", new Object [] { xsdElementDeclaration2.getURI() })
+ }));
+ return xsdDiagnostic;
+ }
+ }
+ else if (xsdComponent2 instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard2 = (XSDWildcard)xsdComponent2;
+ XSDWildcard intersection = xsdWildcard1.attributeWildcardIntersection(xsdWildcard2);
+ if (intersection != null && !intersection.getNamespaceConstraint().isEmpty())
+ {
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(xsdDiagnostic, "key-overlap.3", new Object [] { intersection.getNamespaceConstraint().get(0) })
+ }));
+ return xsdDiagnostic;
+ }
+ }
+ return null;
+ }
+
+ public void propagateStates(XSDNFA xsdNFA)
+ {
+ states.addAll(xsdNFA.getStates());
+ if (xsdNFA.diagnostics != null)
+ {
+ if (diagnostics == null)
+ {
+ diagnostics = new ArrayList<XSDDiagnostic>();
+ }
+ diagnostics.addAll(xsdNFA.diagnostics);
+ }
+ }
+
+ public Collection<XSDDiagnostic> getDiagnostics()
+ {
+ if (diagnostics == null)
+ {
+ diagnostics = new ArrayList<XSDDiagnostic>();
+ Map<String, XSDTypeDefinition> elementURIToTypeMap = new HashMap<String, XSDTypeDefinition>();
+ int iSize = states.size();
+ if (iSize > MAXIMUM_STATES)
+ {
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.WARNING_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(xsdDiagnostic, "coss-particle.0.1", new Object [] { getStates().size() })
+ }));
+ diagnostics.add(xsdDiagnostic);
+ }
+ else
+ {
+ StateImpl [] statesArray = states.toArray(EMPTY_STATE_ARRAY);
+ Map<String, XSDElementDeclaration> uriToElementMap = new HashMap<String, XSDElementDeclaration>();
+ for (int i = 0; i < iSize; ++i)
+ {
+ StateImpl state = statesArray[i];
+ List<Transition> transitions = state.getTransitions();
+ TransitionImpl[] transitionsArray = transitions.toArray(EMPTY_TRANSITION_ARRAY);
+ int jSize = transitions.size();
+ uriToElementMap.clear();
+ for (int j = 0; j < jSize; ++j)
+ {
+ TransitionImpl transition = transitionsArray[j];
+ XSDTerm xsdTerm = transition.getParticle().getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ XSDTypeDefinition xsdTypeDefinition = xsdElementDeclaration.getTypeDefinition();
+ Object otherXSDTypeDefinition = elementURIToTypeMap.put(xsdElementDeclaration.getURI(), xsdTypeDefinition);
+ if (otherXSDTypeDefinition != null && otherXSDTypeDefinition != xsdTypeDefinition)
+ {
+ XSDDiagnostic xsdDiagnostic = XSDFactory.eINSTANCE.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic
+ (xsdDiagnostic,
+ "cos-element-consistent",
+ new Object []
+ {
+ xsdElementDeclaration.getURI(),
+ xsdTypeDefinition.getURI(),
+ ((XSDTypeDefinition)otherXSDTypeDefinition).getURI()
+ })
+ }));
+ diagnostics.add(xsdDiagnostic);
+ }
+
+ if (jSize > 1)
+ {
+ XSDElementDeclaration otherXSDElementDeclaration = uriToElementMap.put(xsdElementDeclaration.getURI(), xsdElementDeclaration);
+ if (otherXSDElementDeclaration != null)
+ {
+ XSDDiagnostic xsdDiagnostic = checkOverlap(xsdElementDeclaration, otherXSDElementDeclaration);
+ if (xsdDiagnostic != null)
+ {
+ diagnostics.add(xsdDiagnostic);
+ }
+ }
+ }
+ }
+ }
+ // Only if there are wildcards do the check for overlapping wildcards.
+ //
+ if (jSize > 1 && uriToElementMap.size() <= jSize)
+ {
+ for (int j = 0; j < jSize; ++j)
+ {
+ TransitionImpl transition = transitionsArray[j];
+ XSDTerm xsdTerm = transition.getParticle().getTerm();
+ if (xsdTerm instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm;
+ for (int k = j + 1; k < jSize; ++k)
+ {
+ TransitionImpl otherTransition = transitionsArray[k];
+ XSDDiagnostic xsdDiagnostic = checkOverlap(xsdWildcard, otherTransition.getParticle().getTerm());
+ if (xsdDiagnostic != null)
+ {
+ diagnostics.add(xsdDiagnostic);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return diagnostics;
+ }
+
+ public XSDParticle.DFA.State getCurrentState()
+ {
+ return currentState;
+ }
+
+ public void reset()
+ {
+ currentState = initialState;
+ }
+
+ public XSDParticle.DFA cloneDFA()
+ {
+ return new XSDNFA(this, isApproximate);
+ }
+ }
+
+ public static final boolean debug = false;
+
+ protected XSDNFA xsdNFA;
+ protected int xsdNFACheckSum;
+
+ public XSDParticle.DFA getDFA()
+ {
+ if (xsdNFA == null || (!getSchema().getSchemaForSchemaNamespace().equals(getSchema().getTargetNamespace()) && xsdNFACheckSum != xsdNFA.checksum()))
+ {
+ XSDNFA localNFA = new XSDNFA(this, false);
+ if (localNFA.getStates().size() > MAXIMUM_STATES)
+ {
+ localNFA = new XSDNFA(this, true);
+ }
+ if (localNFA.getStates().size() < MAXIMUM_STATES)
+ {
+ if (debug)
+ {
+ System.out.println("-- NFA initial --");
+ localNFA.dump(System.out);
+ System.out.println("-- NFA no-epsilon --");
+ }
+ localNFA.epsilonClosure();
+ if (debug)
+ {
+ localNFA.dump(System.out);
+ System.out.println("-- NFA minimal --");
+ }
+ localNFA.minimize();
+ if (debug)
+ {
+ localNFA.dump(System.out);
+ System.out.println("-- DFA --");
+ }
+ localNFA.determinize();
+ if (debug)
+ {
+ localNFA.dump(System.out);
+ System.out.println("-- DFA minimal--");
+ }
+ localNFA.minimize();
+ if (debug)
+ {
+ localNFA.dump(System.out);
+ }
+ }
+ else
+ {
+ // Clean up bad transitions.
+ //
+ for (DFA.State state : localNFA.getStates())
+ {
+ for (Iterator<DFA.Transition> j = state.getTransitions().iterator(); j.hasNext(); )
+ {
+ DFA.Transition transition = j.next();
+ if (transition.getParticle() == null)
+ {
+ j.remove();
+ }
+ }
+ }
+ }
+ xsdNFA = localNFA;
+ }
+ return xsdNFA;
+ }
+
+ public boolean isEmptiable()
+ {
+ return getDFA().getInitialState().isAccepting();
+ }
+
+ public boolean isSubset(XSDParticle otherParticle)
+ {
+ return isSubset(otherParticle, false);
+ }
+
+ public boolean isSubset(XSDParticle otherParticle, boolean diagnose)
+ {
+ XSDNFA subset = (XSDNFA)getDFA();
+ XSDNFA superSet = (XSDNFA)otherParticle.getDFA();
+
+ if (!subset.getDiagnostics().isEmpty() || !superSet.getDiagnostics().isEmpty())
+ {
+ return true;
+ }
+
+ final Set<List<DFA.State>> states = new HashSet<List<DFA.State>>();
+ Map<DFA.State, Object> map =
+ new HashMap<DFA.State, Object>()
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Object put(DFA.State key, Object value)
+ {
+ DFA.State s1 = key;
+ DFA.State s2 = (DFA.State)value;
+ if (s1.isAccepting() && !s2.isAccepting())
+ {
+ return null;
+ }
+
+ @SuppressWarnings("unchecked") Set<DFA.State> set = (Set<DFA.State>)super.get(key);
+ if (set == null)
+ {
+ set = new HashSet<DFA.State>();
+ super.put(key, set);
+ }
+ if (set.add(s2))
+ {
+ List<DFA.State> pair = new ArrayList<DFA.State>(2);
+ pair.add(s1);
+ pair.add(s2);
+ states.add(pair);
+ }
+ return set;
+ }
+ };
+
+ boolean result = false;
+ if (map.put(subset.getInitialState(), superSet.getInitialState()) != null)
+ {
+ Map<XSDElementDeclaration, XSDElementDeclaration> elementMap = new HashMap<XSDElementDeclaration, XSDElementDeclaration>();
+
+ result = true;
+ LOOP: while (!states.isEmpty())
+ {
+ Iterator<List<DFA.State>> iterator = states.iterator();
+ List<DFA.State> pair = iterator.next();
+ iterator.remove();
+
+ DFA.State substate = pair.get(0);
+ DFA.State superState = pair.get(1);
+ for (DFA.Transition subtransition : substate.getTransitions())
+ {
+ XSDTerm subXSDTerm = subtransition.getParticle().getTerm();
+ boolean transitionResult = false;
+ if (subXSDTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration subXSDElementDeclaration = (XSDElementDeclaration)subXSDTerm;
+ for (DFA.Transition superTransition : superState.getTransitions())
+ {
+ XSDTerm superXSDTerm = superTransition.getParticle().getTerm();
+ if (superXSDTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration superXSDElementDeclaration = (XSDElementDeclaration)superXSDTerm;
+ if (superXSDElementDeclaration.hasSameNameAndTargetNamespace(subXSDElementDeclaration))
+ {
+ if (map.put(subtransition.getState(), superTransition.getState()) != null)
+ {
+ elementMap.put(subXSDElementDeclaration, superXSDElementDeclaration);
+ transitionResult = true;
+ break;
+ }
+ else
+ {
+ result = false;
+ break LOOP;
+ }
+ }
+ }
+ else
+ {
+ XSDWildcard superXSDWildcard = (XSDWildcard)superXSDTerm;
+ if (superXSDWildcard.allows(subXSDElementDeclaration.getTargetNamespace()))
+ {
+ if (map.put(subtransition.getState(), superTransition.getState()) != null)
+ {
+ transitionResult = true;
+ break;
+ }
+ else
+ {
+ result = false;
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ XSDWildcard subXSDWildcard = (XSDWildcard)subXSDTerm;
+ for (DFA.Transition superTransition : superState.getTransitions())
+ {
+ XSDTerm superXSDTerm = superTransition.getParticle().getTerm();
+ if (superXSDTerm instanceof XSDWildcard)
+ {
+ XSDWildcard superXSDWildcard = (XSDWildcard)superXSDTerm;
+ if (subXSDWildcard.isWildcardSubset(superXSDWildcard))
+ {
+ if (map.put(subtransition.getState(), superTransition.getState()) != null)
+ {
+ transitionResult = true;
+ break;
+ }
+ else
+ {
+ result = false;
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+
+ if (!transitionResult)
+ {
+ result = false;
+ break LOOP;
+ }
+ }
+ }
+
+ if (result)
+ {
+ for (Map.Entry<XSDElementDeclaration, XSDElementDeclaration> entry : elementMap.entrySet())
+ {
+ XSDElementDeclaration subXSDElementDeclaration = entry.getKey();
+ XSDElementDeclaration superXSDElementDeclaration = entry.getValue();
+
+ if (superXSDElementDeclaration.isNillable() && !subXSDElementDeclaration.isNillable())
+ {
+ result = false;
+ if (diagnose)
+ {
+ getDiagnosticTarget(subXSDElementDeclaration).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "rcase-NameAndTypeOK.2",
+ subXSDElementDeclaration.getURI());
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if (superXSDElementDeclaration.getTypeDefinition() instanceof XSDSimpleTypeDefinition)
+ {
+ if (superXSDElementDeclaration.getConstraint() == XSDConstraint.FIXED_LITERAL &&
+ superXSDElementDeclaration.getLexicalValue() != null &&
+ (subXSDElementDeclaration.getConstraint() != XSDConstraint.FIXED_LITERAL ||
+ !((XSDSimpleTypeDefinition)superXSDElementDeclaration.getTypeDefinition()).equalLiterals
+ (superXSDElementDeclaration.getElement(), superXSDElementDeclaration.getLexicalValue(), subXSDElementDeclaration.getElement(), subXSDElementDeclaration.getLexicalValue())))
+ {
+ result = false;
+ if (diagnose)
+ {
+ getDiagnosticTarget(subXSDElementDeclaration).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "rcase-NameAndTypeOK.4",
+ subXSDElementDeclaration.getLexicalValue(),
+ subXSDElementDeclaration.getURI());
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ if (!subXSDElementDeclaration.getDisallowedSubstitutions().containsAll
+ (superXSDElementDeclaration.getDisallowedSubstitutions()))
+ {
+ result = false;
+ if (diagnose)
+ {
+ getDiagnosticTarget(subXSDElementDeclaration).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "rcase-NameAndTypeOK.6",
+ subXSDElementDeclaration.getURI());
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ XSDTypeDefinition badType =
+ subXSDElementDeclaration.getTypeDefinition().getBadTypeDerivation
+ (superXSDElementDeclaration.getTypeDefinition(), false, true);
+ if (badType != null)
+ {
+ result = false;
+ if (diagnose)
+ {
+ getDiagnosticTarget(subXSDElementDeclaration).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "rcase-NameAndTypeOK.7",
+ subXSDElementDeclaration.getURI(),
+ superXSDElementDeclaration.getTypeDefinition().getURI());
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // if (!result)
+ // {
+ // printDFA(subset);
+ // printDFA(superSet);
+ // }
+
+ return result;
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDParticleImpl clonedParticle =
+ (XSDParticleImpl)getXSDFactory().createXSDParticle();
+ clonedParticle.isReconciling = true;
+
+ if (isSetMinOccurs())
+ {
+ clonedParticle.setMinOccurs(getMinOccurs());
+ }
+ if (isSetMaxOccurs())
+ {
+ clonedParticle.setMaxOccurs(getMaxOccurs());
+ }
+
+ clonedParticle.setContent((XSDParticleContent)getContent().cloneConcreteComponent(deep, shareDOM));
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedParticle.setElement(getElement());
+ }
+
+ clonedParticle.isReconciling = shareDOM;
+ return clonedParticle;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDPatternFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDPatternFacetImpl.java
new file mode 100644
index 0000000..a8acc09
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDPatternFacetImpl.java
@@ -0,0 +1,358 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.xml.type.internal.RegEx.ParseException;
+import org.eclipse.emf.ecore.xml.type.internal.RegEx.RegularExpression;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pattern Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDPatternFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDPatternFacetImpl
+ extends XSDRepeatableFacetImpl
+ implements XSDPatternFacet
+{
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> value;
+
+ public static XSDPatternFacet createPatternFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.PATTERN_ELEMENT)
+ {
+ XSDPatternFacet xsdPatternFacet = XSDFactory.eINSTANCE.createXSDPatternFacet();
+ xsdPatternFacet.setElement((Element)node);
+ return xsdPatternFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDPatternFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_PATTERN_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getValue()
+ {
+ if (value == null)
+ {
+ value = new EDataTypeUniqueEList<String>(String.class, this, XSDPackage.XSD_PATTERN_FACET__VALUE);
+ }
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PATTERN_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PATTERN_FACET__VALUE:
+ getValue().clear();
+ getValue().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PATTERN_FACET__VALUE:
+ getValue().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_PATTERN_FACET__VALUE:
+ return value != null && !value.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.PATTERN_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ protected Collection<RegularExpression> patterns;
+ public Collection<RegularExpression> getPatterns(boolean withDiagnostics)
+ {
+ if (patterns == null || withDiagnostics)
+ {
+ ArrayList<RegularExpression> result = new ArrayList<RegularExpression>();
+ Collection<String> theValues = getValue();
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = getSimpleTypeDefinition();
+ if (theValues.isEmpty())
+ {
+ if (xsdSimpleTypeDefinition != null && !xsdSimpleTypeDefinition.getSyntheticFacets().contains(this))
+ {
+ createRequiredAttributeDiagnostic(XSDConstants.PART1, "element-pattern", getElement(), XSDConstants.VALUE_ATTRIBUTE);
+ }
+ }
+ else
+ {
+ for (String value : theValues)
+ {
+ try
+ {
+ if (value.contains("child:") && xsdSimpleTypeDefinition != null && XSDUtil.isSchemaForSchemaNamespace(xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ value = value.replaceAll("\\\\\\.|@|//?|\\\\\\|", "\\\\s*$0\\\\s*");
+ }
+
+ result.add(new RegularExpression(value, "X"));
+ }
+ catch (ParseException parseException)
+ {
+ if (withDiagnostics)
+ {
+ createPatternDiagnostic(parseException.getMessage(), parseException.getLocation());
+ }
+ }
+ }
+ }
+ patterns = result;
+ }
+ return patterns;
+ }
+
+ @Override
+ public void validateValue()
+ {
+ getPatterns(true);
+ }
+
+ protected XSDDiagnostic createPatternDiagnostic(String parseError, int location)
+ {
+ XSDDiagnostic result = getXSDFactory().createXSDDiagnostic();
+ result.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ result.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic(result, "dt-regex", new Object [] { getLexicalValue(), location, parseError })
+ }));
+ result.setAnnotationURI(XSDConstants.PART1 + "#dt-regex");
+ result.setPrimaryComponent(this);
+ result.setNode(getElement());
+ getDiagnostics().add(result);
+ return result;
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)getContainer();
+ if (xsdSimpleTypeDefinition != null && !xsdSimpleTypeDefinition.getSyntheticFacets().contains(this))
+ {
+ String newValue = getLexicalValue();
+ if (!getValue().contains(newValue))
+ {
+ getValue().clear();
+ if (newValue != null)
+ {
+ getValue().add(newValue);
+ }
+ patterns = null;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ traverseToRootForAnalysis();
+ patterns = null;
+ }
+ }
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ if (value == null)
+ {
+ return false;
+ }
+ else
+ {
+ for (RegularExpression pattern : getPatterns(false))
+ {
+ if (!pattern.matches((String)value))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDPatternFacetImpl clonedPatternFacet =
+ (XSDPatternFacetImpl)getXSDFactory().createXSDPatternFacet();
+ clonedPatternFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedPatternFacet.setLexicalValue(getLexicalValue());
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedPatternFacet.setElement(getElement());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedPatternFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ clonedPatternFacet.isReconciling = shareDOM;
+ return clonedPatternFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefinableComponentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefinableComponentImpl.java
new file mode 100644
index 0000000..3d31f4a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefinableComponentImpl.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDRedefinableComponent;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Redefinable Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDRedefinableComponentImpl#isCircular <em>Circular</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDRedefinableComponentImpl
+ extends XSDNamedComponentImpl
+ implements XSDRedefinableComponent
+{
+ /**
+ * The default value of the '{@link #isCircular() <em>Circular</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCircular()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CIRCULAR_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDRedefinableComponentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_REDEFINABLE_COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public Boolean getCircular()
+ {
+ return isCircular() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public boolean isCircular()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINABLE_COMPONENT__CIRCULAR:
+ return isCircular();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINABLE_COMPONENT__CIRCULAR:
+ return isCircular() != CIRCULAR_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefineContentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefineContentImpl.java
new file mode 100644
index 0000000..2eb0abd
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefineContentImpl.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDRedefineContent;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Redefine Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDRedefineContentImpl
+ extends XSDSchemaContentImpl
+ implements XSDRedefineContent
+{
+ public static XSDRedefineContent createRedefineContent(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ return XSDAnnotationImpl.createAnnotation(node);
+ }
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ {
+ return XSDSimpleTypeDefinitionImpl.createSimpleTypeDefinition(node);
+ }
+ case XSDConstants.COMPLEXTYPE_ELEMENT:
+ {
+ return XSDComplexTypeDefinitionImpl.createComplexTypeDefinition(node);
+ }
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ return XSDAttributeGroupDefinitionImpl.createAttributeGroupDefinition(node);
+ }
+ case XSDConstants.GROUP_ELEMENT:
+ {
+ return XSDModelGroupDefinitionImpl.createModelGroupDefinition(node);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDRedefineContentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_REDEFINE_CONTENT;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefineImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefineImpl.java
new file mode 100644
index 0000000..3709fa7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRedefineImpl.java
@@ -0,0 +1,611 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDRedefineContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Redefine</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDRedefineImpl#getAnnotations <em>Annotations</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDRedefineImpl#getContents <em>Contents</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDRedefineImpl
+ extends XSDSchemaCompositorImpl
+ implements XSDRedefine
+{
+ /**
+ * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAnnotation> annotations;
+
+ /**
+ * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDRedefineContent> contents;
+
+ public static XSDRedefine createRedefine(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.REDEFINE_ELEMENT)
+ {
+ XSDRedefine xsdRedefine = XSDFactory.eINSTANCE.createXSDRedefine();
+ xsdRedefine.setElement((Element)node);
+ return xsdRedefine;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDRedefineImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_REDEFINE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAnnotation> getAnnotations()
+ {
+ if (annotations == null)
+ {
+ annotations = new EObjectEList<XSDAnnotation>(XSDAnnotation.class, this, XSDPackage.XSD_REDEFINE__ANNOTATIONS);
+ }
+ return annotations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDRedefineContent> getContents()
+ {
+ if (contents == null)
+ {
+ contents = new EObjectContainmentEList<XSDRedefineContent>(XSDRedefineContent.class, this, XSDPackage.XSD_REDEFINE__CONTENTS);
+ }
+ return contents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINE__CONTENTS:
+ return ((InternalEList<?>)getContents()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINE__ANNOTATIONS:
+ return getAnnotations();
+ case XSDPackage.XSD_REDEFINE__CONTENTS:
+ return getContents();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINE__ANNOTATIONS:
+ getAnnotations().clear();
+ getAnnotations().addAll((Collection<? extends XSDAnnotation>)newValue);
+ return;
+ case XSDPackage.XSD_REDEFINE__CONTENTS:
+ getContents().clear();
+ getContents().addAll((Collection<? extends XSDRedefineContent>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINE__ANNOTATIONS:
+ getAnnotations().clear();
+ return;
+ case XSDPackage.XSD_REDEFINE__CONTENTS:
+ getContents().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REDEFINE__ANNOTATIONS:
+ return annotations != null && !annotations.isEmpty();
+ case XSDPackage.XSD_REDEFINE__CONTENTS:
+ return contents != null && !contents.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.REDEFINE_ELEMENT);
+ setElement(newElement);
+
+ for (XSDRedefineContent xsdRedefineContent : getContents())
+ {
+ Element contentElement = ((XSDConcreteComponentImpl)xsdRedefineContent).createElement();
+ newElement.appendChild(contentElement);
+ }
+ return newElement;
+ }
+
+ @Override
+ protected void patch()
+ {
+ if (getSchemaLocation() != null && getSchemaLocation().length() > 0)
+ {
+ XSDSchemaImpl containingSchema = (XSDSchemaImpl)getContainer();
+ String oldPendingSchemaLocation = containingSchema.pendingSchemaLocation;
+ if (containingSchema.getSchemaLocation() != null)
+ {
+ containingSchema.pendingSchemaLocation = containingSchema.getSchemaLocation();
+ }
+ resolve("", getSchemaLocation());
+ containingSchema.pendingSchemaLocation = oldPendingSchemaLocation;
+ super.patch();
+ if (oldPendingSchemaLocation == null)
+ {
+ List<XSDSchemaImpl> redefinitions = containingSchema.getSchemasToRedefine();
+ containingSchema.schemasToRedefine = null;
+ for (XSDSchemaImpl schemaToRedefine : redefinitions)
+ {
+ if (schemaToRedefine != containingSchema)
+ {
+ schemaToRedefine.forceResolve = true;
+ schemaToRedefine.setSchemaLocation(schemaToRedefine.pendingSchemaLocation);
+ schemaToRedefine.forceResolve = false;
+ schemaToRedefine.pendingSchemaLocation = null;
+ }
+ }
+ }
+ }
+ else
+ {
+ super.patch();
+ }
+ }
+
+ @Override
+ protected void handleResolvedSchema(XSDSchema xsdSchema)
+ {
+ if (xsdSchema == null)
+ {
+ setResolvedSchema(null);
+ setIncorporatedSchema(null);
+ }
+ else
+ {
+ ((XSDSchemaImpl)xsdSchema).redefined(this);
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-redefine",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.SCHEMALOCATION_ATTRIBUTE,
+ });
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("redefine").getTypeDefinition();
+
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART1, "element-redefine", theElement);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-redefine",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ checkBuiltInTypeConstraint
+ ("anyURI",
+ getSchemaLocation(),
+ XSDConstants.PART1,
+ "element-redefine",
+ theElement,
+ XSDConstants.SCHEMALOCATION_ATTRIBUTE,
+ true);
+
+ XSDSchema theResolvedSchema = getResolvedSchema();
+ if (theResolvedSchema == null)
+ {
+ boolean hasRedefinitions = false;
+ for (XSDRedefineContent content : getContents())
+ {
+ if (!(content instanceof XSDAnnotation))
+ {
+ hasRedefinitions = true;
+ break;
+ }
+ }
+ if (hasRedefinitions)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.1",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ else
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.WARNING_LITERAL,
+ "src-redefine.0",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ }
+ else
+ {
+ if (theResolvedSchema.eResource() == null ||
+ theResolvedSchema.getElement() == null ||
+ XSDConstants.nodeType(theResolvedSchema.getElement()) != XSDConstants.SCHEMA_ELEMENT)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.2",
+ getSchemaLocation() == null ? "" : getSchemaLocation());
+ }
+ else
+ {
+ XSDSchema theSchema = getSchema();
+ if (theSchema.getTargetNamespace() == null ?
+ theResolvedSchema.getTargetNamespace() != null :
+ !theSchema.getTargetNamespace().equals(theResolvedSchema.getTargetNamespace()) &&
+ theResolvedSchema.getTargetNamespace() != null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.3",
+ theResolvedSchema.getTargetNamespace() == null ? "" : theResolvedSchema.getTargetNamespace(),
+ theSchema.getTargetNamespace() == null ? "" : theSchema.getTargetNamespace());
+ }
+ else
+ {
+ for (XSDRedefineContent xsdRedefineContent : getContents())
+ {
+ if (xsdRedefineContent instanceof XSDTypeDefinition)
+ {
+ XSDTypeDefinition xsdTypeDefinition = (XSDTypeDefinition)xsdRedefineContent;
+ XSDTypeDefinition baseType = xsdTypeDefinition.getBaseType();
+ if (baseType == null ||
+ !baseType.hasSameNameAndTargetNamespace(xsdTypeDefinition) ||
+ resolveTypeDefinition(xsdTypeDefinition.getName()).getContainer() == null)
+ {
+ getDiagnosticTarget(xsdTypeDefinition).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.5",
+ xsdTypeDefinition.getName());
+ }
+ }
+ else if (xsdRedefineContent instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)xsdRedefineContent;
+ Collection<XSDModelGroupDefinition> selfReferences = new ArrayList<XSDModelGroupDefinition>();
+ for (Iterator<?> j = xsdModelGroupDefinition.eAllContents(); j.hasNext(); )
+ {
+ Object component = j.next();
+ if (component instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition otherXSDModelGroupDefinition = (XSDModelGroupDefinition)component;
+ if (xsdModelGroupDefinition.hasSameNameAndTargetNamespace
+ (otherXSDModelGroupDefinition.getResolvedModelGroupDefinition()))
+ {
+ selfReferences.add(otherXSDModelGroupDefinition);
+ }
+ }
+ }
+
+ if (selfReferences.isEmpty())
+ {
+ XSDModelGroupDefinition otherXSDModelGroupDefinition =
+ (XSDModelGroupDefinition)((XSDSchemaImpl)getContainer()).getRedefinitionMap().get(xsdModelGroupDefinition);
+ if (otherXSDModelGroupDefinition == null || otherXSDModelGroupDefinition.getContainer() == null)
+ {
+ ((XSDConcreteComponentImpl)xsdModelGroupDefinition).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.6.2.1",
+ xsdModelGroupDefinition.getName());
+ }
+ else
+ {
+ XSDParticle xsdParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ xsdParticle.setTerm(xsdModelGroupDefinition.getModelGroup());
+ XSDParticle otherXSDParticle = XSDFactory.eINSTANCE.createXSDParticle();
+ otherXSDParticle.setTerm(otherXSDModelGroupDefinition.getModelGroup());
+ // EATM This doesn't really work for retargeted schemas.
+ //
+ if (!((XSDParticleImpl)xsdParticle).isSubset(otherXSDParticle, true))
+ {
+ ((XSDConcreteComponentImpl)xsdModelGroupDefinition).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.6.2.2");
+ }
+ }
+ }
+ else
+ {
+ Iterator<XSDModelGroupDefinition> j = selfReferences.iterator();
+ XSDModelGroupDefinition otherXSDModelGroupDefinition = j.next();
+ XSDParticle xsdParticle = (XSDParticle)otherXSDModelGroupDefinition.getContainer();
+ if (xsdParticle.getMinOccurs() != 1 || xsdParticle.getMaxOccurs() != 1)
+ {
+ ((XSDConcreteComponentImpl)xsdParticle).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.6.1.2");
+ }
+
+ while (j.hasNext())
+ {
+ XSDConcreteComponentImpl xsdConcreteComponent = (XSDConcreteComponentImpl)j.next();
+ xsdConcreteComponent.createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.6.1.1");
+ }
+ }
+ }
+ else if (xsdRedefineContent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition)xsdRedefineContent;
+ Collection<XSDAttributeGroupDefinition> selfReferences = new ArrayList<XSDAttributeGroupDefinition>();
+ for (Iterator<?> j = xsdAttributeGroupDefinition.eAllContents(); j.hasNext(); )
+ {
+ Object component = j.next();
+ if (component instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition otherXSDAttributeGroupDefinition = (XSDAttributeGroupDefinition)component;
+ if (xsdAttributeGroupDefinition.hasSameNameAndTargetNamespace
+ (otherXSDAttributeGroupDefinition.getResolvedAttributeGroupDefinition()))
+ {
+ selfReferences.add(otherXSDAttributeGroupDefinition);
+ }
+ }
+ }
+
+ if (selfReferences.isEmpty())
+ {
+ XSDAttributeGroupDefinition otherXSDAttributeGroupDefinition =
+ (XSDAttributeGroupDefinition)((XSDSchemaImpl)getContainer()).getRedefinitionMap().get(xsdAttributeGroupDefinition);
+ if (otherXSDAttributeGroupDefinition == null || otherXSDAttributeGroupDefinition.getContainer() == null)
+ {
+ ((XSDConcreteComponentImpl)xsdAttributeGroupDefinition).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.7.2.1",
+ xsdAttributeGroupDefinition.getName());
+ }
+ else
+ {
+ // EATM This doesn't really work for retargeted schemas.
+ //
+ XSDComplexTypeDefinitionImpl.validateAttributeGroup
+ ((XSDConcreteComponentImpl)xsdAttributeGroupDefinition,
+ xsdAttributeGroupDefinition.getAttributeWildcardContent(),
+ otherXSDAttributeGroupDefinition.getAttributeUses(),
+ xsdAttributeGroupDefinition.getAttributeUses(),
+ otherXSDAttributeGroupDefinition.getAttributeWildcard(),
+ xsdAttributeGroupDefinition.getAttributeWildcard());
+ }
+ }
+ else
+ {
+ Iterator<?> j = selfReferences.iterator();
+ j.next();
+ while (j.hasNext())
+ {
+ XSDConcreteComponentImpl xsdConcreteComponent = (XSDConcreteComponentImpl)j.next();
+ xsdConcreteComponent.createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "src-redefine.7.1");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDRedefineContent xsdRedefineContent = XSDRedefineContentImpl.createRedefineContent(child);
+ if (xsdRedefineContent != null)
+ {
+ newContents.add(xsdRedefineContent);
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ if (!remainingContents.isEmpty())
+ {
+ getContents().removeAll(remainingContents);
+ }
+
+ @SuppressWarnings("unchecked") List<XSDRedefineContent> list = (List<XSDRedefineContent>)(List<?>)newContents;
+ setListContentAndOrder(getContents(), list);
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (xsdConcreteComponent instanceof XSDAnnotation)
+ {
+ getAnnotations().add((XSDAnnotation)xsdConcreteComponent);
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (xsdConcreteComponent instanceof XSDAnnotation)
+ {
+ getAnnotations().remove(xsdConcreteComponent);
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDRedefineImpl clonedRedefine =
+ (XSDRedefineImpl)getXSDFactory().createXSDRedefine();
+ clonedRedefine.isReconciling = true;
+
+ clonedRedefine.setSchemaLocation(getSchemaLocation());
+
+ if (deep)
+ {
+ if (!getContents().isEmpty())
+ {
+ clonedRedefine.getContents().addAll(cloneConcreteComponents(getContents(), true, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedRedefine.setElement(getElement());
+ }
+
+ clonedRedefine.isReconciling = shareDOM;
+ return clonedRedefine;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRepeatableFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRepeatableFacetImpl.java
new file mode 100644
index 0000000..8bcb3e1
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDRepeatableFacetImpl.java
@@ -0,0 +1,215 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.Collection;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EObjectEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDRepeatableFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Repeatable Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDRepeatableFacetImpl#getAnnotations <em>Annotations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDRepeatableFacetImpl
+ extends XSDConstrainingFacetImpl
+ implements XSDRepeatableFacet
+{
+ /**
+ * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAnnotation> annotations;
+
+ public static XSDRepeatableFacet createRepeatableFacet(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.PATTERN_ELEMENT:
+ {
+ return XSDPatternFacetImpl.createPatternFacet(node);
+ }
+ case XSDConstants.ENUMERATION_ELEMENT:
+ {
+ return XSDEnumerationFacetImpl.createEnumerationFacet(node);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDRepeatableFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_REPEATABLE_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAnnotation> getAnnotations()
+ {
+ if (annotations == null)
+ {
+ annotations = new EObjectEList<XSDAnnotation>(XSDAnnotation.class, this, XSDPackage.XSD_REPEATABLE_FACET__ANNOTATIONS);
+ }
+ return annotations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REPEATABLE_FACET__ANNOTATIONS:
+ return getAnnotations();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REPEATABLE_FACET__ANNOTATIONS:
+ getAnnotations().clear();
+ getAnnotations().addAll((Collection<? extends XSDAnnotation>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REPEATABLE_FACET__ANNOTATIONS:
+ getAnnotations().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_REPEATABLE_FACET__ANNOTATIONS:
+ return annotations != null && !annotations.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-length",
+ theElement,
+ new String []
+ {
+ XSDConstants.VALUE_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-" + getFacetName(),
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ checkBuiltInTypeConstraint
+ ("nonNegativeInteger",
+ getLexicalValue(),
+ XSDConstants.PART2,
+ "element-" + getFacetName(),
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ true);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaCompositorImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaCompositorImpl.java
new file mode 100644
index 0000000..795dfe6
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaCompositorImpl.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaCompositor;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Schema Compositor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaCompositorImpl#getIncorporatedSchema <em>Incorporated Schema</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDSchemaCompositorImpl
+ extends XSDSchemaDirectiveImpl
+ implements XSDSchemaCompositor
+{
+ /**
+ * The cached value of the '{@link #getIncorporatedSchema() <em>Incorporated Schema</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncorporatedSchema()
+ * @generated
+ * @ordered
+ */
+ protected XSDSchema incorporatedSchema;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDSchemaCompositorImpl()
+ {
+ super();
+ }
+
+ @Override
+ public void reset()
+ {
+ super.reset();
+ if (incorporatedSchema != resolvedSchema && incorporatedSchema != null && incorporatedSchema.eContainer() != null)
+ {
+ EcoreUtil.remove(incorporatedSchema);
+ incorporatedSchema.reset();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_SCHEMA_COMPOSITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSchema getIncorporatedSchema()
+ {
+ return incorporatedSchema;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIncorporatedSchema(XSDSchema newIncorporatedSchema)
+ {
+ XSDSchema oldIncorporatedSchema = incorporatedSchema;
+ incorporatedSchema = newIncorporatedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA, oldIncorporatedSchema, incorporatedSchema));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA:
+ return getIncorporatedSchema();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA:
+ setIncorporatedSchema((XSDSchema)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA:
+ setIncorporatedSchema((XSDSchema)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_COMPOSITOR__INCORPORATED_SCHEMA:
+ return incorporatedSchema != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaContentImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaContentImpl.java
new file mode 100644
index 0000000..4bb569a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaContentImpl.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Schema Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDSchemaContentImpl
+ extends XSDConcreteComponentImpl
+ implements XSDSchemaContent
+{
+ public static XSDSchemaContent createSchemaContent(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ return XSDAnnotationImpl.createAnnotation(node);
+ }
+ case XSDConstants.ATTRIBUTE_ELEMENT:
+ {
+ return XSDAttributeDeclarationImpl.createAttributeDeclaration(node);
+ }
+ case XSDConstants.ELEMENT_ELEMENT:
+ {
+ return XSDElementDeclarationImpl.createElementDeclaration(node);
+ }
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ {
+ return XSDSimpleTypeDefinitionImpl.createSimpleTypeDefinition(node);
+ }
+ case XSDConstants.COMPLEXTYPE_ELEMENT:
+ {
+ return XSDComplexTypeDefinitionImpl.createComplexTypeDefinition(node);
+ }
+ case XSDConstants.ATTRIBUTEGROUP_ELEMENT:
+ {
+ return XSDAttributeGroupDefinitionImpl.createAttributeGroupDefinition(node);
+ }
+ case XSDConstants.GROUP_ELEMENT:
+ {
+ return XSDModelGroupDefinitionImpl.createModelGroupDefinition(node);
+ }
+ case XSDConstants.INCLUDE_ELEMENT:
+ {
+ return XSDIncludeImpl.createInclude(node);
+ }
+ case XSDConstants.IMPORT_ELEMENT:
+ {
+ return XSDImportImpl.createImport(node);
+ }
+ case XSDConstants.REDEFINE_ELEMENT:
+ {
+ return XSDRedefineImpl.createRedefine(node);
+ }
+ case XSDConstants.NOTATION_ELEMENT:
+ {
+ return XSDNotationDeclarationImpl.createNotationDeclaration(node);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDSchemaContentImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_SCHEMA_CONTENT;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaDirectiveImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaDirectiveImpl.java
new file mode 100644
index 0000000..3a85160
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaDirectiveImpl.java
@@ -0,0 +1,446 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDResourceImpl;
+import org.eclipse.xsd.util.XSDSchemaLocationResolver;
+import org.eclipse.xsd.util.XSDSchemaLocator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Schema Directive</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaDirectiveImpl#getSchemaLocation <em>Schema Location</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaDirectiveImpl#getResolvedSchema <em>Resolved Schema</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDSchemaDirectiveImpl
+ extends XSDSchemaContentImpl
+ implements XSDSchemaDirective
+{
+ /**
+ * The default value of the '{@link #getSchemaLocation() <em>Schema Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaLocation()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_LOCATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSchemaLocation() <em>Schema Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaLocation()
+ * @generated
+ * @ordered
+ */
+ protected String schemaLocation = SCHEMA_LOCATION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getResolvedSchema() <em>Resolved Schema</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedSchema()
+ * @generated
+ * @ordered
+ */
+ protected XSDSchema resolvedSchema;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDSchemaDirectiveImpl()
+ {
+ super();
+ }
+
+ @Override
+ public void reset()
+ {
+ super.reset();
+ resolved = false;
+ setResolvedSchema(null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_SCHEMA_DIRECTIVE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSchemaLocation()
+ {
+ return schemaLocation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSchemaLocation(String newSchemaLocation)
+ {
+ String oldSchemaLocation = schemaLocation;
+ schemaLocation = newSchemaLocation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION, oldSchemaLocation, schemaLocation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSchema getResolvedSchema()
+ {
+ return resolvedSchema;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setResolvedSchema(XSDSchema newResolvedSchema)
+ {
+ XSDSchema oldResolvedSchema = resolvedSchema;
+ resolvedSchema = newResolvedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA, oldResolvedSchema, resolvedSchema));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION:
+ return getSchemaLocation();
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA:
+ return getResolvedSchema();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION:
+ setSchemaLocation((String)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA:
+ setResolvedSchema((XSDSchema)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION:
+ setSchemaLocation(SCHEMA_LOCATION_EDEFAULT);
+ return;
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA:
+ setResolvedSchema((XSDSchema)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION:
+ return SCHEMA_LOCATION_EDEFAULT == null ? schemaLocation != null : !SCHEMA_LOCATION_EDEFAULT.equals(schemaLocation);
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE__RESOLVED_SCHEMA:
+ return resolvedSchema != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (schemaLocation: ");
+ result.append(schemaLocation);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ String newSchemaLocation = null;
+ if (changedElement.hasAttributeNS(null, XSDConstants.SCHEMALOCATION_ATTRIBUTE))
+ {
+ newSchemaLocation = changedElement.getAttributeNS(null, XSDConstants.SCHEMALOCATION_ATTRIBUTE);
+ }
+
+ if (newSchemaLocation == null ? getSchemaLocation() != null : !newSchemaLocation.equals(getSchemaLocation()))
+ {
+ setSchemaLocation(newSchemaLocation);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ // Try to resolve again if the schema location changes and we previously failed.
+ //
+ if (resolved && getResolvedSchema() == null && eAttribute == XSDPackage.Literals.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION)
+ {
+ resolved = false;
+ }
+
+ if (!isReconciling)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ niceSetAttribute(theElement, XSDConstants.SCHEMALOCATION_ATTRIBUTE, getSchemaLocation());
+ }
+ }
+ }
+
+ if (eAttribute == XSDPackage.Literals.XSD_SCHEMA_DIRECTIVE__SCHEMA_LOCATION && getResolvedSchema() != null && getSchema().isIncrementalUpdate())
+ {
+ getSchema().reset();
+ }
+ }
+
+ @Override
+ protected void orphanBy(XSDSchema xsdSchema)
+ {
+ super.orphanBy(xsdSchema);
+ if (resolved && xsdSchema.isIncrementalUpdate())
+ {
+ xsdSchema.reset();
+ }
+ }
+
+ protected boolean resolved;
+ protected void resolve(String namespace, String schemaLocation)
+ {
+ if (!resolved)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null &&
+ (xsdSchema.getSchemaLocation() != null ||
+ ((XSDSchemaImpl)xsdSchema).getPendingSchemaLocation() != null))
+ {
+ Resource resource = xsdSchema.eResource();
+ if (resource != null)
+ {
+ ResourceSet resourceSet = resource.getResourceSet();
+ if (resourceSet != null)
+ {
+ if ("".equals(namespace))
+ {
+ namespace = xsdSchema.getTargetNamespace();
+ }
+
+ String resolvedSchemaLocation = resolveSchemaLocation(xsdSchema, namespace, schemaLocation);
+ if (schemaLocation == null)
+ {
+ if (XSDConstants.isXMLNamespace(resolvedSchemaLocation))
+ {
+ resolvedSchemaLocation = XSDPlugin.INSTANCE.getBaseURL().toString() + "cache/www.w3.org/2001/xml.xsd";
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(resolvedSchemaLocation))
+ {
+ resolvedSchemaLocation = XSDPlugin.INSTANCE.getBaseURL().toString() + "cache/www.w3.org/2001/XMLSchema.xsd";
+ }
+ }
+
+ XSDSchema resolvedSchema = locateSchema(xsdSchema, namespace, schemaLocation, resolvedSchemaLocation);
+ if (resolvedSchema == null)
+ {
+ URI uri = URI.createURI(resolvedSchemaLocation == null ? "" : resolvedSchemaLocation);
+ Resource resolvedResource = resourceSet.getResource(uri, false);
+ if (resolvedResource == null)
+ {
+ try
+ {
+ InputStream inputStream = resourceSet.getURIConverter().createInputStream(uri);
+ resolvedResource = resourceSet.createResource(URI.createURI("*.xsd"));
+ resolvedResource.setURI(uri);
+ resolvedResource.load(inputStream, resourceSet.getLoadOptions());
+ }
+ catch (IOException exception)
+ {
+ // It is generally not an error to fail to resolve.
+ // If a resource is actually created,
+ // which happens only when we can create an input stream,
+ // then it's an error if it's not a good schema
+ }
+ }
+ else if (!resolvedResource.isLoaded())
+ {
+ try
+ {
+ resolvedResource.load(resourceSet.getLoadOptions());
+ }
+ catch (IOException exception)
+ {
+ // Ignore.
+ }
+ }
+
+ if (resolvedResource != null)
+ {
+ if (resolvedResource instanceof XSDResourceImpl)
+ {
+ resolvedSchema = ((XSDResourceImpl)resolvedResource).getSchema();
+ }
+ else
+ {
+ resolvedSchema = XSDFactory.eINSTANCE.createXSDSchema();
+ }
+ }
+ }
+
+ resolved = true;
+ handleResolvedSchema(resolvedSchema);
+ }
+ }
+ }
+ }
+ }
+
+ protected XSDSchema locateSchema(XSDSchema xsdSchema, String namespace, String rawSchemaLocation, String resolvedSchemaLocation)
+ {
+ XSDSchemaLocator xsdSchemaLocator = (XSDSchemaLocator)EcoreUtil.getRegisteredAdapter(xsdSchema.eResource(), XSDSchemaLocator.class);
+ return
+ xsdSchemaLocator == null ?
+ null :
+ xsdSchemaLocator.locateSchema(xsdSchema, namespace, rawSchemaLocation, resolvedSchemaLocation);
+ }
+
+ protected String resolveSchemaLocation(XSDSchema xsdSchema, String namespace, String schemaLocation)
+ {
+ for (;;)
+ {
+ XSDSchemaLocationResolver xsdSchemaLocationResolver =
+ (XSDSchemaLocationResolver)EcoreUtil.getRegisteredAdapter(xsdSchema, XSDSchemaLocationResolver.class);
+ if (xsdSchemaLocationResolver != null)
+ {
+ return xsdSchemaLocationResolver.resolveSchemaLocation(xsdSchema, namespace, schemaLocation);
+ }
+
+ XSDConcreteComponent container = xsdSchema.getContainer();
+ if (container == null)
+ {
+ break;
+ }
+ else
+ {
+ XSDSchema containingXSDSchema = container.getSchema();
+ if (containingXSDSchema == null)
+ {
+ break;
+ }
+ else
+ {
+ xsdSchema = containingXSDSchema;
+ }
+ }
+ }
+
+ return XSDConstants.resolveSchemaLocation(xsdSchema.getSchemaLocation(), namespace, schemaLocation);
+ }
+
+ protected void handleResolvedSchema(XSDSchema xsdSchema)
+ {
+ // Ignore
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaImpl.java
new file mode 100644
index 0000000..69aa191
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSchemaImpl.java
@@ -0,0 +1,3434 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.events.Event;
+import org.w3c.dom.events.EventListener;
+import org.w3c.dom.events.EventTarget;
+import org.w3c.dom.events.MutationEvent;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDDisallowedSubstitutions;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDProhibitedSubstitutions;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDRedefineContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaCompositor;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDParser;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.eclipse.xsd.util.XSDResourceImpl;
+import org.eclipse.xsd.util.XSDSwitch;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Schema</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getDocument <em>Document</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getSchemaLocation <em>Schema Location</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getTargetNamespace <em>Target Namespace</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getAttributeFormDefault <em>Attribute Form Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getElementFormDefault <em>Element Form Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getFinalDefault <em>Final Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getBlockDefault <em>Block Default</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getVersion <em>Version</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getElementDeclarations <em>Element Declarations</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getAttributeDeclarations <em>Attribute Declarations</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getAttributeGroupDefinitions <em>Attribute Group Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getTypeDefinitions <em>Type Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getModelGroupDefinitions <em>Model Group Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getIdentityConstraintDefinitions <em>Identity Constraint Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getNotationDeclarations <em>Notation Declarations</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getAnnotations <em>Annotations</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getAllDiagnostics <em>All Diagnostics</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getReferencingDirectives <em>Referencing Directives</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getRootVersion <em>Root Version</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getOriginalVersion <em>Original Version</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getIncorporatedVersions <em>Incorporated Versions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSchemaImpl#getSchemaForSchema <em>Schema For Schema</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDSchemaImpl
+ extends XSDScopeImpl
+ implements XSDSchema
+{
+ /**
+ * The default value of the '{@link #getDocument() <em>Document</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDocument()
+ * @generated
+ * @ordered
+ */
+ protected static final Document DOCUMENT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDocument() <em>Document</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDocument()
+ * @generated
+ * @ordered
+ */
+ protected Document document = DOCUMENT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSchemaLocation() <em>Schema Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaLocation()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_LOCATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSchemaLocation() <em>Schema Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaLocation()
+ * @generated
+ * @ordered
+ */
+ protected String schemaLocation = SCHEMA_LOCATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTargetNamespace() <em>Target Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetNamespace()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_NAMESPACE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTargetNamespace() <em>Target Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetNamespace()
+ * @generated
+ * @ordered
+ */
+ protected String targetNamespace = TARGET_NAMESPACE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAttributeFormDefault() <em>Attribute Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeFormDefault()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDForm ATTRIBUTE_FORM_DEFAULT_EDEFAULT = XSDForm.UNQUALIFIED_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getAttributeFormDefault() <em>Attribute Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getAttributeFormDefault() <em>Attribute Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ATTRIBUTE_FORM_DEFAULT_EFLAG_DEFAULT = ATTRIBUTE_FORM_DEFAULT_EDEFAULT.ordinal() << ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDForm Form}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDForm[] ATTRIBUTE_FORM_DEFAULT_EFLAG_VALUES = XSDForm.values();
+
+ /**
+ * The flag representing the value of the '{@link #getAttributeFormDefault() <em>Attribute Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeFormDefault()
+ * @generated
+ * @ordered
+ */
+ protected static final int ATTRIBUTE_FORM_DEFAULT_EFLAG = 1 << ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Attribute Form Default attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ATTRIBUTE_FORM_DEFAULT_ESETFLAG = 1 << 9;
+
+ /**
+ * The default value of the '{@link #getElementFormDefault() <em>Element Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElementFormDefault()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDForm ELEMENT_FORM_DEFAULT_EDEFAULT = XSDForm.UNQUALIFIED_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getElementFormDefault() <em>Element Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ELEMENT_FORM_DEFAULT_EFLAG_OFFSET = 10;
+
+ /**
+ * The flags representing the default value of the '{@link #getElementFormDefault() <em>Element Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ELEMENT_FORM_DEFAULT_EFLAG_DEFAULT = ELEMENT_FORM_DEFAULT_EDEFAULT.ordinal() << ELEMENT_FORM_DEFAULT_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDForm Form}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDForm[] ELEMENT_FORM_DEFAULT_EFLAG_VALUES = XSDForm.values();
+
+ /**
+ * The flag representing the value of the '{@link #getElementFormDefault() <em>Element Form Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElementFormDefault()
+ * @generated
+ * @ordered
+ */
+ protected static final int ELEMENT_FORM_DEFAULT_EFLAG = 1 << ELEMENT_FORM_DEFAULT_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Element Form Default attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int ELEMENT_FORM_DEFAULT_ESETFLAG = 1 << 11;
+
+ /**
+ * The cached value of the '{@link #getFinalDefault() <em>Final Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFinalDefault()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDProhibitedSubstitutions> finalDefault;
+
+ /**
+ * The cached value of the '{@link #getBlockDefault() <em>Block Default</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBlockDefault()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDDisallowedSubstitutions> blockDefault;
+
+ /**
+ * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected static final String VERSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected String version = VERSION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSchemaContent> contents;
+
+ /**
+ * The cached value of the '{@link #getElementDeclarations() <em>Element Declarations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElementDeclarations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDElementDeclaration> elementDeclarations;
+
+ /**
+ * The cached value of the '{@link #getAttributeDeclarations() <em>Attribute Declarations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeDeclarations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAttributeDeclaration> attributeDeclarations;
+
+ /**
+ * The cached value of the '{@link #getAttributeGroupDefinitions() <em>Attribute Group Definitions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributeGroupDefinitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAttributeGroupDefinition> attributeGroupDefinitions;
+
+ /**
+ * The cached value of the '{@link #getTypeDefinitions() <em>Type Definitions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeDefinitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDTypeDefinition> typeDefinitions;
+
+ /**
+ * The cached value of the '{@link #getModelGroupDefinitions() <em>Model Group Definitions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getModelGroupDefinitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDModelGroupDefinition> modelGroupDefinitions;
+
+ /**
+ * The cached value of the '{@link #getIdentityConstraintDefinitions() <em>Identity Constraint Definitions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentityConstraintDefinitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDIdentityConstraintDefinition> identityConstraintDefinitions;
+
+ /**
+ * The cached value of the '{@link #getNotationDeclarations() <em>Notation Declarations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNotationDeclarations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDNotationDeclaration> notationDeclarations;
+
+ /**
+ * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAnnotation> annotations;
+
+ /**
+ * The cached value of the '{@link #getAllDiagnostics() <em>All Diagnostics</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAllDiagnostics()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDDiagnostic> allDiagnostics;
+
+ /**
+ * The cached value of the '{@link #getReferencingDirectives() <em>Referencing Directives</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferencingDirectives()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSchemaDirective> referencingDirectives;
+
+ /**
+ * The cached value of the '{@link #getIncorporatedVersions() <em>Incorporated Versions</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncorporatedVersions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSchema> incorporatedVersions;
+
+ public static XSDSchema createSchema(Node node)
+ {
+ XSDSchema xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ // if (XSDConstants.nodeType(node) == XSDConstants.SCHEMA_ELEMENT)
+ {
+ // Force the loading of the "meta" schema for schema instance instance.
+ //
+ String schemaForSchemaNamespace = node.getNamespaceURI();
+ getSchemaForSchema(schemaForSchemaNamespace);
+
+ xsdSchema.setElement((Element)node);
+ }
+
+ return xsdSchema;
+ }
+
+ public static synchronized XSDSchema createMetaSchema(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.SCHEMA_ELEMENT)
+ {
+ XSDSchema xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ String schemaForSchemaNamespace = node.getNamespaceURI();
+ if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(schemaForSchemaNamespace))
+ {
+ if (xsdMagicSchemaForSchema2001 == null)
+ {
+ xsdMagicSchemaForSchema2001 = xsdSchema;
+ }
+ else if (xsdSchemaForSchema2001 == null)
+ {
+ xsdSchemaForSchema2001 = xsdSchema;
+ }
+ else
+ {
+ // System.out.println("Bad meta loading.");
+ }
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2000_10.equals(schemaForSchemaNamespace))
+ {
+ if (xsdMagicSchemaForSchema2000_10 == null)
+ {
+ xsdMagicSchemaForSchema2000_10 = xsdSchema;
+ }
+ else if (xsdSchemaForSchema2000_10 == null)
+ {
+ xsdSchemaForSchema2000_10 = xsdSchema;
+ }
+ else
+ {
+ // System.out.println("Bad meta loading.");
+ }
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_1999.equals(schemaForSchemaNamespace))
+ {
+ if (xsdMagicSchemaForSchema1999 == null)
+ {
+ xsdMagicSchemaForSchema1999 = xsdSchema;
+ }
+ else if (xsdSchemaForSchema1999 == null)
+ {
+ xsdSchemaForSchema1999 = xsdSchema;
+ }
+ else
+ {
+ // System.out.println("Bad meta loading.");
+ }
+ }
+
+
+ xsdSchema.setElement((Element)node);
+ return xsdSchema;
+ }
+
+ return null;
+ }
+
+ protected static ResourceSet globalResourceSet;
+
+ protected static XSDSchema xsdMagicSchemaForSchema2001;
+ protected static XSDSchema xsdSchemaForSchema2001;
+ protected static XSDSchema xsdSchemaInstance2001;
+
+ protected static XSDSchema xsdMagicSchemaForSchema2000_10;
+ protected static XSDSchema xsdSchemaForSchema2000_10;
+
+ protected static XSDSchema xsdMagicSchemaForSchema1999;
+ protected static XSDSchema xsdSchemaForSchema1999;
+
+ public static synchronized ResourceSet getGlobalResourceSet()
+ {
+ if (globalResourceSet == null)
+ {
+ globalResourceSet = createResourceSet();
+
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ globalResourceSet.getURIConverter().getURIMap().put
+ (URI.createURI("http://www.w3.org/2001/xml.xsd"),
+ URI.createURI(baseURL + "cache/www.w3.org/2001/xml.xsd"));
+ }
+
+ return globalResourceSet;
+ }
+
+ public static ResourceSet createResourceSet()
+ {
+ ResourceSet result = new ResourceSetImpl();
+ result.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+ return result;
+ }
+
+ public static synchronized XSDSchema getMagicSchemaForSchema(String namespace)
+ {
+ if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(namespace))
+ {
+ if (xsdMagicSchemaForSchema2001 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getGlobalResourceSet().getLoadOptions().put("XSD_MAGIC_XML_SCHEMA", XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/2001/MagicXMLSchema.xsd"), true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_MAGIC_XML_SCHEMA");
+ }
+ }
+
+ return xsdMagicSchemaForSchema2001;
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2000_10.equals(namespace))
+ {
+ if (xsdMagicSchemaForSchema2000_10 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getGlobalResourceSet().getLoadOptions().put("XSD_MAGIC_XML_SCHEMA", XSDConstants.SCHEMA_FOR_SCHEMA_URI_2000_10);
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/2000/10/MagicXMLSchema.xsd"), true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_MAGIC_XML_SCHEMA");
+ }
+ }
+
+ return xsdMagicSchemaForSchema2000_10;
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_1999.equals(namespace))
+ {
+ if (xsdMagicSchemaForSchema1999 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getGlobalResourceSet().getLoadOptions().put("XSD_MAGIC_XML_SCHEMA", XSDConstants.SCHEMA_FOR_SCHEMA_URI_1999);
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/1999/MagicXMLSchema.xsd"), true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_MAGIC_XML_SCHEMA");
+ }
+ }
+
+ return xsdMagicSchemaForSchema1999;
+ }
+
+ return null;
+ }
+
+ public static synchronized XSDSchema getSchemaForSchema(String namespace)
+ {
+ if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(namespace))
+ {
+ if (xsdSchemaForSchema2001 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getMagicSchemaForSchema(namespace);
+ getGlobalResourceSet().getLoadOptions().put("XSD_XML_SCHEMA", XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/2001/XMLSchema.xsd"), true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_XML_SCHEMA");
+ }
+ }
+ return xsdSchemaForSchema2001;
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2000_10.equals(namespace))
+ {
+ if (xsdSchemaForSchema2000_10 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getMagicSchemaForSchema(namespace);
+ getGlobalResourceSet().getLoadOptions().put("XSD_XML_SCHEMA", XSDConstants.SCHEMA_FOR_SCHEMA_URI_2000_10);
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/2000/10/XMLSchema.xsd"), true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_XML_SCHEMA");
+ }
+ }
+ return xsdSchemaForSchema2000_10;
+ }
+ else if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_1999.equals(namespace))
+ {
+ if (xsdSchemaForSchema1999 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getMagicSchemaForSchema(namespace);
+ getGlobalResourceSet().getLoadOptions().put("XSD_XML_SCHEMA", XSDConstants.SCHEMA_FOR_SCHEMA_URI_1999);
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/1999/XMLSchema.xsd"), true);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_XML_SCHEMA");
+ }
+ }
+ return xsdSchemaForSchema1999;
+ }
+ return null;
+ }
+
+ public static synchronized XSDSchema getSchemaInstance(String namespace)
+ {
+ if (XSDConstants.SCHEMA_INSTANCE_URI_2001.equals(namespace))
+ {
+ if (xsdSchemaInstance2001 == null)
+ {
+ try
+ {
+ String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+ getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ getGlobalResourceSet().getLoadOptions().put("XSD_SCHEMA_INSTANCE", XSDConstants.SCHEMA_INSTANCE_URI_2001);
+ Resource schemaInstance2001Resource =
+ getGlobalResourceSet().getResource
+ (URI.createURI(baseURL + "cache/www.w3.org/2001/XMLSchema-instance.xsd"), true);
+ xsdSchemaInstance2001 = ((XSDResourceImpl)schemaInstance2001Resource).getSchema();
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ getGlobalResourceSet().getLoadOptions().remove("XSD_SCHEMA_INSTANCE");
+ }
+ }
+ return xsdSchemaInstance2001;
+ }
+ return null;
+ }
+
+ protected Map<String, String> qNamePrefixToNamespaceMap =
+ new HashMap<String, String>()
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String put(String key, String value)
+ {
+ if ("".equals(key))
+ {
+ throw new IllegalArgumentException("The default prefix should represented as null rather than as a zero length String");
+ }
+
+ if (value == null)
+ {
+ value = "";
+ }
+ String result = super.put(key, value);
+ if (!isReconciling)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ String xmlnsAttribute = "xmlns";
+ if (key != null)
+ {
+ xmlnsAttribute += ":" + key;
+ }
+ theElement.setAttributeNS(XSDConstants.XMLNS_URI_2000, xmlnsAttribute, value);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public String get(Object key)
+ {
+ String result = super.get(key);
+ return "".equals(result) ? null : result;
+ }
+
+ @Override
+ public String remove(Object key)
+ {
+ String result = super.remove(key);
+ if (!isReconciling)
+ {
+ if (result != null)
+ {
+ if (key == null)
+ {
+ key = "xmlns";
+ }
+ Element theElement = getElement();
+ if (theElement != null &&
+ theElement.hasAttributeNS(XSDConstants.XMLNS_URI_2000, (String)key))
+ {
+ theElement.removeAttributeNS(XSDConstants.XMLNS_URI_2000, (String)key);
+ }
+ }
+ }
+ return result;
+ }
+ };
+
+ protected String schemaForSchemaQNamePrefix;
+
+ protected boolean hasRetargetedNamespace = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDSchemaImpl()
+ {
+ super();
+ eFlags |= ATTRIBUTE_FORM_DEFAULT_EFLAG_DEFAULT;
+ eFlags |= ELEMENT_FORM_DEFAULT_EFLAG_DEFAULT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_SCHEMA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Document getDocument()
+ {
+ return document;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDocument(Document newDocument)
+ {
+ Document oldDocument = document;
+ document = newDocument;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA__DOCUMENT, oldDocument, document));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSchemaLocation()
+ {
+ return schemaLocation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSchemaLocation(String newSchemaLocation)
+ {
+ String oldSchemaLocation = schemaLocation;
+ schemaLocation = newSchemaLocation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA__SCHEMA_LOCATION, oldSchemaLocation, schemaLocation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTargetNamespace()
+ {
+ return targetNamespace;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetNamespace(String newTargetNamespace)
+ {
+ String oldTargetNamespace = targetNamespace;
+ targetNamespace = newTargetNamespace;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA__TARGET_NAMESPACE, oldTargetNamespace, targetNamespace));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDForm getAttributeFormDefault()
+ {
+ return ATTRIBUTE_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ATTRIBUTE_FORM_DEFAULT_EFLAG) >>> ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAttributeFormDefault(XSDForm newAttributeFormDefault)
+ {
+ XSDForm oldAttributeFormDefault = ATTRIBUTE_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ATTRIBUTE_FORM_DEFAULT_EFLAG) >>> ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET];
+ if (newAttributeFormDefault == null) newAttributeFormDefault = ATTRIBUTE_FORM_DEFAULT_EDEFAULT;
+ eFlags = eFlags & ~ATTRIBUTE_FORM_DEFAULT_EFLAG | newAttributeFormDefault.ordinal() << ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET;
+ boolean oldAttributeFormDefaultESet = (eFlags & ATTRIBUTE_FORM_DEFAULT_ESETFLAG) != 0;
+ eFlags |= ATTRIBUTE_FORM_DEFAULT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT, oldAttributeFormDefault, newAttributeFormDefault, !oldAttributeFormDefaultESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetAttributeFormDefault()
+ {
+ XSDForm oldAttributeFormDefault = ATTRIBUTE_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ATTRIBUTE_FORM_DEFAULT_EFLAG) >>> ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET];
+ boolean oldAttributeFormDefaultESet = (eFlags & ATTRIBUTE_FORM_DEFAULT_ESETFLAG) != 0;
+ eFlags = eFlags & ~ATTRIBUTE_FORM_DEFAULT_EFLAG | ATTRIBUTE_FORM_DEFAULT_EFLAG_DEFAULT;
+ eFlags &= ~ATTRIBUTE_FORM_DEFAULT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT, oldAttributeFormDefault, ATTRIBUTE_FORM_DEFAULT_EDEFAULT, oldAttributeFormDefaultESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetAttributeFormDefault()
+ {
+ return (eFlags & ATTRIBUTE_FORM_DEFAULT_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDForm getElementFormDefault()
+ {
+ return ELEMENT_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ELEMENT_FORM_DEFAULT_EFLAG) >>> ELEMENT_FORM_DEFAULT_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setElementFormDefault(XSDForm newElementFormDefault)
+ {
+ XSDForm oldElementFormDefault = ELEMENT_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ELEMENT_FORM_DEFAULT_EFLAG) >>> ELEMENT_FORM_DEFAULT_EFLAG_OFFSET];
+ if (newElementFormDefault == null) newElementFormDefault = ELEMENT_FORM_DEFAULT_EDEFAULT;
+ eFlags = eFlags & ~ELEMENT_FORM_DEFAULT_EFLAG | newElementFormDefault.ordinal() << ELEMENT_FORM_DEFAULT_EFLAG_OFFSET;
+ boolean oldElementFormDefaultESet = (eFlags & ELEMENT_FORM_DEFAULT_ESETFLAG) != 0;
+ eFlags |= ELEMENT_FORM_DEFAULT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA__ELEMENT_FORM_DEFAULT, oldElementFormDefault, newElementFormDefault, !oldElementFormDefaultESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetElementFormDefault()
+ {
+ XSDForm oldElementFormDefault = ELEMENT_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ELEMENT_FORM_DEFAULT_EFLAG) >>> ELEMENT_FORM_DEFAULT_EFLAG_OFFSET];
+ boolean oldElementFormDefaultESet = (eFlags & ELEMENT_FORM_DEFAULT_ESETFLAG) != 0;
+ eFlags = eFlags & ~ELEMENT_FORM_DEFAULT_EFLAG | ELEMENT_FORM_DEFAULT_EFLAG_DEFAULT;
+ eFlags &= ~ELEMENT_FORM_DEFAULT_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_SCHEMA__ELEMENT_FORM_DEFAULT, oldElementFormDefault, ELEMENT_FORM_DEFAULT_EDEFAULT, oldElementFormDefaultESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetElementFormDefault()
+ {
+ return (eFlags & ELEMENT_FORM_DEFAULT_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDProhibitedSubstitutions> getFinalDefault()
+ {
+ if (finalDefault == null)
+ {
+ finalDefault = new EDataTypeUniqueEList.Unsettable<XSDProhibitedSubstitutions>(XSDProhibitedSubstitutions.class, this, XSDPackage.XSD_SCHEMA__FINAL_DEFAULT);
+ }
+ return finalDefault;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetFinalDefault()
+ {
+ if (finalDefault != null) ((InternalEList.Unsettable<?>)finalDefault).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetFinalDefault()
+ {
+ return finalDefault != null && ((InternalEList.Unsettable<?>)finalDefault).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDDisallowedSubstitutions> getBlockDefault()
+ {
+ if (blockDefault == null)
+ {
+ blockDefault = new EDataTypeUniqueEList.Unsettable<XSDDisallowedSubstitutions>(XSDDisallowedSubstitutions.class, this, XSDPackage.XSD_SCHEMA__BLOCK_DEFAULT);
+ }
+ return blockDefault;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetBlockDefault()
+ {
+ if (blockDefault != null) ((InternalEList.Unsettable<?>)blockDefault).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetBlockDefault()
+ {
+ return blockDefault != null && ((InternalEList.Unsettable<?>)blockDefault).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getVersion()
+ {
+ return version;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVersion(String newVersion)
+ {
+ String oldVersion = version;
+ version = newVersion;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SCHEMA__VERSION, oldVersion, version));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSchemaContent> getContents()
+ {
+ if (contents == null)
+ {
+ contents = new EObjectContainmentEList<XSDSchemaContent>(XSDSchemaContent.class, this, XSDPackage.XSD_SCHEMA__CONTENTS);
+ }
+ return contents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDElementDeclaration> getElementDeclarations()
+ {
+ if (elementDeclarations == null)
+ {
+ elementDeclarations = new XSDNamedComponentImpl.XSDNamedComponentList<XSDElementDeclaration>(XSDElementDeclaration.class, this, XSDPackage.XSD_SCHEMA__ELEMENT_DECLARATIONS);
+ }
+ return elementDeclarations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDAttributeDeclaration> getAttributeDeclarations()
+ {
+ if (attributeDeclarations == null)
+ {
+ attributeDeclarations = new XSDNamedComponentImpl.XSDNamedComponentList<XSDAttributeDeclaration>(XSDAttributeDeclaration.class, this, XSDPackage.XSD_SCHEMA__ATTRIBUTE_DECLARATIONS);
+ }
+ return attributeDeclarations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDAttributeGroupDefinition> getAttributeGroupDefinitions()
+ {
+ if (attributeGroupDefinitions == null)
+ {
+ attributeGroupDefinitions = new XSDNamedComponentImpl.XSDNamedComponentList<XSDAttributeGroupDefinition>(XSDAttributeGroupDefinition.class, this, XSDPackage.XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS);
+ }
+ return attributeGroupDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDTypeDefinition> getTypeDefinitions()
+ {
+ if (typeDefinitions == null)
+ {
+ typeDefinitions = new XSDNamedComponentImpl.XSDNamedComponentList<XSDTypeDefinition>(XSDTypeDefinition.class, this, XSDPackage.XSD_SCHEMA__TYPE_DEFINITIONS);
+ }
+ return typeDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDModelGroupDefinition> getModelGroupDefinitions()
+ {
+ if (modelGroupDefinitions == null)
+ {
+ modelGroupDefinitions = new XSDNamedComponentImpl.XSDNamedComponentList<XSDModelGroupDefinition>(XSDModelGroupDefinition.class, this, XSDPackage.XSD_SCHEMA__MODEL_GROUP_DEFINITIONS);
+ }
+ return modelGroupDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDIdentityConstraintDefinition> getIdentityConstraintDefinitions()
+ {
+ if (identityConstraintDefinitions == null)
+ {
+ identityConstraintDefinitions = new XSDNamedComponentImpl.XSDNamedComponentList<XSDIdentityConstraintDefinition>(XSDIdentityConstraintDefinition.class, this, XSDPackage.XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS);
+ }
+ return identityConstraintDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<XSDNotationDeclaration> getNotationDeclarations()
+ {
+ if (notationDeclarations == null)
+ {
+ notationDeclarations = new XSDNamedComponentImpl.XSDNamedComponentList<XSDNotationDeclaration>(XSDNotationDeclaration.class, this, XSDPackage.XSD_SCHEMA__NOTATION_DECLARATIONS);
+ }
+ return notationDeclarations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAnnotation> getAnnotations()
+ {
+ if (annotations == null)
+ {
+ annotations = new EObjectEList<XSDAnnotation>(XSDAnnotation.class, this, XSDPackage.XSD_SCHEMA__ANNOTATIONS);
+ }
+ return annotations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDDiagnostic> getAllDiagnostics()
+ {
+ if (allDiagnostics == null)
+ {
+ allDiagnostics = new EObjectEList<XSDDiagnostic>(XSDDiagnostic.class, this, XSDPackage.XSD_SCHEMA__ALL_DIAGNOSTICS);
+ }
+ return allDiagnostics;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSchemaDirective> getReferencingDirectives()
+ {
+ if (referencingDirectives == null)
+ {
+ referencingDirectives = new EObjectEList<XSDSchemaDirective>(XSDSchemaDirective.class, this, XSDPackage.XSD_SCHEMA__REFERENCING_DIRECTIVES);
+ }
+ return referencingDirectives;
+ }
+
+ public boolean hasRetargetedNamespace()
+ {
+ return hasRetargetedNamespace;
+ }
+
+ public XSDSchema getOriginalVersion()
+ {
+ for (XSDSchemaDirective xsdSchemaDirective : getReferencingDirectives())
+ {
+ if (xsdSchemaDirective instanceof XSDSchemaCompositor)
+ {
+ XSDSchemaCompositor xsdSchemaCompositor = (XSDSchemaCompositor)xsdSchemaDirective;
+ if (xsdSchemaCompositor.getResolvedSchema() != xsdSchemaCompositor.getIncorporatedSchema())
+ {
+ return xsdSchemaCompositor.getResolvedSchema();
+ }
+ }
+ }
+ return this;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSchema> getIncorporatedVersions()
+ {
+ if (incorporatedVersions == null)
+ {
+ incorporatedVersions = new EObjectContainmentEList<XSDSchema>(XSDSchema.class, this, XSDPackage.XSD_SCHEMA__INCORPORATED_VERSIONS);
+ }
+ return incorporatedVersions;
+ }
+
+/*
+ public Set getIncorporatedVersions()
+ {
+ Set result = new HashSet();
+ for (Iterator i = getReferencingDirectives().iterator(); i.hasNext(); )
+ {
+ XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)i.next();
+ if (xsdSchemaDirective instanceof XSDSchemaCompositor)
+ {
+ XSDSchemaCompositor xsdSchemaCompositor = (XSDSchemaCompositor)xsdSchemaDirective;
+ if (xsdSchemaCompositor.getResolvedSchema() != xsdSchemaCompositor.getIncorporatedSchema())
+ {
+ result.add(xsdSchemaCompositor.getIncorporatedSchema());
+ }
+ }
+ }
+ return result;
+ }
+*/
+
+ public XSDSchema getRootVersion()
+ {
+ XSDSchema result = this;
+ for (XSDSchema originalVersion = result.getOriginalVersion();
+ result != originalVersion;
+ originalVersion = result.getOriginalVersion())
+ {
+ result = originalVersion;
+ }
+ return result;
+ }
+
+ /**
+ * This returns the map defined by the xmlns attributes of the underlying XML representation.
+ */
+ public Map<String, String> getQNamePrefixToNamespaceMap()
+ {
+ return qNamePrefixToNamespaceMap;
+ }
+
+ /**
+ * This returns the QName prefix used to reference the schema for schema;
+ * it must be a key in {@link #getQNamePrefixToNamespaceMap}.
+ */
+ public String getSchemaForSchemaQNamePrefix()
+ {
+ return schemaForSchemaQNamePrefix;
+ }
+
+ /**
+ * This sets the QName prefix used to reference the schema for schema;
+ * it must be a key in {@link #getQNamePrefixToNamespaceMap} that maps to a valid schema for schema namespace.
+ * It can also be used to rename the prefix, one it's established.
+ */
+ public void setSchemaForSchemaQNamePrefix(String qNamePrefix)
+ {
+ String oldSchemaForSchemaQNamePrefix = schemaForSchemaQNamePrefix;
+ String oldSchemaForSchemaNamespace = getSchemaForSchemaNamespace();
+ this.schemaForSchemaQNamePrefix = qNamePrefix;
+ String newSchemaForSchemaNamespace = getSchemaForSchemaNamespace();
+
+ // Rename it if there was an old one but no new one.
+ //
+ if (XSDConstants.isSchemaForSchemaNamespace(oldSchemaForSchemaNamespace) &&
+ !XSDConstants.isSchemaForSchemaNamespace(newSchemaForSchemaNamespace))
+ {
+ getQNamePrefixToNamespaceMap().remove(oldSchemaForSchemaQNamePrefix);
+ getQNamePrefixToNamespaceMap().put(qNamePrefix, oldSchemaForSchemaNamespace);
+
+ if (getElement() != null && XSDConstants.isSchemaForSchemaNamespace(getSchemaForSchemaNamespace()))
+ {
+ updatePrefix(getElement(), getSchemaForSchemaNamespace(), oldSchemaForSchemaQNamePrefix, qNamePrefix);
+ updateElement();
+ }
+ }
+ }
+
+ /**
+ * This returns (String)getQNamePrefixToNamespaceMap().get(getSchemaForSchemaQNamePrefix());
+ * you can't set this directly.
+ */
+ public String getSchemaForSchemaNamespace()
+ {
+ return getQNamePrefixToNamespaceMap().get(getSchemaForSchemaQNamePrefix());
+ }
+
+ public String getStringBlockDefault()
+ {
+ if (isSetBlockDefault())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getBlockDefault())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringBlockDefault(String blockDefault)
+ {
+ if (blockDefault == null)
+ {
+ unsetBlockDefault();
+ }
+ else
+ {
+ List<XSDDisallowedSubstitutions> newBlockDefault = new ArrayList<XSDDisallowedSubstitutions>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(blockDefault); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+ XSDDisallowedSubstitutions literal = XSDDisallowedSubstitutions.get(token);
+ if (literal != null)
+ {
+ newBlockDefault.add(literal);
+ }
+ }
+ if (!newBlockDefault.equals(getBlockDefault()))
+ {
+ Collection<XSDDisallowedSubstitutions> oldContents = new ArrayList<XSDDisallowedSubstitutions>(getBlockDefault());
+ oldContents.removeAll(newBlockDefault);
+ getBlockDefault().removeAll(oldContents);
+ setListContentAndOrder(getBlockDefault(), newBlockDefault);
+ }
+ else if (newBlockDefault.isEmpty() && !isSetBlockDefault())
+ {
+ getBlockDefault().clear();
+ }
+ }
+ }
+
+ public String getStringFinalDefault()
+ {
+ if (isSetFinalDefault())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getFinalDefault())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringFinalDefault(String finalDefault)
+ {
+ if (finalDefault == null)
+ {
+ unsetFinalDefault();
+ }
+ else
+ {
+ List<XSDProhibitedSubstitutions> newFinalDefault = new ArrayList<XSDProhibitedSubstitutions>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(finalDefault); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+ XSDProhibitedSubstitutions literal = XSDProhibitedSubstitutions.get(token);
+ if (literal != null)
+ {
+ newFinalDefault.add(literal);
+ }
+ }
+ if (!newFinalDefault.equals(getFinalDefault()))
+ {
+ Collection<XSDProhibitedSubstitutions> oldContents = new ArrayList<XSDProhibitedSubstitutions>(getFinalDefault());
+ oldContents.removeAll(newFinalDefault);
+ getFinalDefault().removeAll(oldContents);
+ setListContentAndOrder(getFinalDefault(), newFinalDefault);
+ }
+ else if (newFinalDefault.isEmpty() && !isSetFinalDefault())
+ {
+ getFinalDefault().clear();
+ }
+ }
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.SCHEMA_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected void traverseToRootForPatching()
+ {
+ if (!isReconciling && isIncrementalUpdate)
+ {
+ isReconciling = true;
+ patch();
+ isReconciling = false;
+ }
+ }
+
+ protected Collection<XSDSchemaImpl> circularResolveDependencies;
+
+ protected void computeSchemasToPatch(XSDSchema root, List<XSDSchema> schemasToPatch)
+ {
+ schemasToPatch.add(root);
+ for (int i = 0; i < schemasToPatch.size(); ++i)
+ {
+ XSDSchema xsdSchema = schemasToPatch.get(i);
+ for (XSDSchemaContent content : xsdSchema.getContents())
+ {
+ if (content instanceof XSDSchemaDirective)
+ {
+ if (content instanceof XSDSchemaCompositor)
+ {
+ XSDSchemaCompositor xsdSchemaCompositor = (XSDSchemaCompositor)content;
+ XSDSchemaImpl xsdIncorporatedSchema = (XSDSchemaImpl)xsdSchemaCompositor.getIncorporatedSchema();
+ if (xsdIncorporatedSchema != null && !schemasToPatch.contains(xsdIncorporatedSchema))
+ {
+ xsdIncorporatedSchema.patchContents();
+ schemasToPatch.add(xsdIncorporatedSchema);
+ }
+ }
+ }
+ else if (!(content instanceof XSDAnnotation))
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void patch()
+ {
+ circularResolveDependencies = new HashSet<XSDSchemaImpl>();
+
+ if (XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()))
+ {
+ XSDSchema magicSchemaForSchema = getMagicSchemaForSchema(getTargetNamespace());
+ if (magicSchemaForSchema != this)
+ {
+ XSDNamedComponentImpl.addToSortedList
+ (getTypeDefinitions(), magicSchemaForSchema.getTypeDefinitions().get(0));
+ }
+ }
+ else
+ {
+ Collection<XSDSchema> xsiSchemas = resolveSchema(XSDConstants.SCHEMA_INSTANCE_URI_2001);
+ if (xsiSchemas.size() == 1)
+ {
+ XSDNamedComponentImpl.mergeToSortedList
+ (getAttributeDeclarations(),
+ xsiSchemas.iterator().next().getAttributeDeclarations());
+ }
+ }
+
+ for (Iterator<XSDSchemaDirective> i = getReferencingDirectives().iterator(); i.hasNext(); )
+ {
+ XSDSchemaDirective xsdSchemaDirective = i.next();
+ if (xsdSchemaDirective.getContainer() == null ||
+ xsdSchemaDirective.getResolvedSchema() != this &&
+ (!(xsdSchemaDirective instanceof XSDSchemaCompositor) ||
+ ((XSDSchemaCompositor)xsdSchemaDirective).getIncorporatedSchema() != this))
+ {
+ i.remove();
+ }
+ }
+
+ super.patch();
+
+ List<XSDSchema> schemasToPatch = new ArrayList<XSDSchema>();
+ computeSchemasToPatch(this, schemasToPatch);
+
+ if (circularResolveDependencies != null)
+ {
+ Collection<XSDSchemaImpl> localCircularResolveDependencies = circularResolveDependencies;
+ circularResolveDependencies = null;
+ for (XSDSchemaImpl circularSchema : localCircularResolveDependencies)
+ {
+ if (circularSchema != this)
+ {
+ circularSchema.patch();
+ }
+ }
+ }
+
+ if (schemaLocation != null)
+ {
+ for (int i = 0, size = schemasToPatch.size(); i < size; ++i)
+ {
+ XSDSchemaImpl xsdSchema = (XSDSchemaImpl)schemasToPatch.get(i);
+ xsdSchema.analyze();
+ }
+ }
+ }
+
+ protected void patchContents()
+ {
+ incorporatingSchemas = null;
+ super.patch();
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ if (!isReconciling && isIncrementalUpdate)
+ {
+ isReconciling = true;
+ analyze();
+ isReconciling = false;
+ }
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ return super.analyze();
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (XSDConstants.nodeType(element) != XSDConstants.SCHEMA_ELEMENT)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "content-valid.1",
+ (element.getNamespaceURI() == null ? "" : element.getNamespaceURI()) + "#" + element.getLocalName(),
+ XSDPlugin.INSTANCE.getString("_UI_XML_SCHEMA_name"),
+ "schema");
+ }
+ else
+ {
+ if (getContainer() == null || !eContainmentFeature().isTransient())
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ "element-complexType",
+ theElement,
+ new String []
+ {
+ XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
+ XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
+ XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
+ XSDConstants.FINALDEFAULT_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.TARGETNAMESPACE_ATTRIBUTE,
+ XSDConstants.VERSION_ATTRIBUTE
+ });
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchemaForSchema().resolveElementDeclaration("schema").getTypeDefinition();
+
+ checkComplexContent
+ (xsdComplexTypeDefinition,
+ XSDConstants.PART1,
+ "element-schema",
+ theElement);
+
+ checkAttributeTypeConstraint
+ (xsdComplexTypeDefinition,
+ "attributeFormDefault",
+ null,
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (xsdComplexTypeDefinition,
+ "blockDefault",
+ null,
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (xsdComplexTypeDefinition,
+ "elementFormDefault",
+ null,
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (xsdComplexTypeDefinition,
+ "finalDefault",
+ null,
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.FINALDEFAULT_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+ }
+ }
+
+ if (getSchemaForSchema() != null)
+ {
+ checkBuiltInTypeConstraint
+ ("anyURI",
+ getTargetNamespace(),
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.TARGETNAMESPACE_ATTRIBUTE,
+ false);
+
+ checkBuiltInTypeConstraint
+ ("token",
+ getVersion(),
+ XSDConstants.PART1,
+ "element-schema",
+ theElement,
+ XSDConstants.VERSION_ATTRIBUTE,
+ false);
+
+ validateNoDuplicates("attribute_noun", getAttributeDeclarations());
+ validateNoDuplicates("attributeGroup_noun", getAttributeGroupDefinitions());
+ validateNoDuplicates("modelGroup_noun", getModelGroupDefinitions());
+ validateNoDuplicates("element_noun", getElementDeclarations());
+ validateNoDuplicates("type_noun", getTypeDefinitions());
+ validateNoDuplicates("identityConstraint_noun", getIdentityConstraintDefinitions());
+ validateNoDuplicates("notation_noun", getNotationDeclarations());
+ }
+ }
+
+ public void validateNoDuplicates(String componentNoun, EList<? extends XSDNamedComponent> xsdNamedComponents)
+ {
+ String name = null;
+ String targetNamespace = null;
+
+
+ for (XSDNamedComponent xsdNamedComponent : xsdNamedComponents)
+ {
+ if (xsdNamedComponent.hasNameAndTargetNamespace(name, targetNamespace))
+ {
+ getDiagnosticTarget(xsdNamedComponent).createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL,
+ "coss-schema.2",
+ XSDPlugin.INSTANCE.getString(componentNoun),
+ xsdNamedComponent.getURI());
+ }
+
+ name = xsdNamedComponent.getName();
+ targetNamespace = xsdNamedComponent.getTargetNamespace();
+ }
+ }
+
+ protected void updateSortedList(XSDNamedComponent xsdNamedComponent)
+ {
+ new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDElementDeclaration(XSDElementDeclaration xsdElementDeclaration)
+ {
+ if (getElementDeclarations().remove(xsdElementDeclaration))
+ {
+ XSDNamedComponentImpl.addToSortedList(getElementDeclarations(), xsdElementDeclaration);
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration xsdAttributeDeclaration)
+ {
+ if (getAttributeDeclarations().remove(xsdAttributeDeclaration))
+ {
+ XSDNamedComponentImpl.addToSortedList(getAttributeDeclarations(), xsdAttributeDeclaration);
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition xsdAttributeGroupDefinition)
+ {
+ if (getAttributeGroupDefinitions().remove(xsdAttributeGroupDefinition))
+ {
+ XSDNamedComponentImpl.addToSortedList(getAttributeGroupDefinitions(), xsdAttributeGroupDefinition);
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDTypeDefinition(XSDTypeDefinition xsdTypeDefinition)
+ {
+ if (getTypeDefinitions().remove(xsdTypeDefinition))
+ {
+ XSDNamedComponentImpl.addToSortedList(getTypeDefinitions(), xsdTypeDefinition);
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ if (getModelGroupDefinitions().remove(xsdModelGroupDefinition))
+ {
+ XSDNamedComponentImpl.addToSortedList(getModelGroupDefinitions(), xsdModelGroupDefinition);
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDNotationDeclaration(XSDNotationDeclaration xsdNotationDeclaration)
+ {
+ if (getNotationDeclarations().remove(xsdNotationDeclaration))
+ {
+ XSDNamedComponentImpl.addToSortedList(getNotationDeclarations(), xsdNotationDeclaration);
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDIdentityConstraintDefinition(XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition)
+ {
+ if (getIdentityConstraintDefinitions().remove(xsdIdentityConstraintDefinition))
+ {
+ XSDNamedComponentImpl.addToSortedList(getIdentityConstraintDefinitions(), xsdIdentityConstraintDefinition);
+ }
+ return this;
+ }
+ }.doSwitch(xsdNamedComponent);
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_SCHEMA__CONTENTS)
+ {
+ new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDElementDeclaration(XSDElementDeclaration xsdElementDeclaration)
+ {
+ XSDNamedComponentImpl.addToSortedList(getElementDeclarations(), xsdElementDeclaration);
+ return this;
+ }
+ @Override
+ public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration xsdAttributeDeclaration)
+ {
+ XSDNamedComponentImpl.addToSortedList(getAttributeDeclarations(), xsdAttributeDeclaration);
+ return this;
+ }
+ @Override
+ public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition xsdAttributeGroupDefinition)
+ {
+ XSDNamedComponentImpl.addToSortedList(getAttributeGroupDefinitions(), xsdAttributeGroupDefinition);
+ return this;
+ }
+ @Override
+ public Object caseXSDTypeDefinition(XSDTypeDefinition xsdTypeDefinition)
+ {
+ XSDNamedComponentImpl.addToSortedList(getTypeDefinitions(), xsdTypeDefinition);
+ return this;
+ }
+ @Override
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ XSDNamedComponentImpl.addToSortedList(getModelGroupDefinitions(), xsdModelGroupDefinition);
+ return this;
+ }
+ @Override
+ public Object caseXSDNotationDeclaration(XSDNotationDeclaration xsdNotationDeclaration)
+ {
+ XSDNamedComponentImpl.addToSortedList(getNotationDeclarations(), xsdNotationDeclaration);
+ return this;
+ }
+ @Override
+ public Object caseXSDAnnotation(XSDAnnotation xsdAnnotation)
+ {
+ getAnnotations().add(xsdAnnotation);
+ return this;
+ }
+ }.doSwitch(xsdConcreteComponent);
+
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_SCHEMA__CONTENTS)
+ {
+ new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDElementDeclaration(XSDElementDeclaration xsdElementDeclaration)
+ {
+ getElementDeclarations().remove(xsdElementDeclaration);
+ return this;
+ }
+ @Override
+ public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration xsdAttributeDeclaration)
+ {
+ getAttributeDeclarations().remove(xsdAttributeDeclaration);
+ return this;
+ }
+ @Override
+ public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition xsdAttributeGroupDefinition)
+ {
+ getAttributeGroupDefinitions().remove(xsdAttributeGroupDefinition);
+ return this;
+ }
+ @Override
+ public Object caseXSDTypeDefinition(XSDTypeDefinition xsdTypeDefinition)
+ {
+ getTypeDefinitions().remove(xsdTypeDefinition);
+ return this;
+ }
+ @Override
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ getModelGroupDefinitions().remove(xsdModelGroupDefinition);
+ return this;
+ }
+ @Override
+ public Object caseXSDNotationDeclaration(XSDNotationDeclaration xsdNotationDeclaration)
+ {
+ getNotationDeclarations().remove(xsdNotationDeclaration);
+ return this;
+ }
+ @Override
+ public Object caseXSDAnnotation(XSDAnnotation xsdAnnotation)
+ {
+ getAnnotations().remove(xsdAnnotation);
+ return this;
+ }
+ }.doSwitch(xsdConcreteComponent);
+
+ traverseToRootForPatching();
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.VERSION_ATTRIBUTE))
+ {
+ String newVersion = changedElement.getAttributeNS(null, XSDConstants.VERSION_ATTRIBUTE);
+ if (!newVersion.equals(getVersion()))
+ {
+ setVersion(newVersion);
+ }
+ }
+ else if (getVersion() != null)
+ {
+ setVersion(null);
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.TARGETNAMESPACE_ATTRIBUTE))
+ {
+ String newTargetNamespace = changedElement.getAttributeNS(null, XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
+ if (!newTargetNamespace.equals(getTargetNamespace()))
+ {
+ setTargetNamespace(newTargetNamespace);
+ }
+ }
+ else if (getTargetNamespace() != null)
+ {
+ setTargetNamespace(null);
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE))
+ {
+ XSDForm newAttributeFormDefault = XSDForm.get(changedElement.getAttributeNS(null, XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE));
+ if (!isSetAttributeFormDefault() || newAttributeFormDefault != getAttributeFormDefault())
+ {
+ setAttributeFormDefault(newAttributeFormDefault);
+ }
+ }
+ else if (isSetAttributeFormDefault())
+ {
+ unsetAttributeFormDefault();
+ }
+ if (changedElement.hasAttributeNS(null, XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE))
+ {
+ XSDForm newElementFormDefault = XSDForm.get(changedElement.getAttributeNS(null, XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE));
+ if (!isSetElementFormDefault() || newElementFormDefault != getElementFormDefault())
+ {
+ setElementFormDefault(newElementFormDefault);
+ }
+ }
+ else if (isSetElementFormDefault())
+ {
+ unsetElementFormDefault();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.BLOCKDEFAULT_ATTRIBUTE))
+ {
+ setStringBlockDefault(changedElement.getAttributeNS(null, XSDConstants.BLOCKDEFAULT_ATTRIBUTE));
+ }
+ else if (isSetBlockDefault())
+ {
+ unsetBlockDefault();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.FINALDEFAULT_ATTRIBUTE))
+ {
+ setStringFinalDefault(changedElement.getAttributeNS(null, XSDConstants.FINALDEFAULT_ATTRIBUTE));
+ }
+ else if (isSetFinalDefault())
+ {
+ unsetFinalDefault();
+ }
+
+ Map<String, String> theQNamePrefixToNamespaceMap = getQNamePrefixToNamespaceMap();
+ theQNamePrefixToNamespaceMap.clear();
+ for (Element currentElement = changedElement; ; )
+ {
+ NamedNodeMap attributes = currentElement.getAttributes();
+ for (int i = 0, size = attributes.getLength(); i < size; ++i)
+ {
+ Attr attr = (Attr)attributes.item(i);
+ String name = attr.getNodeName();
+ if (name.startsWith("xmlns"))
+ {
+ String value = attr.getNodeValue();
+ int index = name.indexOf(":");
+ String key = index == -1 || index == name.length() - 1? null : name.substring(index + 1);
+ if (!theQNamePrefixToNamespaceMap.containsKey(key))
+ {
+ theQNamePrefixToNamespaceMap.put(key, value);
+ }
+ }
+ }
+ Node parent = currentElement.getParentNode();
+ if (parent instanceof Element)
+ {
+ currentElement = (Element)parent;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ String nodeName = changedElement.getNodeName();
+ int index = nodeName.indexOf(":");
+ setSchemaForSchemaQNamePrefix(index == -1 ? null : nodeName.substring(0, index));
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ XSDSchemaContent xsdSchemaContent = XSDSchemaContentImpl.createSchemaContent(child);
+ if (xsdSchemaContent != null)
+ {
+ newContents.add(xsdSchemaContent);
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ if (!remainingContents.isEmpty())
+ {
+ getContents().removeAll(remainingContents);
+ }
+
+ @SuppressWarnings("unchecked") List<XSDSchemaContent> list = (List<XSDSchemaContent>)(List<?>)newContents;
+ setListContentAndOrder(getContents(), list);
+ }
+
+ public XSDConcreteComponent getCorrespondingComponent(Node node)
+ {
+ // We consider all parents so that they can handle other contained nodes that otherwise don't correspond to a component.
+ //
+ List<Element> parents = new ArrayList<Element>();
+
+ if (node.getNodeType() == Node.ATTRIBUTE_NODE)
+ {
+ node = ((Attr)node).getOwnerElement();
+ }
+ else
+ {
+ // Skip ahead to an element.
+ //
+ for (Node scanNode = node; scanNode != null; scanNode = scanNode.getNextSibling())
+ {
+ if (scanNode.getNodeType() == Node.ELEMENT_NODE)
+ {
+ node = scanNode;
+ break;
+ }
+ }
+
+ // Skip back to an element.
+ //
+ for (Node scanNode = node; scanNode != null; scanNode = scanNode.getPreviousSibling())
+ {
+ if (scanNode.getNodeType() == Node.ELEMENT_NODE)
+ {
+ node = scanNode;
+ break;
+ }
+ }
+ }
+
+ // Navigate out through the elements.
+ //
+ for (Node parent = node; parent != null; parent = parent.getParentNode())
+ {
+ if (parent.getNodeType() == Node.ELEMENT_NODE)
+ {
+ parents.add((Element)parent);
+ }
+ }
+
+ XSDConcreteComponent bestXSDConcreteComponent = getBestConcreteComponent(parents);
+ return bestXSDConcreteComponent;
+ }
+
+ protected Map<String, XSDSimpleTypeDefinition> simpleTypeIdMap;
+ public Map<String, XSDSimpleTypeDefinition> getSimpleTypeIdMap()
+ {
+ if (simpleTypeIdMap == null)
+ {
+ simpleTypeIdMap = new HashMap<String, XSDSimpleTypeDefinition>();
+ for (XSDTypeDefinition xsdTypeDefinition : getTypeDefinitions())
+ {
+ if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ Element theElement = xsdTypeDefinition.getElement();
+ if (theElement != null)
+ {
+ if (theElement.hasAttributeNS(null, XSDConstants.ID_ATTRIBUTE) && xsdTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ simpleTypeIdMap.put(theElement.getAttributeNS(null, XSDConstants.ID_ATTRIBUTE), (XSDSimpleTypeDefinition)xsdTypeDefinition);
+ }
+ }
+ }
+ }
+ }
+ return simpleTypeIdMap;
+ }
+
+ protected List<XSDSchema> incorporatingSchemas;
+
+ protected List<XSDSchema> getIncorporatingSchemas()
+ {
+ if (incorporatingSchemas == null)
+ {
+ List<XSDSchema> visited = new UniqueEList.FastCompare<XSDSchema>();
+ visited.add(this);
+ incorporatingSchemas = new ArrayList<XSDSchema>();
+ for (int i = 0; i < visited.size(); ++i)
+ {
+ XSDSchemaImpl xsdSchema = (XSDSchemaImpl)visited.get(i);
+ incorporatingSchemas.add(xsdSchema);
+ for (XSDSchemaDirective xsdSchemaDirective : xsdSchema.getReferencingDirectives())
+ {
+ if (xsdSchemaDirective instanceof XSDSchemaCompositor && ((XSDSchemaCompositor)xsdSchemaDirective).getIncorporatedSchema() == xsdSchema)
+ {
+ XSDSchemaImpl incorporatingSchema = (XSDSchemaImpl)xsdSchemaDirective.getSchema();
+ if (incorporatingSchema != null && visited.add(incorporatingSchema))
+ {
+ incorporatingSchemas.add(incorporatingSchema);
+ visited.addAll(incorporatingSchema.getIncorporatingSchemas());
+ }
+ }
+ }
+ }
+ }
+ return incorporatingSchemas;
+ }
+
+ /**
+ * This returns set of schemas with the given namespace as it's target namespace.
+ */
+ public Collection<XSDSchema> resolveSchema(String namespace)
+ {
+ if ("".equals(namespace))
+ {
+ namespace = null;
+ }
+
+ if (namespace == null ? getTargetNamespace() == null || "".equals(getTargetNamespace()) || hasRetargetedNamespace() : namespace.equals(getTargetNamespace()))
+ {
+ return getIncorporatingSchemas();
+ }
+ else if (XSDConstants.isSchemaInstanceNamespace(namespace))
+ {
+ return Collections.singleton(getSchemaInstance(namespace));
+ }
+ else
+ {
+ Collection<XSDSchema> result = new ArrayList<XSDSchema>();
+ for (XSDSchemaContent xsdSchemaContent : getContents())
+ {
+ if (xsdSchemaContent instanceof XSDSchemaDirective)
+ {
+ if (xsdSchemaContent instanceof XSDImport)
+ {
+ XSDImport xsdImport = (XSDImport)xsdSchemaContent;
+ String importNamespace = xsdImport.getNamespace();
+ if (namespace == null ? importNamespace == null || "".equals(importNamespace): namespace.equals(importNamespace))
+ {
+ XSDSchema importedSchema = ((XSDImportImpl)xsdImport).importSchema();
+ if (importedSchema != null)
+ {
+ result.add(importedSchema);
+ Collection<XSDSchemaImpl> circular = ((XSDSchemaImpl)importedSchema).circularResolveDependencies;
+ if (circular != null)
+ {
+ circular.add(this);
+ }
+ }
+ }
+ }
+ }
+ else if (!(xsdSchemaContent instanceof XSDAnnotation))
+ {
+ break;
+ }
+ }
+
+ return result;
+ }
+ }
+
+ /**
+ * This is a helper method for searching for a name in one of the schemas named component relations.
+ */
+ protected XSDNamedComponent resolveNamedComponent(EReference namedComponentsRefReference, String namespace, String localName)
+ {
+ if ("".equals(namespace))
+ {
+ namespace = null;
+ }
+
+ Collection<XSDSchema> resolvedSchemas = resolveSchema(namespace);
+ for (XSDSchema resolvedSchema : resolvedSchemas)
+ {
+ @SuppressWarnings("unchecked") List<XSDNamedComponent> list = (List<XSDNamedComponent>)resolvedSchema.eGet(namedComponentsRefReference);
+ XSDNamedComponent xsdNamedComponent = XSDNamedComponentImpl.findInSortedList(list, namespace, localName);
+ if (xsdNamedComponent == null && namespace == null && resolvedSchemas.contains(this) && resolvedSchema.getTargetNamespace() != null)
+ {
+ xsdNamedComponent = XSDNamedComponentImpl.findInSortedList(list, getTargetNamespace(), localName);
+
+ }
+ if (xsdNamedComponent != null)
+ {
+ return xsdNamedComponent;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public XSDAttributeDeclaration resolveAttributeDeclaration(String namespace, String localName)
+ {
+ XSDAttributeDeclaration result =
+ (XSDAttributeDeclaration)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__ATTRIBUTE_DECLARATIONS, namespace, localName);
+ if (result == null)
+ {
+ result = createUnresolvedAttributeDeclaration(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String namespace, String localName)
+ {
+ XSDAttributeGroupDefinition result =
+ (XSDAttributeGroupDefinition)resolveNamedComponent
+ (XSDPackage.Literals.XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS, namespace, localName);
+ if (result == null)
+ {
+ result = createUnresolvedAttributeGroupDefinition(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDElementDeclaration resolveElementDeclaration(String namespace, String localName)
+ {
+ XSDElementDeclaration result =
+ (XSDElementDeclaration)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__ELEMENT_DECLARATIONS, namespace, localName);
+ if (result == null)
+ {
+ result = createUnresolvedElementDeclaration(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDTypeDefinition resolveTypeDefinition(String namespace, String localName)
+ {
+ XSDTypeDefinition result =
+ (XSDTypeDefinition)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__TYPE_DEFINITIONS, namespace, localName);
+ if (result == null &&
+ XSDConstants.isSchemaForSchemaNamespace(namespace) &&
+ !XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()))
+ {
+ result = getSchemaForSchema(namespace).resolveTypeDefinition(namespace, localName);
+ }
+ if (result == null)
+ {
+ result = createUnresolvedTypeDefinition(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String namespace, String localName)
+ {
+ XSDTypeDefinition xsdTypeDefinition =
+ (XSDTypeDefinition)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__TYPE_DEFINITIONS, namespace, localName);
+ XSDSimpleTypeDefinition result =
+ xsdTypeDefinition instanceof XSDSimpleTypeDefinition ? (XSDSimpleTypeDefinition)xsdTypeDefinition : null;
+ if (result == null)
+ {
+ if (XSDConstants.isSchemaForSchemaNamespace(namespace))
+ {
+ if ("anyType".equals(localName) || "anySimpleType".equals(localName))
+ {
+ XSDSchema magicSchemaForSchema = getMagicSchemaForSchema(namespace);
+ if (magicSchemaForSchema == this)
+ {
+ EList<XSDTypeDefinition> typeDefinitions = magicSchemaForSchema.getTypeDefinitions();
+ if (typeDefinitions.size() > 0)
+ {
+ result = (XSDSimpleTypeDefinition)typeDefinitions.get(0);
+ }
+ }
+ else
+ {
+ result = magicSchemaForSchema.resolveSimpleTypeDefinition(namespace, localName);
+ }
+ }
+ else if (!XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()))
+ {
+ XSDSchema schemaForSchema = getSchemaForSchema(namespace);
+ result = schemaForSchema.resolveSimpleTypeDefinition(namespace, localName);
+ }
+ }
+ }
+
+ if (result == null)
+ {
+ result = createUnresolvedSimpleTypeDefinition(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDComplexTypeDefinition resolveComplexTypeDefinition(String namespace, String localName)
+ {
+ XSDTypeDefinition xsdTypeDefinition =
+ (XSDTypeDefinition)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__TYPE_DEFINITIONS, namespace, localName);
+ XSDComplexTypeDefinition result =
+ xsdTypeDefinition instanceof XSDComplexTypeDefinition ? (XSDComplexTypeDefinition)xsdTypeDefinition : null;
+ if (result == null &&
+ XSDConstants.isSchemaForSchemaNamespace(namespace) &&
+ !XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()))
+ {
+ result = getSchemaForSchema(namespace).resolveComplexTypeDefinition(namespace, localName);
+ }
+ if (result == null)
+ {
+ result = createUnresolvedComplexTypeDefinition(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDModelGroupDefinition resolveModelGroupDefinition(String namespace, String localName)
+ {
+ XSDModelGroupDefinition result =
+ (XSDModelGroupDefinition)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__MODEL_GROUP_DEFINITIONS, namespace, localName);
+ if (result == null)
+ {
+ result = createUnresolvedModelGroupDefinition(namespace, localName);
+ }
+
+ return result;
+ }
+
+ @Override
+ public XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String namespace, String localName)
+ {
+ XSDIdentityConstraintDefinition result =
+ (XSDIdentityConstraintDefinition)resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS, namespace, localName);
+ if (result == null)
+ {
+ result = createUnresolvedIdentityConstraintDefinition(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ public XSDNotationDeclaration resolveNotationDeclaration(String namespace, String localName)
+ {
+ XSDNotationDeclaration result =
+ (XSDNotationDeclaration) resolveNamedComponent(XSDPackage.Literals.XSD_SCHEMA__NOTATION_DECLARATIONS, namespace, localName);
+ if (result == null)
+ {
+ result = createUnresolvedNotationDeclaration(namespace, localName);
+ }
+ return result;
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (eAttribute == XSDPackage.Literals.XSD_SCHEMA__SCHEMA_LOCATION)
+ {
+ patch();
+ }
+ else
+ {
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA__VERSION)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.VERSION_ATTRIBUTE,
+ getVersion());
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA__TARGET_NAMESPACE)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.TARGETNAMESPACE_ATTRIBUTE,
+ getTargetNamespace());
+ if (eAttribute != null)
+ {
+ if (!isReconciling && isIncrementalUpdate)
+ {
+ for (Object content : getContents())
+ {
+ if (content instanceof XSDNamedComponentImpl)
+ {
+ ((XSDNamedComponentImpl)content).patchTargetNamespaceAttribute();
+ }
+ }
+ reset();
+ }
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
+ isSetAttributeFormDefault() ? getAttributeFormDefault().getName() : null);
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA__ELEMENT_FORM_DEFAULT)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
+ isSetElementFormDefault() ? getElementFormDefault().getName() : null);
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA__BLOCK_DEFAULT)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
+ getStringBlockDefault());
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SCHEMA__FINAL_DEFAULT)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.FINALDEFAULT_ATTRIBUTE,
+ getStringFinalDefault());
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ if (eReference == XSDPackage.Literals.XSD_SCHEMA__REFERENCING_DIRECTIVES)
+ {
+ boolean newHasRetargetedNamespace = false;
+ for (XSDSchemaDirective xsdSchemaDirective : getReferencingDirectives())
+ {
+ if (xsdSchemaDirective instanceof XSDSchemaCompositor)
+ {
+ XSDSchemaCompositor xsdSchemaCompositor = (XSDSchemaCompositor)xsdSchemaDirective;
+ if (xsdSchemaCompositor.getResolvedSchema() != xsdSchemaCompositor.getIncorporatedSchema() &&
+ xsdSchemaCompositor.getResolvedSchema().getTargetNamespace() == null)
+ {
+ newHasRetargetedNamespace = true;
+ break;
+ }
+ }
+ }
+ hasRetargetedNamespace = newHasRetargetedNamespace;
+ }
+ }
+
+/*
+ public void unsetElement()
+ {
+ Element oldElement = getElement();
+ if (oldElement instanceof EventTarget)
+ {
+ EventTarget oldEventTarget = ((EventTarget)oldElement);
+ oldEventTarget.removeEventListener("DOMNodeInserted", getEventListener(), true);
+ oldEventTarget.removeEventListener("DOMNodeRemoved", getEventListener(), true);
+ oldEventTarget.removeEventListener("DOMAttrModified", getEventListener(), true);
+ }
+ super.unsetElement();
+ }
+*/
+
+ @Override
+ public void setElement(Element element)
+ {
+ Element oldElement = getElement();
+ if (oldElement instanceof EventTarget)
+ {
+ EventTarget oldEventTarget = ((EventTarget)oldElement);
+ oldEventTarget.removeEventListener("DOMNodeInserted", getEventListener(), true);
+ oldEventTarget.removeEventListener("DOMNodeRemoved", getEventListener(), true);
+ oldEventTarget.removeEventListener("DOMAttrModified", getEventListener(), true);
+ }
+ super.setElement(element);
+ if (element instanceof EventTarget)
+ {
+ EventTarget eventTarget = ((EventTarget)element);
+ eventTarget.addEventListener("DOMNodeInserted", getEventListener(), true);
+ eventTarget.addEventListener("DOMNodeRemoved", getEventListener(), true);
+ eventTarget.addEventListener("DOMAttrModified", getEventListener(), true);
+ }
+ if (element != null)
+ {
+ document = element.getOwnerDocument();
+ }
+ }
+
+ public XSDSchema getSchemaForSchema()
+ {
+ return getSchemaForSchema(getSchemaForSchemaNamespace());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA__CONTENTS:
+ return ((InternalEList<?>)getContents()).basicRemove(otherEnd, msgs);
+ case XSDPackage.XSD_SCHEMA__INCORPORATED_VERSIONS:
+ return ((InternalEList<?>)getIncorporatedVersions()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA__DOCUMENT:
+ return getDocument();
+ case XSDPackage.XSD_SCHEMA__SCHEMA_LOCATION:
+ return getSchemaLocation();
+ case XSDPackage.XSD_SCHEMA__TARGET_NAMESPACE:
+ return getTargetNamespace();
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT:
+ return getAttributeFormDefault();
+ case XSDPackage.XSD_SCHEMA__ELEMENT_FORM_DEFAULT:
+ return getElementFormDefault();
+ case XSDPackage.XSD_SCHEMA__FINAL_DEFAULT:
+ return getFinalDefault();
+ case XSDPackage.XSD_SCHEMA__BLOCK_DEFAULT:
+ return getBlockDefault();
+ case XSDPackage.XSD_SCHEMA__VERSION:
+ return getVersion();
+ case XSDPackage.XSD_SCHEMA__CONTENTS:
+ return getContents();
+ case XSDPackage.XSD_SCHEMA__ELEMENT_DECLARATIONS:
+ return getElementDeclarations();
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_DECLARATIONS:
+ return getAttributeDeclarations();
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS:
+ return getAttributeGroupDefinitions();
+ case XSDPackage.XSD_SCHEMA__TYPE_DEFINITIONS:
+ return getTypeDefinitions();
+ case XSDPackage.XSD_SCHEMA__MODEL_GROUP_DEFINITIONS:
+ return getModelGroupDefinitions();
+ case XSDPackage.XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS:
+ return getIdentityConstraintDefinitions();
+ case XSDPackage.XSD_SCHEMA__NOTATION_DECLARATIONS:
+ return getNotationDeclarations();
+ case XSDPackage.XSD_SCHEMA__ANNOTATIONS:
+ return getAnnotations();
+ case XSDPackage.XSD_SCHEMA__ALL_DIAGNOSTICS:
+ return getAllDiagnostics();
+ case XSDPackage.XSD_SCHEMA__REFERENCING_DIRECTIVES:
+ return getReferencingDirectives();
+ case XSDPackage.XSD_SCHEMA__ROOT_VERSION:
+ return getRootVersion();
+ case XSDPackage.XSD_SCHEMA__ORIGINAL_VERSION:
+ return getOriginalVersion();
+ case XSDPackage.XSD_SCHEMA__INCORPORATED_VERSIONS:
+ return getIncorporatedVersions();
+ case XSDPackage.XSD_SCHEMA__SCHEMA_FOR_SCHEMA:
+ return getSchemaForSchema();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA__DOCUMENT:
+ setDocument((Document)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__SCHEMA_LOCATION:
+ setSchemaLocation((String)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__TARGET_NAMESPACE:
+ setTargetNamespace((String)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT:
+ setAttributeFormDefault((XSDForm)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ELEMENT_FORM_DEFAULT:
+ setElementFormDefault((XSDForm)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__FINAL_DEFAULT:
+ getFinalDefault().clear();
+ getFinalDefault().addAll((Collection<? extends XSDProhibitedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__BLOCK_DEFAULT:
+ getBlockDefault().clear();
+ getBlockDefault().addAll((Collection<? extends XSDDisallowedSubstitutions>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__VERSION:
+ setVersion((String)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__CONTENTS:
+ getContents().clear();
+ getContents().addAll((Collection<? extends XSDSchemaContent>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ELEMENT_DECLARATIONS:
+ getElementDeclarations().clear();
+ getElementDeclarations().addAll((Collection<? extends XSDElementDeclaration>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_DECLARATIONS:
+ getAttributeDeclarations().clear();
+ getAttributeDeclarations().addAll((Collection<? extends XSDAttributeDeclaration>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS:
+ getAttributeGroupDefinitions().clear();
+ getAttributeGroupDefinitions().addAll((Collection<? extends XSDAttributeGroupDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__TYPE_DEFINITIONS:
+ getTypeDefinitions().clear();
+ getTypeDefinitions().addAll((Collection<? extends XSDTypeDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__MODEL_GROUP_DEFINITIONS:
+ getModelGroupDefinitions().clear();
+ getModelGroupDefinitions().addAll((Collection<? extends XSDModelGroupDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS:
+ getIdentityConstraintDefinitions().clear();
+ getIdentityConstraintDefinitions().addAll((Collection<? extends XSDIdentityConstraintDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__NOTATION_DECLARATIONS:
+ getNotationDeclarations().clear();
+ getNotationDeclarations().addAll((Collection<? extends XSDNotationDeclaration>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ANNOTATIONS:
+ getAnnotations().clear();
+ getAnnotations().addAll((Collection<? extends XSDAnnotation>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__ALL_DIAGNOSTICS:
+ getAllDiagnostics().clear();
+ getAllDiagnostics().addAll((Collection<? extends XSDDiagnostic>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__REFERENCING_DIRECTIVES:
+ getReferencingDirectives().clear();
+ getReferencingDirectives().addAll((Collection<? extends XSDSchemaDirective>)newValue);
+ return;
+ case XSDPackage.XSD_SCHEMA__INCORPORATED_VERSIONS:
+ getIncorporatedVersions().clear();
+ getIncorporatedVersions().addAll((Collection<? extends XSDSchema>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA__DOCUMENT:
+ setDocument(DOCUMENT_EDEFAULT);
+ return;
+ case XSDPackage.XSD_SCHEMA__SCHEMA_LOCATION:
+ setSchemaLocation(SCHEMA_LOCATION_EDEFAULT);
+ return;
+ case XSDPackage.XSD_SCHEMA__TARGET_NAMESPACE:
+ setTargetNamespace(TARGET_NAMESPACE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT:
+ unsetAttributeFormDefault();
+ return;
+ case XSDPackage.XSD_SCHEMA__ELEMENT_FORM_DEFAULT:
+ unsetElementFormDefault();
+ return;
+ case XSDPackage.XSD_SCHEMA__FINAL_DEFAULT:
+ unsetFinalDefault();
+ return;
+ case XSDPackage.XSD_SCHEMA__BLOCK_DEFAULT:
+ unsetBlockDefault();
+ return;
+ case XSDPackage.XSD_SCHEMA__VERSION:
+ setVersion(VERSION_EDEFAULT);
+ return;
+ case XSDPackage.XSD_SCHEMA__CONTENTS:
+ getContents().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__ELEMENT_DECLARATIONS:
+ getElementDeclarations().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_DECLARATIONS:
+ getAttributeDeclarations().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS:
+ getAttributeGroupDefinitions().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__TYPE_DEFINITIONS:
+ getTypeDefinitions().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__MODEL_GROUP_DEFINITIONS:
+ getModelGroupDefinitions().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS:
+ getIdentityConstraintDefinitions().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__NOTATION_DECLARATIONS:
+ getNotationDeclarations().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__ANNOTATIONS:
+ getAnnotations().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__ALL_DIAGNOSTICS:
+ getAllDiagnostics().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__REFERENCING_DIRECTIVES:
+ getReferencingDirectives().clear();
+ return;
+ case XSDPackage.XSD_SCHEMA__INCORPORATED_VERSIONS:
+ getIncorporatedVersions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SCHEMA__DOCUMENT:
+ return DOCUMENT_EDEFAULT == null ? document != null : !DOCUMENT_EDEFAULT.equals(document);
+ case XSDPackage.XSD_SCHEMA__SCHEMA_LOCATION:
+ return SCHEMA_LOCATION_EDEFAULT == null ? schemaLocation != null : !SCHEMA_LOCATION_EDEFAULT.equals(schemaLocation);
+ case XSDPackage.XSD_SCHEMA__TARGET_NAMESPACE:
+ return TARGET_NAMESPACE_EDEFAULT == null ? targetNamespace != null : !TARGET_NAMESPACE_EDEFAULT.equals(targetNamespace);
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_FORM_DEFAULT:
+ return isSetAttributeFormDefault();
+ case XSDPackage.XSD_SCHEMA__ELEMENT_FORM_DEFAULT:
+ return isSetElementFormDefault();
+ case XSDPackage.XSD_SCHEMA__FINAL_DEFAULT:
+ return isSetFinalDefault();
+ case XSDPackage.XSD_SCHEMA__BLOCK_DEFAULT:
+ return isSetBlockDefault();
+ case XSDPackage.XSD_SCHEMA__VERSION:
+ return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+ case XSDPackage.XSD_SCHEMA__CONTENTS:
+ return contents != null && !contents.isEmpty();
+ case XSDPackage.XSD_SCHEMA__ELEMENT_DECLARATIONS:
+ return elementDeclarations != null && !elementDeclarations.isEmpty();
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_DECLARATIONS:
+ return attributeDeclarations != null && !attributeDeclarations.isEmpty();
+ case XSDPackage.XSD_SCHEMA__ATTRIBUTE_GROUP_DEFINITIONS:
+ return attributeGroupDefinitions != null && !attributeGroupDefinitions.isEmpty();
+ case XSDPackage.XSD_SCHEMA__TYPE_DEFINITIONS:
+ return typeDefinitions != null && !typeDefinitions.isEmpty();
+ case XSDPackage.XSD_SCHEMA__MODEL_GROUP_DEFINITIONS:
+ return modelGroupDefinitions != null && !modelGroupDefinitions.isEmpty();
+ case XSDPackage.XSD_SCHEMA__IDENTITY_CONSTRAINT_DEFINITIONS:
+ return identityConstraintDefinitions != null && !identityConstraintDefinitions.isEmpty();
+ case XSDPackage.XSD_SCHEMA__NOTATION_DECLARATIONS:
+ return notationDeclarations != null && !notationDeclarations.isEmpty();
+ case XSDPackage.XSD_SCHEMA__ANNOTATIONS:
+ return annotations != null && !annotations.isEmpty();
+ case XSDPackage.XSD_SCHEMA__ALL_DIAGNOSTICS:
+ return allDiagnostics != null && !allDiagnostics.isEmpty();
+ case XSDPackage.XSD_SCHEMA__REFERENCING_DIRECTIVES:
+ return referencingDirectives != null && !referencingDirectives.isEmpty();
+ case XSDPackage.XSD_SCHEMA__ROOT_VERSION:
+ return getRootVersion() != null;
+ case XSDPackage.XSD_SCHEMA__ORIGINAL_VERSION:
+ return getOriginalVersion() != null;
+ case XSDPackage.XSD_SCHEMA__INCORPORATED_VERSIONS:
+ return incorporatedVersions != null && !incorporatedVersions.isEmpty();
+ case XSDPackage.XSD_SCHEMA__SCHEMA_FOR_SCHEMA:
+ return getSchemaForSchema() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (document: ");
+ result.append(document);
+ result.append(", schemaLocation: ");
+ result.append(schemaLocation);
+ result.append(", targetNamespace: ");
+ result.append(targetNamespace);
+ result.append(", attributeFormDefault: ");
+ if ((eFlags & ATTRIBUTE_FORM_DEFAULT_ESETFLAG) != 0) result.append(ATTRIBUTE_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ATTRIBUTE_FORM_DEFAULT_EFLAG) >>> ATTRIBUTE_FORM_DEFAULT_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", elementFormDefault: ");
+ if ((eFlags & ELEMENT_FORM_DEFAULT_ESETFLAG) != 0) result.append(ELEMENT_FORM_DEFAULT_EFLAG_VALUES[(eFlags & ELEMENT_FORM_DEFAULT_EFLAG) >>> ELEMENT_FORM_DEFAULT_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", finalDefault: ");
+ result.append(finalDefault);
+ result.append(", blockDefault: ");
+ result.append(blockDefault);
+ result.append(", version: ");
+ result.append(version);
+ result.append(')');
+ return result.toString();
+ }
+
+ public XSDSchema getMagicSchemaForSchema()
+ {
+ return getMagicSchemaForSchema(getSchemaForSchemaNamespace());
+ }
+
+ protected EventListener eventListener;
+ protected Node deletionNode;
+
+ public Node getDeletionNode()
+ {
+ return deletionNode;
+ }
+
+ private static class DummyEventListener implements EventListener, Serializable
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void handleEvent(Event arg0)
+ {
+ // Ignore.
+ }
+ }
+
+ protected EventListener getEventListener()
+ {
+ if (eventListener == null)
+ {
+ class XSDSchemaEventListener implements EventListener, Serializable
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void handleEvent(Event event)
+ {
+ if (event instanceof MutationEvent)
+ {
+ MutationEvent mutationEvent = (MutationEvent)event;
+ if (mutationEvent.getTarget() instanceof Node)
+ {
+ Node node = (Node)mutationEvent.getTarget();
+ while (node.getNodeType() != Node.ELEMENT_NODE)
+ {
+ node = node.getParentNode();
+ }
+ if (mutationEvent.getAttrChange() == 0)
+ {
+ XSDConcreteComponent listener = getCorrespondingComponent(node.getParentNode());
+ if (listener != null)
+ {
+ if (event.getType().equals("DOMNodeRemoved"))
+ {
+ deletionNode = (Node)event.getTarget();
+ }
+ Node parent = node.getParentNode();
+ if (parent.getNodeType() == Node.ELEMENT_NODE)
+ {
+ listener.elementContentsChanged((Element)parent);
+ }
+ deletionNode = null;
+ }
+ }
+ else
+ {
+ XSDConcreteComponent listener = getCorrespondingComponent(node);
+ if (listener != null)
+ {
+ listener.elementAttributesChanged((Element)node);
+ }
+ }
+ }
+ }
+ }
+
+ public Object writeReplace()
+ {
+ return new DummyEventListener();
+ }
+ }
+ eventListener = new XSDSchemaEventListener();
+ }
+ return eventListener;
+ }
+
+ public Document updateDocument()
+ {
+ document = XSDParser.createDocument();
+ return document;
+ }
+
+ protected boolean isIncrementalUpdate = true;
+
+ public void setIncrementalUpdate(boolean isIncrementalUpdate)
+ {
+ this.isIncrementalUpdate = isIncrementalUpdate;
+ traverseToRootForPatching();
+ }
+
+ public boolean isIncrementalUpdate()
+ {
+ return isIncrementalUpdate;
+ }
+
+ public void update()
+ {
+ boolean oldIsIncrementalUpdate = isIncrementalUpdate;
+ isIncrementalUpdate = true;
+ traverseToRootForPatching();
+ isIncrementalUpdate = oldIsIncrementalUpdate;
+ }
+
+ public void update(boolean force)
+ {
+ forceResolve = force;
+ update();
+ forceResolve = false;
+ }
+
+ @Override
+ public void reset()
+ {
+ super.reset();
+
+ redefinitionMap.clear();
+
+ reset(getAttributeDeclarations());
+ reset(getAttributeGroupDefinitions());
+ reset(getElementDeclarations());
+ reset(getModelGroupDefinitions());
+ reset(getTypeDefinitions());
+ reset(getNotationDeclarations());
+ reset(getIdentityConstraintDefinitions());
+
+ forceResolve = true;
+ update();
+ forceResolve = false;
+ }
+
+ protected void reset(List<? extends XSDConcreteComponent> components)
+ {
+ for (Iterator<? extends XSDConcreteComponent> i = components.iterator(); i.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = i.next();
+ if (xsdConcreteComponent.getSchema() != this)
+ {
+ i.remove();
+ }
+ }
+ }
+
+ protected String pendingSchemaLocation;
+ public String getPendingSchemaLocation()
+ {
+ return pendingSchemaLocation;
+ }
+
+ protected List<XSDSchemaImpl> schemasToRedefine;
+ public List<XSDSchemaImpl> getSchemasToRedefine()
+ {
+ if (schemasToRedefine == null)
+ {
+ schemasToRedefine = new UniqueEList<XSDSchemaImpl>();
+ schemasToRedefine.add(this);
+ }
+ return schemasToRedefine;
+ }
+
+ protected Map<XSDComponent, XSDComponent> redefinitionMap = new HashMap<XSDComponent, XSDComponent>();
+ public Map<XSDComponent, XSDComponent> getRedefinitionMap()
+ {
+ return redefinitionMap;
+ }
+
+ public XSDSchema imported(XSDImport xsdImport)
+ {
+ xsdImport.setResolvedSchema(this);
+ getReferencingDirectives().add(xsdImport);
+ propogateComponents(xsdImport.getSchema());
+
+ return this;
+ }
+
+ public void propogateComponents(XSDSchema otherXSDSchema)
+ {
+ otherXSDSchema.getAnnotations().addAll(getAnnotations());
+
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getAttributeDeclarations(), getAttributeDeclarations());
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getAttributeGroupDefinitions(), getAttributeGroupDefinitions());
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getElementDeclarations(), getElementDeclarations());
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getModelGroupDefinitions(), getModelGroupDefinitions());
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getTypeDefinitions(), getTypeDefinitions());
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getNotationDeclarations(), getNotationDeclarations());
+ XSDNamedComponentImpl.mergeToSortedList
+ (otherXSDSchema.getIdentityConstraintDefinitions(), getIdentityConstraintDefinitions());
+ }
+
+ public XSDSchema redefined(XSDRedefine xsdRedefine)
+ {
+ XSDSchema redefiningSchema = xsdRedefine.getSchema();
+ xsdRedefine.setResolvedSchema(this);
+ getReferencingDirectives().add(xsdRedefine);
+ if (redefiningSchema != this &&
+ (getTargetNamespace() == null || getTargetNamespace().equals(redefiningSchema.getTargetNamespace())))
+ {
+ for (XSDSchema incorporatedVersion : getIncorporatedVersions())
+ {
+ if (incorporatedVersion.getTargetNamespace() == null ?
+ redefiningSchema.getTargetNamespace() == null :
+ incorporatedVersion.getTargetNamespace().equals(redefiningSchema.getTargetNamespace()))
+ {
+ for (ListIterator<XSDSchemaDirective> i = incorporatedVersion.getReferencingDirectives().listIterator(); i.hasNext(); )
+ {
+ XSDSchemaDirective xsdSchemaDirective = i.next();
+ // This was commented out to fix 72109, i.e., to prevent stack overflow.
+ // There really does need to be some kind of guard here in the general case.
+ // But it's very challenging to fix this, so it's better to not overflow
+ // and to have some other unreported corner case be wrong.
+ // Returning a previous results in the same thing being redefined multiple times, which is also no good.
+ // I'll add a guard to avoid overflow.
+ if (xsdRedefine.getSchema() == xsdSchemaDirective.getSchema() || getIncorporatedVersions().size() > 10)
+ {
+ ((XSDSchemaImpl)incorporatedVersion).incorporate(xsdRedefine);
+ return incorporatedVersion;
+ }
+ }
+ }
+ }
+
+ XSDSchemaImpl redefinedSchema = (XSDSchemaImpl)cloneConcreteComponent(true, true);
+
+ if (redefinedSchema.getTargetNamespace() == null && redefiningSchema.getTargetNamespace() != null)
+ {
+ redefinedSchema.patch();
+ redefinedSchema.setTargetNamespace(redefiningSchema.getTargetNamespace());
+ redefinedSchema.patch();
+ }
+
+ // Change includes to redefines so that clones are created.
+ //
+ for (ListIterator<XSDSchemaContent> i = redefinedSchema.getContents().listIterator(); i.hasNext(); )
+ {
+ Object component = i.next();
+ if (component instanceof XSDInclude)
+ {
+ redefinedSchema.isReconciling = true;
+ i.remove();
+ XSDRedefine xsdRedefineReplaced = XSDFactory.eINSTANCE.createXSDRedefine();
+ xsdRedefineReplaced.setSchemaLocation(((XSDInclude)component).getSchemaLocation());
+ i.add(xsdRedefineReplaced);
+ redefinedSchema.isReconciling = false;
+ }
+ }
+
+ redefinedSchema.pendingSchemaLocation = getSchemaLocation();
+ getIncorporatedVersions().add(redefinedSchema);
+ redefinedSchema.incorporate(xsdRedefine);
+ return redefinedSchema;
+ }
+
+ return this;
+ }
+
+ public XSDSchema included(XSDInclude xsdInclude)
+ {
+ XSDSchema includingSchema = xsdInclude.getSchema();
+ xsdInclude.setResolvedSchema(this);
+ getReferencingDirectives().add(xsdInclude);
+ if (getTargetNamespace() == null || getTargetNamespace().equals(includingSchema.getTargetNamespace()))
+ {
+ if (includingSchema.getTargetNamespace() != null && getTargetNamespace() == null)
+ {
+ for (XSDSchema xsdSchema : getIncorporatedVersions())
+ {
+ XSDSchemaImpl incorporatedVersion = (XSDSchemaImpl)xsdSchema;
+ if (includingSchema.getTargetNamespace().equals(incorporatedVersion.getTargetNamespace()))
+ {
+ if (incorporatedVersion.getReferencingDirectives().isEmpty())
+ {
+ incorporatedVersion.incorporate(xsdInclude);
+ return incorporatedVersion;
+ }
+ for (XSDSchemaDirective xsdSchemaDirective : incorporatedVersion.getReferencingDirectives())
+ {
+ if (xsdSchemaDirective instanceof XSDInclude)
+ {
+ incorporatedVersion.incorporate(xsdInclude);
+ return incorporatedVersion;
+ }
+ }
+ }
+ }
+ XSDSchemaImpl includedSchema = (XSDSchemaImpl)cloneConcreteComponent(true, true);
+ includedSchema.patch();
+ includedSchema.setTargetNamespace(includingSchema.getTargetNamespace());
+ includedSchema.patch();
+ getIncorporatedVersions().add(includedSchema);
+ includedSchema.incorporate(xsdInclude);
+ return includedSchema;
+ }
+ else
+ {
+ incorporate(xsdInclude);
+ }
+ }
+ return this;
+ }
+
+ protected void incorporate(XSDSchemaCompositor xsdSchemaCompositor)
+ {
+ xsdSchemaCompositor.setIncorporatedSchema(this);
+ XSDSchema redefiningSchema = xsdSchemaCompositor.getSchema();
+ getReferencingDirectives().add(xsdSchemaCompositor);
+
+ if (getTargetNamespace() == null && redefiningSchema.getTargetNamespace() != null)
+ {
+ setTargetNamespace(redefiningSchema.getTargetNamespace());
+ }
+
+ if (getPendingSchemaLocation() != null)
+ {
+ for (Object component : getContents())
+ {
+ if (component instanceof XSDSchemaDirective)
+ {
+ ((XSDConcreteComponentImpl)component).patch();
+ }
+ }
+ }
+
+ if (xsdSchemaCompositor instanceof XSDRedefine)
+ {
+ XSDSwitch<Object> xsdSwitch =
+ new XSDSwitch<Object>()
+ {
+ @Override
+ public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition xsdAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition redefinedAttributeGroupDefinition =
+ resolveAttributeGroupDefinition(xsdAttributeGroupDefinition.getName());
+ for (XSDSchemaImpl schemaToRedefine : getSchemasToRedefine())
+ {
+ int index = schemaToRedefine.getAttributeGroupDefinitions().indexOf(redefinedAttributeGroupDefinition);
+ if (index != -1)
+ {
+ schemaToRedefine.getAttributeGroupDefinitions().set(index, xsdAttributeGroupDefinition);
+ schemaToRedefine.redefinitionMap.put(xsdAttributeGroupDefinition, redefinedAttributeGroupDefinition);
+ }
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition redefinedSimpleTypeDefinition =
+ resolveSimpleTypeDefinition(xsdSimpleTypeDefinition.getName());
+ for (XSDSchemaImpl schemaToRedefine : getSchemasToRedefine())
+ {
+ int index = schemaToRedefine.getTypeDefinitions().indexOf(redefinedSimpleTypeDefinition);
+ if (index != -1)
+ {
+ schemaToRedefine.getTypeDefinitions().set(index, xsdSimpleTypeDefinition);
+ schemaToRedefine.redefinitionMap.put(xsdSimpleTypeDefinition, redefinedSimpleTypeDefinition);
+ }
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDComplexTypeDefinition(XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition redefinedComplexTypeDefinition =
+ resolveComplexTypeDefinition(xsdComplexTypeDefinition.getName());
+ if (xsdComplexTypeDefinition != redefinedComplexTypeDefinition)
+ {
+ for (XSDSchemaImpl schemaToRedefine : getSchemasToRedefine())
+ {
+ int index = schemaToRedefine.getTypeDefinitions().indexOf(redefinedComplexTypeDefinition);
+ if (index != -1)
+ {
+ schemaToRedefine.getTypeDefinitions().set(index, xsdComplexTypeDefinition);
+ schemaToRedefine.redefinitionMap.put(xsdComplexTypeDefinition, redefinedComplexTypeDefinition);
+ }
+ }
+ }
+ return this;
+ }
+ @Override
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ XSDModelGroupDefinition redefinedModelGroupDefinition =
+ resolveModelGroupDefinition(xsdModelGroupDefinition.getName());
+ for (XSDSchemaImpl schemaToRedefine : getSchemasToRedefine())
+ {
+ int index = schemaToRedefine.getModelGroupDefinitions().indexOf(redefinedModelGroupDefinition);
+ if (index != -1)
+ {
+ schemaToRedefine.getModelGroupDefinitions().set(index, xsdModelGroupDefinition);
+ schemaToRedefine.redefinitionMap.put(xsdModelGroupDefinition, redefinedModelGroupDefinition);
+ }
+ }
+ return this;
+ }
+ };
+
+ for (XSDRedefineContent xsdRedefineContent : ((XSDRedefine)xsdSchemaCompositor).getContents())
+ {
+ xsdSwitch.doSwitch(xsdRedefineContent);
+ }
+ }
+
+ if (((XSDSchemaImpl)redefiningSchema).getPendingSchemaLocation() != null)
+ {
+ ((XSDSchemaImpl)redefiningSchema).getSchemasToRedefine().addAll(getSchemasToRedefine());
+ }
+
+ propogateComponents(redefiningSchema);
+
+ if (getPendingSchemaLocation() == null)
+ {
+ patch();
+ }
+
+ ((XSDSchemaImpl)redefiningSchema).getRedefinitionMap().putAll(getRedefinitionMap());
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDSchemaImpl clonedSchema = (XSDSchemaImpl)getXSDFactory().createXSDSchema();
+ clonedSchema.isReconciling = true;
+
+ clonedSchema.setTargetNamespace(getTargetNamespace());
+
+ if (isSetAttributeFormDefault())
+ {
+ clonedSchema.setAttributeFormDefault(getAttributeFormDefault());
+ }
+ if (isSetElementFormDefault())
+ {
+ clonedSchema.setElementFormDefault(getElementFormDefault());
+ }
+ if (isSetFinalDefault())
+ {
+ if (!getFinalDefault().isEmpty())
+ {
+ clonedSchema.getFinalDefault().addAll(getFinalDefault());
+ }
+ else
+ {
+ clonedSchema.getFinalDefault().clear();
+ }
+ }
+ if (isSetBlockDefault())
+ {
+ if (!getBlockDefault().isEmpty())
+ {
+ clonedSchema.getBlockDefault().addAll(getBlockDefault());
+ }
+ else
+ {
+ clonedSchema.getBlockDefault().clear();
+ }
+ }
+
+ // clonedSchema.setSchemaLocation(getSchemaLocation());
+
+ clonedSchema.setSchemaForSchemaQNamePrefix(getSchemaForSchemaQNamePrefix());
+ clonedSchema.getQNamePrefixToNamespaceMap().putAll(getQNamePrefixToNamespaceMap());
+
+ if (deep)
+ {
+ if (!getContents().isEmpty())
+ {
+ clonedSchema.getContents().addAll(cloneConcreteComponents(getContents(), true, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedSchema.setElement(getElement());
+ }
+
+ clonedSchema.isReconciling = shareDOM;
+ return clonedSchema;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDScopeImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDScopeImpl.java
new file mode 100644
index 0000000..017d34a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDScopeImpl.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDScope;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Scope</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDScopeImpl
+ extends XSDComponentImpl
+ implements XSDScope
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDScopeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_SCOPE;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSimpleTypeDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSimpleTypeDefinitionImpl.java
new file mode 100644
index 0000000..4751bf9
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDSimpleTypeDefinitionImpl.java
@@ -0,0 +1,4298 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.EcoreEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDBoundedFacet;
+import org.eclipse.xsd.XSDCardinality;
+import org.eclipse.xsd.XSDCardinalityFacet;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstrainingFacet;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDFundamentalFacet;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDNumericFacet;
+import org.eclipse.xsd.XSDOrdered;
+import org.eclipse.xsd.XSDOrderedFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDProhibitedSubstitutions;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleFinal;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.impl.type.XSDAnySimpleType;
+import org.eclipse.xsd.impl.type.XSDTypeRegister;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Type Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getVariety <em>Variety</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getFinal <em>Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getLexicalFinal <em>Lexical Final</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getValidFacets <em>Valid Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getFacetContents <em>Facet Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getFacets <em>Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMemberTypeDefinitions <em>Member Type Definitions</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getFundamentalFacets <em>Fundamental Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getBaseTypeDefinition <em>Base Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getPrimitiveTypeDefinition <em>Primitive Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getItemTypeDefinition <em>Item Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getRootTypeDefinition <em>Root Type Definition</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMinFacet <em>Min Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMaxFacet <em>Max Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMaxInclusiveFacet <em>Max Inclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMinInclusiveFacet <em>Min Inclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMinExclusiveFacet <em>Min Exclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMaxExclusiveFacet <em>Max Exclusive Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getLengthFacet <em>Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getWhiteSpaceFacet <em>White Space Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEnumerationFacets <em>Enumeration Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getPatternFacets <em>Pattern Facets</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getCardinalityFacet <em>Cardinality Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getNumericFacet <em>Numeric Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMaxLengthFacet <em>Max Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getMinLengthFacet <em>Min Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getTotalDigitsFacet <em>Total Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getFractionDigitsFacet <em>Fraction Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getOrderedFacet <em>Ordered Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getBoundedFacet <em>Bounded Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveMaxFacet <em>Effective Max Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveWhiteSpaceFacet <em>Effective White Space Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveMaxLengthFacet <em>Effective Max Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveFractionDigitsFacet <em>Effective Fraction Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectivePatternFacet <em>Effective Pattern Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveEnumerationFacet <em>Effective Enumeration Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveTotalDigitsFacet <em>Effective Total Digits Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveMinLengthFacet <em>Effective Min Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveLengthFacet <em>Effective Length Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getEffectiveMinFacet <em>Effective Min Facet</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl#getSyntheticFacets <em>Synthetic Facets</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDSimpleTypeDefinitionImpl
+ extends XSDTypeDefinitionImpl
+ implements XSDSimpleTypeDefinition
+{
+ /**
+ * The default value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariety()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDVariety VARIETY_EDEFAULT = XSDVariety.ATOMIC_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_EFLAG_DEFAULT = VARIETY_EDEFAULT.ordinal() << VARIETY_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDVariety Variety}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDVariety[] VARIETY_EFLAG_VALUES = XSDVariety.values();
+
+ /**
+ * The flags representing the value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariety()
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_EFLAG = 0x3 << VARIETY_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Variety attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_ESETFLAG = 1 << 10;
+
+ /**
+ * The cached value of the '{@link #getFinal() <em>Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFinal()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSimpleFinal> final_;
+
+ /**
+ * The cached value of the '{@link #getLexicalFinal() <em>Lexical Final</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalFinal()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSimpleFinal> lexicalFinal;
+
+ /**
+ * The cached value of the '{@link #getValidFacets() <em>Valid Facets</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValidFacets()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> validFacets;
+
+ /**
+ * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContents()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSimpleTypeDefinition> contents;
+
+ /**
+ * The cached value of the '{@link #getFacetContents() <em>Facet Contents</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFacetContents()
+ * @generated NOT
+ * @ordered
+ */
+ protected EcoreEList<XSDConstrainingFacet> facetContents = null;
+
+ /**
+ * The cached value of the '{@link #getFacets() <em>Facets</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFacets()
+ * @generated NOT
+ * @ordered
+ */
+ protected EcoreEList<XSDConstrainingFacet> facets = null;
+
+ /**
+ * The cached value of the '{@link #getMemberTypeDefinitions() <em>Member Type Definitions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMemberTypeDefinitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDSimpleTypeDefinition> memberTypeDefinitions;
+
+ /**
+ * The cached value of the '{@link #getFundamentalFacets() <em>Fundamental Facets</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFundamentalFacets()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDFundamentalFacet> fundamentalFacets;
+
+ /**
+ * The cached value of the '{@link #getBaseTypeDefinition() <em>Base Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBaseTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDSimpleTypeDefinition baseTypeDefinition;
+
+ /**
+ * The cached value of the '{@link #getPrimitiveTypeDefinition() <em>Primitive Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrimitiveTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDSimpleTypeDefinition primitiveTypeDefinition;
+
+ /**
+ * The cached value of the '{@link #getItemTypeDefinition() <em>Item Type Definition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getItemTypeDefinition()
+ * @generated
+ * @ordered
+ */
+ protected XSDSimpleTypeDefinition itemTypeDefinition;
+
+ /**
+ * The cached value of the '{@link #getSyntheticFacets() <em>Synthetic Facets</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSyntheticFacets()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDFacet> syntheticFacets;
+
+ public static XSDSimpleTypeDefinition createSimpleTypeDefinition(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ case XSDConstants.SIMPLECONTENT_ELEMENT:
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ xsdSimpleTypeDefinition.setElement((Element)node);
+ return xsdSimpleTypeDefinition;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDSimpleTypeDefinitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDVariety getVariety()
+ {
+ return VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVariety(XSDVariety newVariety)
+ {
+ XSDVariety oldVariety = VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET];
+ if (newVariety == null) newVariety = VARIETY_EDEFAULT;
+ eFlags = eFlags & ~VARIETY_EFLAG | newVariety.ordinal() << VARIETY_EFLAG_OFFSET;
+ boolean oldVarietyESet = (eFlags & VARIETY_ESETFLAG) != 0;
+ eFlags |= VARIETY_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VARIETY, oldVariety, newVariety, !oldVarietyESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetVariety()
+ {
+ XSDVariety oldVariety = VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET];
+ boolean oldVarietyESet = (eFlags & VARIETY_ESETFLAG) != 0;
+ eFlags = eFlags & ~VARIETY_EFLAG | VARIETY_EFLAG_DEFAULT;
+ eFlags &= ~VARIETY_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VARIETY, oldVariety, VARIETY_EDEFAULT, oldVarietyESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetVariety()
+ {
+ return (eFlags & VARIETY_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSimpleFinal> getFinal()
+ {
+ if (final_ == null)
+ {
+ final_ = new EDataTypeUniqueEList<XSDSimpleFinal>(XSDSimpleFinal.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FINAL);
+ }
+ return final_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSimpleFinal> getLexicalFinal()
+ {
+ if (lexicalFinal == null)
+ {
+ lexicalFinal = new EDataTypeUniqueEList.Unsettable<XSDSimpleFinal>(XSDSimpleFinal.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL);
+ }
+ return lexicalFinal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetLexicalFinal()
+ {
+ if (lexicalFinal != null) ((InternalEList.Unsettable<?>)lexicalFinal).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetLexicalFinal()
+ {
+ return lexicalFinal != null && ((InternalEList.Unsettable<?>)lexicalFinal).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getValidFacets()
+ {
+ if (validFacets == null)
+ {
+ validFacets = new EDataTypeUniqueEList<String>(String.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS);
+ }
+ return validFacets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSimpleTypeDefinition> getContents()
+ {
+ if (contents == null)
+ {
+ contents = new EObjectContainmentEList<XSDSimpleTypeDefinition>(XSDSimpleTypeDefinition.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS);
+ }
+ return contents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDConstrainingFacet> getFacetContents()
+ {
+ if (facetContents == null)
+ {
+ facetContents = new EObjectContainmentEList<XSDConstrainingFacet>(XSDConstrainingFacet.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS);
+ }
+ return facetContents;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDConstrainingFacet> getFacets()
+ {
+ if (facets == null)
+ {
+ facets = new EObjectEList<XSDConstrainingFacet>(XSDConstrainingFacet.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACETS);
+ }
+ return facets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDSimpleTypeDefinition> getMemberTypeDefinitions()
+ {
+ if (memberTypeDefinitions == null)
+ {
+ memberTypeDefinitions = new EObjectEList<XSDSimpleTypeDefinition>(XSDSimpleTypeDefinition.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS);
+ }
+ return memberTypeDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDFundamentalFacet> getFundamentalFacets()
+ {
+ if (fundamentalFacets == null)
+ {
+ fundamentalFacets = new EObjectContainmentEList<XSDFundamentalFacet>(XSDFundamentalFacet.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS);
+ }
+ return fundamentalFacets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleTypeDefinition getBaseTypeDefinition()
+ {
+ return baseTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBaseTypeDefinition(XSDSimpleTypeDefinition newBaseTypeDefinition)
+ {
+ XSDSimpleTypeDefinition oldBaseTypeDefinition = baseTypeDefinition;
+ baseTypeDefinition = newBaseTypeDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION, oldBaseTypeDefinition, baseTypeDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleTypeDefinition getPrimitiveTypeDefinition()
+ {
+ return primitiveTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrimitiveTypeDefinition(XSDSimpleTypeDefinition newPrimitiveTypeDefinition)
+ {
+ XSDSimpleTypeDefinition oldPrimitiveTypeDefinition = primitiveTypeDefinition;
+ primitiveTypeDefinition = newPrimitiveTypeDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION, oldPrimitiveTypeDefinition, primitiveTypeDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSimpleTypeDefinition getItemTypeDefinition()
+ {
+ return itemTypeDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setItemTypeDefinition(XSDSimpleTypeDefinition newItemTypeDefinition)
+ {
+ XSDSimpleTypeDefinition oldItemTypeDefinition = itemTypeDefinition;
+ itemTypeDefinition = newItemTypeDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION, oldItemTypeDefinition, itemTypeDefinition));
+ }
+
+ @Override
+ public Element createElement()
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ getContainer() instanceof XSDComplexTypeDefinition ?
+ (XSDComplexTypeDefinition)getContainer() :
+ null;
+
+ Element newElement =
+ createElement
+ (xsdComplexTypeDefinition != null ?
+ XSDConstants.SIMPLECONTENT_ELEMENT :
+ XSDConstants.SIMPLETYPE_ELEMENT);
+ setElement(newElement);
+
+ Element childElement = createChildElement();
+ newElement.appendChild(childElement);
+ return newElement;
+ }
+
+ protected Element createChildElement()
+ {
+ return createElement(getRequiredChildElementNodeType());
+ }
+
+ protected int getRequiredChildElementNodeType()
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ getContainer() instanceof XSDComplexTypeDefinition ?
+ (XSDComplexTypeDefinition)getContainer() :
+ null;
+
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (getItemTypeDefinition() != null && (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)))
+ {
+ return XSDConstants.LIST_ELEMENT;
+ }
+ else if (!getMemberTypeDefinitions().isEmpty() && (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)))
+ {
+ return XSDConstants.UNION_ELEMENT;
+ }
+ else
+ {
+ return
+ xsdComplexTypeDefinition == null || XSDDerivationMethod.EXTENSION_LITERAL != xsdComplexTypeDefinition.getDerivationMethod() ?
+ XSDConstants.RESTRICTION_ELEMENT :
+ XSDConstants.EXTENSION_ELEMENT;
+ }
+ }
+
+ @Override
+ protected void patch()
+ {
+ super.patch();
+
+ if (!(getContainer() instanceof XSDComplexTypeDefinition))
+ {
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theBaseTypeDefinition != null && (forceResolve || theBaseTypeDefinition.getContainer() == null))
+ {
+ theBaseTypeDefinition = resolveSimpleTypeDefinition(theBaseTypeDefinition.getTargetNamespace(), theBaseTypeDefinition.getName());
+ }
+ theBaseTypeDefinition = handleNewBaseTypeDefinition(theBaseTypeDefinition);
+ if (theBaseTypeDefinition == null || !theBaseTypeDefinition.isSetVariety() || theBaseTypeDefinition.getVariety() != getVariety())
+ {
+ XSDSimpleTypeDefinition theItemTypeDefinition = getItemTypeDefinition();
+ if (theItemTypeDefinition != null)
+ {
+ if (forceResolve || theItemTypeDefinition.getContainer() == null)
+ {
+ XSDSimpleTypeDefinition newItemTypeDefinition =
+ resolveSimpleTypeDefinition(theItemTypeDefinition.getTargetNamespace(), theItemTypeDefinition.getName());
+ if ((forceResolve || newItemTypeDefinition.getContainer() != null) && newItemTypeDefinition != theItemTypeDefinition)
+ {
+ setItemTypeDefinition(newItemTypeDefinition);
+ }
+ }
+ }
+ else
+ {
+ for (ListIterator<XSDSimpleTypeDefinition> theMemberTypeDefinitions = getMemberTypeDefinitions().listIterator();
+ theMemberTypeDefinitions.hasNext(); )
+ {
+ XSDSimpleTypeDefinition theMemberTypeDefinition = theMemberTypeDefinitions.next();
+ if (forceResolve || theMemberTypeDefinition.getContainer() == null)
+ {
+ XSDSimpleTypeDefinition newMemberTypeDefinition =
+ resolveSimpleTypeDefinition(theMemberTypeDefinition.getTargetNamespace(), theMemberTypeDefinition.getName());
+ if ((forceResolve || newMemberTypeDefinition.getContainer() != null) && newMemberTypeDefinition != theMemberTypeDefinition)
+ {
+ if (memberTypeDefinitions.contains(newMemberTypeDefinition))
+ {
+ theMemberTypeDefinitions.remove();
+ }
+ else
+ {
+ theMemberTypeDefinitions.set(newMemberTypeDefinition);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ List<XSDSimpleFinal> newFinal = new ArrayList<XSDSimpleFinal>();
+ if (!isSetLexicalFinal())
+ {
+ for (XSDProhibitedSubstitutions value : xsdSchema.getFinalDefault())
+ {
+ switch (value.getValue())
+ {
+ case XSDProhibitedSubstitutions.ALL:
+ {
+ newFinal.add(XSDSimpleFinal.RESTRICTION_LITERAL);
+ newFinal.add(XSDSimpleFinal.LIST_LITERAL);
+ newFinal.add(XSDSimpleFinal.UNION_LITERAL);
+ break;
+ }
+ case XSDProhibitedSubstitutions.RESTRICTION:
+ {
+ newFinal.add(XSDSimpleFinal.RESTRICTION_LITERAL);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (XSDSimpleFinal value : getLexicalFinal())
+ {
+ switch (value.getValue())
+ {
+ case XSDSimpleFinal.ALL:
+ {
+ newFinal.add(XSDSimpleFinal.RESTRICTION_LITERAL);
+ newFinal.add(XSDSimpleFinal.LIST_LITERAL);
+ newFinal.add(XSDSimpleFinal.UNION_LITERAL);
+ break;
+ }
+ default:
+ {
+ newFinal.add(value);
+ break;
+ }
+ }
+ }
+ }
+
+ Collection<XSDSimpleFinal> oldFinal = new ArrayList<XSDSimpleFinal>(getFinal());
+ oldFinal.removeAll(newFinal);
+ if (!oldFinal.isEmpty())
+ {
+ getFinal().removeAll(oldFinal);
+ }
+ setListContentAndOrder(getFinal(), newFinal);
+ }
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ analysisState = UNANALYZED;
+ super.traverseToRootForAnalysis();
+ }
+
+ protected XSDWhiteSpaceFacet effectiveWhiteSpaceFacet;
+ @Override
+ protected void handleAnalysis()
+ {
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+
+ XSDConcreteComponent container = getContainer();
+ if (container instanceof XSDComplexTypeDefinition)
+ {
+ if (!getContents().contains(theBaseTypeDefinition))
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinitionImpl)container;
+ XSDTypeDefinition complexBaseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
+ if (complexBaseTypeDefinition != null)
+ {
+ ((XSDConcreteComponentImpl)complexBaseTypeDefinition).analyze();
+ theBaseTypeDefinition = handleNewBaseTypeDefinition(complexBaseTypeDefinition.getSimpleType());
+ }
+ }
+ }
+
+ if (getFundamentalFacets().isEmpty())
+ {
+ createFundamentalFacets();
+ }
+
+ List<XSDConstrainingFacet> newFacets = null;
+ boolean newBounded = false;
+ XSDCardinality newCardinality = XSDCardinality.FINITE_LITERAL;
+ boolean newNumeric = false;
+ XSDOrdered newOrdered = XSDOrdered.FALSE_LITERAL;
+ XSDSimpleTypeDefinition newPrimitiveTypeDefinition = null;
+ XSDVariety newVariety = null;
+ EList<String> newValidFacets = null;
+
+ if (theBaseTypeDefinition != null && theBaseTypeDefinition.getContainer() != null)
+ {
+ if (!((XSDConcreteComponentImpl)theBaseTypeDefinition).analyze() && !XSDConstants.isURType(theBaseTypeDefinition) && theBaseTypeDefinition.isCircular())
+ {
+ analysisState = CIRCULAR;
+ }
+ if (theBaseTypeDefinition != this)
+ {
+ if (!XSDConstants.isURType(this))
+ {
+ newVariety = XSDVariety.ATOMIC_LITERAL;
+ newPrimitiveTypeDefinition = this;
+ }
+
+ if (!XSDConstants.isURType(theBaseTypeDefinition))
+ {
+ newVariety = theBaseTypeDefinition.getVariety();
+ newPrimitiveTypeDefinition = theBaseTypeDefinition.getPrimitiveTypeDefinition();
+ newBounded = theBaseTypeDefinition.getBoundedFacet().isValue();
+ newCardinality = theBaseTypeDefinition.getCardinalityFacet().getValue();
+ newNumeric = theBaseTypeDefinition.getNumericFacet().isValue();
+ newOrdered = theBaseTypeDefinition.getOrderedFacet().getValue();
+ newValidFacets = theBaseTypeDefinition.getValidFacets();
+
+ if (XSDVariety.LIST_LITERAL == theBaseTypeDefinition.getVariety())
+ {
+ XSDSimpleTypeDefinition newItemTypeDefinition = theBaseTypeDefinition.getItemTypeDefinition();
+ if (newItemTypeDefinition != getItemTypeDefinition())
+ {
+ setItemTypeDefinition(newItemTypeDefinition);
+ }
+ }
+ else if (XSDVariety.UNION_LITERAL == theBaseTypeDefinition.getVariety())
+ {
+ List<XSDSimpleTypeDefinition> newMemberTypeDefinitions = theBaseTypeDefinition.getMemberTypeDefinitions();
+ List<XSDSimpleTypeDefinition> remainingMemberTypeDefinitions = new ArrayList<XSDSimpleTypeDefinition>(getMemberTypeDefinitions());
+ remainingMemberTypeDefinitions.removeAll(newMemberTypeDefinitions);
+ if (!remainingMemberTypeDefinitions.isEmpty())
+ {
+ getMemberTypeDefinitions().removeAll(remainingMemberTypeDefinitions);
+ }
+ if (!newMemberTypeDefinitions.isEmpty())
+ {
+ setListContentAndOrder(getMemberTypeDefinitions(), newMemberTypeDefinitions);
+ }
+ }
+ }
+ else
+ {
+ newFacets = new ArrayList<XSDConstrainingFacet>(getFacetContents());
+ }
+ }
+ else
+ {
+ newFacets = new ArrayList<XSDConstrainingFacet>(getFacetContents());
+ }
+ }
+ else
+ {
+ newFacets = new ArrayList<XSDConstrainingFacet>(getFacetContents());
+ }
+
+ if (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition))
+ {
+ XSDSimpleTypeDefinition theItemTypeDefinition = getItemTypeDefinition();
+ if (theItemTypeDefinition != null && theItemTypeDefinition.getContainer() != null)
+ {
+ newVariety = XSDVariety.LIST_LITERAL;
+ newPrimitiveTypeDefinition = null;
+ if (!((XSDConcreteComponentImpl)theItemTypeDefinition).analyze() && !XSDConstants.isURType(theItemTypeDefinition) && theItemTypeDefinition.isCircular())
+ {
+ analysisState = CIRCULAR;
+ }
+ newValidFacets = getValidFacetsForList();
+ if (effectiveWhiteSpaceFacet == null)
+ {
+ effectiveWhiteSpaceFacet = getXSDFactory().createXSDWhiteSpaceFacet();
+ effectiveWhiteSpaceFacet.setLexicalValue("collapse");
+ effectiveWhiteSpaceFacet.setFixed(true);
+ getSyntheticFacets().add(effectiveWhiteSpaceFacet);
+ }
+ if (newFacets != null)
+ {
+ newFacets.add(effectiveWhiteSpaceFacet);
+ }
+ }
+ else if (!getMemberTypeDefinitions().isEmpty())
+ {
+ newVariety = XSDVariety.UNION_LITERAL;
+ newPrimitiveTypeDefinition = null;
+ newNumeric = true;
+ for (XSDSimpleTypeDefinition theMemberTypeDefinition : getMemberTypeDefinitions())
+ {
+ if (theMemberTypeDefinition.getContainer() != null)
+ {
+ if (!((XSDConcreteComponentImpl)theMemberTypeDefinition).analyze() && !XSDConstants.isURType(theMemberTypeDefinition) && theMemberTypeDefinition.isCircular())
+ {
+ analysisState = CIRCULAR;
+ }
+ if (!theMemberTypeDefinition.getNumericFacet().isValue())
+ {
+ newNumeric = false;
+ }
+ }
+ }
+
+ XSDTypeDefinition lowestCommonAncestor = getLowestCommonAncestor(getMemberTypeDefinitions());
+ if (lowestCommonAncestor instanceof XSDSimpleTypeDefinition && lowestCommonAncestor.getContainer() != null)
+ {
+ newOrdered = ((XSDSimpleTypeDefinition)lowestCommonAncestor).getOrderedFacet().getValue();
+ }
+ newValidFacets = getValidFacetsForUnion();
+ }
+ else if (getElement() != null)
+ {
+ LOOP:
+ for (Node child = getElement().getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.UNION_ELEMENT:
+ {
+ newVariety = XSDVariety.UNION_LITERAL;
+ newPrimitiveTypeDefinition = null;
+ newValidFacets = getValidFacetsForUnion();
+ break LOOP;
+ }
+ case XSDConstants.LIST_ELEMENT:
+ {
+ newVariety = XSDVariety.LIST_LITERAL;
+ newPrimitiveTypeDefinition = null;
+ newValidFacets = getValidFacetsForList();
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+
+ if (newVariety != null)
+ {
+ if (!isSetVariety() || newVariety != getVariety())
+ {
+ setVariety(newVariety);
+ }
+ }
+ else if (isSetVariety())
+ {
+ unsetVariety();
+ }
+
+ if (newPrimitiveTypeDefinition != getPrimitiveTypeDefinition())
+ {
+ setPrimitiveTypeDefinition(newPrimitiveTypeDefinition);
+ }
+
+ // This ensures the the facets are analyzed when the containing type is relatively well-analyzed.
+ //
+ super.handleAnalysis();
+
+ if (newFacets == null)
+ {
+ newFacets = mergeFacets();
+ }
+
+ XSDAnnotation theAnnotation = getAnnotation();
+ if (theAnnotation != null)
+ {
+ for (Element applicationInformationElement : theAnnotation.getApplicationInformation())
+ {
+ for (Node child = applicationInformationElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.hfpNodeType(child))
+ {
+ case XSDConstants.HFP_HASFACET_ELEMENT:
+ {
+ Element childElement = (Element)child;
+ String facetName = childElement.getAttributeNS(null, XSDConstants.HFP_NAME_ATTRIBUTE);
+ if (newValidFacets == null)
+ {
+ newValidFacets = new BasicEList<String>();
+ }
+ newValidFacets.add(facetName);
+ break;
+ }
+ case XSDConstants.HFP_HASPROPERTY_ELEMENT:
+ {
+ Element childElement = (Element)child;
+ String propertyName = childElement.getAttributeNS(null, XSDConstants.HFP_NAME_ATTRIBUTE);
+ String propertyValue = childElement.getAttributeNS(null, XSDConstants.HFP_VALUE_ATTRIBUTE);
+ if ("bounded".equals(propertyName))
+ {
+ newBounded = "true".equals(propertyValue);
+ }
+ else if ("cardinality".equals(propertyName))
+ {
+ newCardinality =
+ "countably infinite".equals(propertyValue) ?
+ XSDCardinality.COUNTABLY_INFINITE_LITERAL :
+ XSDCardinality.get(propertyValue);
+ }
+ else if ("numeric".equals(propertyName))
+ {
+ newNumeric = "true".equals(propertyValue);
+ }
+ else if ("ordered".equals(propertyName))
+ {
+ newOrdered = XSDOrdered.get(propertyValue);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+
+
+ if (!XSDConstants.isURType(this))
+ {
+ if (newBounded != getBoundedFacet().isValue() /* || !getBoundedFacet().isSetValue()*/)
+ {
+ getBoundedFacet().setValue(newBounded);
+ }
+ if (newCardinality != getCardinalityFacet().getValue() /* || !getCardinalityFacet().isSetValue()*/)
+ {
+ getCardinalityFacet().setValue(newCardinality);
+ }
+ if (newNumeric != getNumericFacet().isValue() /* || !getNumericFacet().isSetValue()*/)
+ {
+ getNumericFacet().setValue(newNumeric);
+ }
+ if (newOrdered == null)
+ {
+ newOrdered = XSDOrdered.FALSE_LITERAL;
+ }
+ if (newOrdered != getOrderedFacet().getValue() /* || !getOrderedFacet().isSetValue()*/)
+ {
+ getOrderedFacet().setValue(newOrdered);
+ }
+ }
+
+ if (newFacets == null)
+ {
+ if (!getFacets().isEmpty())
+ {
+ getFacets().clear();
+ }
+ }
+ else
+ {
+ List<XSDFacet> remainingFacets = new ArrayList<XSDFacet>(getFacets());
+ remainingFacets.removeAll(newFacets);
+ getFacets().removeAll(remainingFacets);
+ if (!newFacets.isEmpty())
+ {
+ setListContentAndOrder(getFacets(), newFacets);
+ }
+ }
+
+ if (newValidFacets == null)
+ {
+ if (!getValidFacets().isEmpty())
+ {
+ getValidFacets().clear();
+ }
+ }
+ else
+ {
+ List<String> remainingValidFacets = new ArrayList<String>(getValidFacets());
+ remainingValidFacets.removeAll(newValidFacets);
+ getValidFacets().removeAll(remainingValidFacets);
+ if (!newValidFacets.isEmpty())
+ {
+ setListContentAndOrder(getValidFacets(), newValidFacets);
+ }
+ }
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ Element theElement = getElement();
+ Element theRestrictionElement = null;
+ if (theElement != null)
+ {
+ String anchor;
+ if (getContainer() instanceof XSDComplexTypeDefinition)
+ {
+ checkAttributes
+ (XSDConstants.PART2,
+ anchor = "element-simpleContent",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE
+ });
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("simpleContent").getTypeDefinition();
+
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART2, "element-simpleContent", theElement);
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ Element childElement = (Element)child;
+ theRestrictionElement = childElement;
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-simpleContent::restriction",
+ childElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.BASE_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-simpleContent::restriction",
+ childElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkComplexContent("simpleRestrictionType", XSDConstants.PART2, "element-simpleContent::restriction", childElement);
+
+ // This is allowed https://bugs.eclipse.org/bugs/show_bug.cgi?id=177035
+ //
+ // if (childElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE) && !getContents().isEmpty())
+ // {
+ // createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-restriction-base-or-simpleType");
+ // }
+
+ break;
+ }
+ case XSDConstants.EXTENSION_ELEMENT:
+ {
+ Element childElement = (Element)child;
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-simpleContent::extension",
+ childElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.BASE_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-simpleContent::extension",
+ childElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkComplexContent("simpleExtensionType", XSDConstants.PART2, "element-simpleContent::extension", childElement);
+
+ if (childElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE) && !getContents().isEmpty())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-restriction-base-or-simpleType");
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (getContainer() instanceof XSDFeature || getContainer() instanceof XSDSimpleTypeDefinition)
+ {
+ checkAttributes
+ (XSDConstants.PART2,
+ anchor = "element-simpleType",
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ });
+ }
+ else
+ {
+ checkAttributes
+ (XSDConstants.PART2,
+ anchor = "element-simpleType",
+ theElement,
+ new String []
+ {
+ XSDConstants.FINAL_ATTRIBUTE,
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAME_ATTRIBUTE
+ });
+
+ // EATM this is an error in the spec, I believe.
+ //
+ if (theElement.hasAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE))
+ {
+ String value = theElement.getAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE);
+ for (StringTokenizer values = new StringTokenizer(value, " "); values.hasMoreTokens(); )
+ {
+ String token = values.nextToken();
+
+ checkBuiltInTypeConstraint
+ ("simpleDerivationSet",
+ token,
+ XSDConstants.PART2,
+ anchor,
+ theElement,
+ XSDConstants.FINAL_ATTRIBUTE,
+ false);
+ }
+ }
+ }
+
+ checkComplexContent("simpleType", XSDConstants.PART2, "element-simpleType", theElement);
+
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ Element childElement = (Element)child;
+ theRestrictionElement = childElement;
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-restriction",
+ childElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.BASE_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-restriction",
+ childElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("restriction").getTypeDefinition();
+
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART2, "element-restriction", childElement);
+
+ if (childElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE))
+ {
+ if (!getContents().isEmpty())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-restriction-base-or-simpleType");
+ }
+ }
+ else if (getContents().isEmpty())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-restriction-base-or-simpleType.0");
+ }
+
+ break;
+ }
+ case XSDConstants.UNION_ELEMENT:
+ {
+ Element childElement = (Element)child;
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-union",
+ childElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MEMBERTYPES_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-union",
+ childElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("union").getTypeDefinition();
+
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART2, "element-union", childElement);
+
+ if (getMemberTypeDefinitions().isEmpty())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-union-memberTypes-or-simpleTypes");
+ }
+
+ break;
+ }
+ case XSDConstants.LIST_ELEMENT:
+ {
+ Element childElement = (Element)child;
+
+ checkAttributes
+ (XSDConstants.PART2,
+ "element-list",
+ childElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.ITEMTYPE_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ "element-list",
+ childElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ XSDComplexTypeDefinition xsdComplexTypeDefinition =
+ (XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration("list").getTypeDefinition();
+
+ checkComplexContent(xsdComplexTypeDefinition, XSDConstants.PART2, "element-list", childElement);
+
+ if (childElement.hasAttributeNS(null, XSDConstants.ITEMTYPE_ATTRIBUTE))
+ {
+ if (!getContents().isEmpty())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-list-itemType-or-simpleType");
+ }
+ }
+ else
+ {
+ if (getContents().isEmpty())
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "src-list-itemType-or-simpleType.0");
+ }
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART2,
+ anchor,
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+ }
+
+ if (!(getContainer() instanceof XSDFeature) && !(getContainer() instanceof XSDTypeDefinition))
+ {
+ checkBuiltInTypeConstraint
+ ("NCName",
+ getName(),
+ XSDConstants.PART2,
+ "element-simpleType",
+ theElement,
+ XSDConstants.NAME_ATTRIBUTE,
+ true);
+ }
+
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theBaseTypeDefinition == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", "");
+ }
+ else if (theBaseTypeDefinition.getContainer() == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", theBaseTypeDefinition.getURI());
+ }
+ else if (isSetVariety())
+ {
+ switch (getVariety().getValue())
+ {
+ case XSDVariety.ATOMIC:
+ {
+ if (theBaseTypeDefinition.getFinal().contains(XSDSimpleFinal.RESTRICTION_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-restricts.1.2", theBaseTypeDefinition.getURI());
+ }
+ if (isCircular())
+ {
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "st-props-correct.2",
+ getElement(),
+ XSDConstants.BASE_ATTRIBUTE,
+ new Object [] {});
+ }
+ if (!XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()) &&
+ XSDConstants.isAnySimpleType(theBaseTypeDefinition) &&
+ (theElement == null ||
+ theRestrictionElement != null && theRestrictionElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE)))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-retricts.0.0", theBaseTypeDefinition.getURI());
+ }
+ break;
+ }
+ case XSDVariety.LIST:
+ {
+ if (!XSDConstants.isURType(theBaseTypeDefinition))
+ {
+ if (theBaseTypeDefinition.getFinal().contains(XSDSimpleFinal.RESTRICTION_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-restricts.1.2", theBaseTypeDefinition.getURI());
+ }
+ }
+ else
+ {
+ XSDSimpleTypeDefinition theItemTypeDefinition = getItemTypeDefinition();
+ if (theItemTypeDefinition == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", "");
+ }
+ else if (theItemTypeDefinition.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", theItemTypeDefinition.getURI());
+ }
+ else if (XSDVariety.ATOMIC_LITERAL != theItemTypeDefinition.getVariety() &&
+ XSDVariety.UNION_LITERAL != theItemTypeDefinition.getVariety())
+ {
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "cos-list-of-atomic",
+ getElement(),
+ XSDConstants.ITEMTYPE_ATTRIBUTE,
+ new Object [] {});
+ }
+ else if (theItemTypeDefinition.getFinal().contains(XSDSimpleFinal.LIST_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-restricts.2.0", theBaseTypeDefinition.getURI());
+ }
+ else if (!XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()) &&
+ XSDConstants.isAnySimpleType(theItemTypeDefinition))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-retricts.0.1", theItemTypeDefinition.getURI());
+ }
+ }
+ if (isCircular())
+ {
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "st-props-correct.2",
+ getElement(),
+ XSDConstants.ITEMTYPE_ATTRIBUTE,
+ new Object [] {});
+ }
+ break;
+ }
+ case XSDVariety.UNION:
+ {
+ if (!XSDConstants.isURType(theBaseTypeDefinition))
+ {
+ if (theBaseTypeDefinition.getFinal().contains(XSDSimpleFinal.RESTRICTION_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-restricts.1.2", theBaseTypeDefinition.getURI());
+ }
+ }
+ else
+ {
+ for (XSDSimpleTypeDefinition theMemberTypeDefinition : getMemberTypeDefinitions())
+ {
+ if (theMemberTypeDefinition == null)
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", "");
+ }
+ else if (theMemberTypeDefinition.getContainer() == null)
+ {
+ createDiagnostic
+ (XSDDiagnosticSeverity.ERROR_LITERAL, "_UI_UnresolvedTypeDefinition_message", theMemberTypeDefinition.getURI());
+ }
+ else if (theMemberTypeDefinition.getFinal().contains(XSDSimpleFinal.UNION_LITERAL))
+ {
+ createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-restricts.3.0", theBaseTypeDefinition.getURI());
+ }
+ // Apparently this is allowed now.
+ // else if (!XSDConstants.isSchemaForSchemaNamespace(getTargetNamespace()) &&
+ // XSDConstants.isAnySimpleType(theMemberTypeDefinition))
+ // {
+ // createDiagnostic(XSDDiagnosticSeverity.ERROR_LITERAL, "cos-st-retricts.0.2", theMemberTypeDefinition.getURI());
+ // }
+ }
+ }
+ if (isCircular())
+ {
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "cos-no-circular-unions",
+ getElement(),
+ XSDConstants.MEMBERTYPES_ATTRIBUTE,
+ new Object [] {});
+ }
+ break;
+ }
+ }
+ }
+ else if (isCircular())
+ {
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "st-props-correct.2",
+ getElement(),
+ XSDConstants.BASE_ATTRIBUTE,
+ new Object [] {});
+ }
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ switch (XSDConstants.nodeType(changedElement))
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ if (!(getContainer() instanceof XSDComplexTypeDefinition))
+ {
+ XSDSimpleTypeDefinition newBaseTypeDefinition = null;
+ if (changedElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE))
+ {
+ newBaseTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.BASE_ATTRIBUTE));
+ }
+ else if (getContents().contains(getBaseTypeDefinition()))
+ {
+ newBaseTypeDefinition = getBaseTypeDefinition();
+ }
+
+ handleNewBaseTypeDefinition(newBaseTypeDefinition);
+ }
+ else
+ {
+ XSDTypeDefinition newBaseTypeDefinition = null;
+ if (changedElement.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE))
+ {
+ newBaseTypeDefinition =
+ resolveTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.BASE_ATTRIBUTE));
+ }
+ else if (getContents().contains(getBaseTypeDefinition()))
+ {
+ newBaseTypeDefinition = getBaseTypeDefinition();
+ }
+
+ handleNewComplexBaseTypeDefinition(newBaseTypeDefinition);
+ }
+
+ break;
+ }
+ case XSDConstants.LIST_ELEMENT:
+ {
+ XSDSimpleTypeDefinition newItemTypeDefinition = getItemTypeDefinition();
+ if (changedElement.hasAttributeNS(null, XSDConstants.ITEMTYPE_ATTRIBUTE))
+ {
+ newItemTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(changedElement, XSDConstants.ITEMTYPE_ATTRIBUTE));
+ }
+ else if (!getContents().contains(newItemTypeDefinition))
+ {
+ newItemTypeDefinition = resolveSimpleTypeDefinition(null, "undefined");
+ }
+
+ if (newItemTypeDefinition != getItemTypeDefinition())
+ {
+ setItemTypeDefinition(newItemTypeDefinition);
+ }
+
+ handleNewBaseTypeDefinition(null);
+ break;
+ }
+ case XSDConstants.UNION_ELEMENT:
+ {
+ List<XSDSimpleTypeDefinition> newMemberTypeDefinitions = new ArrayList<XSDSimpleTypeDefinition>();
+ if (changedElement.hasAttributeNS(null, XSDConstants.MEMBERTYPES_ATTRIBUTE))
+ {
+ String memberTypes = changedElement.getAttributeNS(null, XSDConstants.MEMBERTYPES_ATTRIBUTE);
+ if (memberTypes != null)
+ {
+ for (StringTokenizer tokens = new StringTokenizer(memberTypes, " "); tokens.hasMoreTokens(); )
+ {
+ String memberTypeQName = tokens.nextToken();
+ XSDSimpleTypeDefinition newMemberTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQName(changedElement, memberTypeQName));
+ newMemberTypeDefinitions.add(newMemberTypeDefinition);
+ }
+ }
+ }
+
+ newMemberTypeDefinitions.addAll(getContents());
+
+ List<XSDSimpleTypeDefinition> remainingMemberTypeDefinitions = new ArrayList<XSDSimpleTypeDefinition>(getMemberTypeDefinitions());
+ remainingMemberTypeDefinitions.removeAll(newMemberTypeDefinitions);
+ getMemberTypeDefinitions().removeAll(remainingMemberTypeDefinitions);
+ if (!newMemberTypeDefinitions.isEmpty())
+ {
+ setListContentAndOrder(getMemberTypeDefinitions(), newMemberTypeDefinitions);
+ }
+
+ handleNewBaseTypeDefinition(null);
+ break;
+ }
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ case XSDConstants.SIMPLECONTENT_ELEMENT:
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE))
+ {
+ setStringLexicalFinal(changedElement.getAttributeNS(null, XSDConstants.FINAL_ATTRIBUTE));
+ }
+ else if (isSetLexicalFinal())
+ {
+ unsetLexicalFinal();
+ }
+
+ for (Node child = changedElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (child.getNodeType() == Node.ELEMENT_NODE)
+ {
+ reconcileAttributes((Element)child);
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ protected void handleNewComplexBaseTypeDefinition(XSDTypeDefinition newComplexBaseTypeDefinition)
+ {
+ if (getContainer() instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinitionImpl xsdComplexTypeDefinition = (XSDComplexTypeDefinitionImpl)getContainer();
+ boolean oldIsReconciling = xsdComplexTypeDefinition.isReconciling;
+ xsdComplexTypeDefinition.isReconciling = isReconciling;
+ xsdComplexTypeDefinition.handleNewBaseTypeDefinition(newComplexBaseTypeDefinition);
+ xsdComplexTypeDefinition.isReconciling = oldIsReconciling;
+ }
+ }
+
+ protected XSDSimpleTypeDefinition handleNewBaseTypeDefinition(XSDSimpleTypeDefinition newBaseTypeDefinition)
+ {
+ if (newBaseTypeDefinition == null)
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema == null)
+ {
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ newBaseTypeDefinition =
+ XSDSchemaImpl.getSchemaForSchema(theElement.getNamespaceURI()).resolveSimpleTypeDefinition("anySimpleType");
+ }
+ else
+ {
+ newBaseTypeDefinition = this;
+ }
+ }
+ else
+ {
+ newBaseTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("anySimpleType");
+ }
+ }
+
+ if (eContainer instanceof XSDRedefine)
+ {
+ XSDSchema redefinedSchema = ((XSDRedefine)eContainer).getIncorporatedSchema();
+ if (redefinedSchema != null)
+ {
+ Map<XSDComponent, XSDComponent> redefinitionMap = ((XSDSchemaImpl)redefinedSchema).getRedefinitionMap();
+ if (redefinitionMap.containsKey(newBaseTypeDefinition))
+ {
+ XSDComponent replacement = redefinitionMap.get(this);
+ if (replacement != null)
+ {
+ newBaseTypeDefinition = (XSDSimpleTypeDefinition)replacement;
+ }
+ }
+ }
+ }
+
+ if (newBaseTypeDefinition != getBaseTypeDefinition())
+ {
+ setBaseTypeDefinition(newBaseTypeDefinition);
+ }
+
+ return newBaseTypeDefinition;
+ }
+
+ @Override
+ protected Node getAdoptionParentNode(EReference eReference)
+ {
+ if (eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS ||
+ eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS ||
+ eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION)
+ {
+ Element element = getElement();
+ if (element == null)
+ {
+ return null;
+ }
+ else
+ {
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ case XSDConstants.LIST_ELEMENT:
+ case XSDConstants.UNION_ELEMENT:
+ {
+ return child;
+ }
+ }
+ }
+ }
+ }
+
+ return super.getAdoptionParentNode(eReference);
+ }
+
+ @Override
+ protected Collection<Element> getContentNodes(Element changedElement)
+ {
+ Collection<Element> result = new ArrayList<Element>();
+ for (Node child = getElement().getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ result.add((Element)child);
+ break;
+ }
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ case XSDConstants.LIST_ELEMENT:
+ case XSDConstants.UNION_ELEMENT:
+ {
+ for (Node grandChild = child.getFirstChild(); grandChild != null; grandChild = grandChild.getNextSibling())
+ {
+ if (grandChild.getNodeType() == Node.ELEMENT_NODE)
+ {
+ result.add((Element)grandChild);
+ }
+ }
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.ANNOTATION_ELEMENT:
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ newContents.add(xsdAnnotation);
+ break;
+ }
+ case XSDConstants.SIMPLETYPE_ELEMENT:
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDSimpleTypeDefinitionImpl.createSimpleTypeDefinition(child);
+ if (xsdSimpleTypeDefinition != null)
+ {
+ newContents.add(xsdSimpleTypeDefinition);
+ }
+ break;
+ }
+ default:
+ {
+ XSDConstrainingFacet xsdConstrainingFacet = XSDConstrainingFacetImpl.createConstrainingFacet(child);
+ if (xsdConstrainingFacet != null)
+ {
+ newContents.add(xsdConstrainingFacet);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ if (!newContents.isEmpty() && newContents.get(0).getElement().getParentNode() == getElement())
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_TYPE_DEFINITION__ANNOTATION, newContents, remainingContents);
+ }
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION, newContents, remainingContents);
+
+ XSDSimpleTypeDefinition newBaseTypeDefinition = null;
+ XSDTypeDefinition newComplexBaseTypeDefinition = null;
+
+ boolean didContents = false;
+ Element theElement = getElement();
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.LIST_ELEMENT:
+ {
+ Element elementChild = (Element)child;
+ XSDSimpleTypeDefinition newTypeContent = null;
+ XSDSimpleTypeDefinition newItemTypeDefinition = null;
+ if (!newContents.isEmpty())
+ {
+ XSDConcreteComponent xsdConcreteComponent = newContents.get(0);
+ if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ newItemTypeDefinition = (XSDSimpleTypeDefinition)xsdConcreteComponent;
+ newTypeContent = newItemTypeDefinition;
+ newContents.remove(0);
+ }
+ }
+ if (elementChild.hasAttributeNS(null, XSDConstants.ITEMTYPE_ATTRIBUTE) && newItemTypeDefinition == null)
+ {
+ newItemTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute((Element)child, XSDConstants.ITEMTYPE_ATTRIBUTE));
+ }
+ if (newItemTypeDefinition == null)
+ {
+ newItemTypeDefinition = resolveSimpleTypeDefinition(null, "undefined");
+ }
+
+ getContents().removeAll(remainingContents);
+ if (newTypeContent != null)
+ {
+ getContents().add(newTypeContent);
+ }
+
+ if (newItemTypeDefinition != getItemTypeDefinition())
+ {
+ setItemTypeDefinition(newItemTypeDefinition);
+ }
+
+ didContents = true;
+ break LOOP;
+ }
+ case XSDConstants.UNION_ELEMENT:
+ {
+ Element elementChild = (Element)child;
+ List<XSDSimpleTypeDefinition> newMemberTypeDefinitions = new ArrayList<XSDSimpleTypeDefinition>();
+ if (elementChild.hasAttributeNS(null, XSDConstants.MEMBERTYPES_ATTRIBUTE))
+ {
+ String memberTypes = elementChild.getAttributeNS(null, XSDConstants.MEMBERTYPES_ATTRIBUTE);
+ if (memberTypes != null)
+ {
+ for (StringTokenizer tokens = new StringTokenizer(memberTypes, " "); tokens.hasMoreTokens(); )
+ {
+ String memberTypeQName = tokens.nextToken();
+ XSDSimpleTypeDefinition newMemberTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQName(elementChild, memberTypeQName));
+ newMemberTypeDefinitions.add(newMemberTypeDefinition);
+ }
+ }
+ }
+
+ List<XSDSimpleTypeDefinition> newTypeContents = new ArrayList<XSDSimpleTypeDefinition>();
+ for (ListIterator<XSDConcreteComponent> i = newContents.listIterator(); i.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = i.next();
+ if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdConcreteComponent;
+ newTypeContents.add(xsdSimpleTypeDefinition);
+ newMemberTypeDefinitions.add(xsdSimpleTypeDefinition);
+ i.remove();
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ getContents().removeAll(remainingContents);
+ if (!newTypeContents.isEmpty())
+ {
+ setListContentAndOrder(getContents(), newTypeContents);
+ }
+
+ List<XSDSimpleTypeDefinition> remainingMemberTypeDefinitions = new ArrayList<XSDSimpleTypeDefinition>(getMemberTypeDefinitions());
+ remainingMemberTypeDefinitions.removeAll(newMemberTypeDefinitions);
+ if (!remainingMemberTypeDefinitions.isEmpty())
+ {
+ getMemberTypeDefinitions().removeAll(remainingMemberTypeDefinitions);
+ }
+ if (!newMemberTypeDefinitions.isEmpty())
+ {
+ setListContentAndOrder(getMemberTypeDefinitions(), newMemberTypeDefinitions);
+ }
+
+ didContents = true;
+ break LOOP;
+ }
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ Element elementChild = (Element)child;
+ if (!newContents.isEmpty())
+ {
+ XSDConcreteComponent xsdConcreteComponent = newContents.get(0);
+ if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdConcreteComponent;
+ List<XSDSimpleTypeDefinition> theContents = getContents();
+ if (theContents.size() != 1 || theContents.get(0) != xsdConcreteComponent)
+ {
+ if (!theContents.isEmpty())
+ {
+ remainingContents.removeAll(theContents);
+ theContents.clear();
+ }
+ theContents.add(xsdSimpleTypeDefinition);
+ }
+ newBaseTypeDefinition = xsdSimpleTypeDefinition;
+ newContents.remove(0);
+ }
+ }
+
+ if (!(getContainer() instanceof XSDComplexTypeDefinition))
+ {
+ if (elementChild.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE) && newBaseTypeDefinition == null)
+ {
+ newBaseTypeDefinition =
+ resolveSimpleTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(elementChild, XSDConstants.BASE_ATTRIBUTE));
+ }
+ }
+ else
+ {
+ if (elementChild.hasAttributeNS(null, XSDConstants.BASE_ATTRIBUTE))
+ {
+ newComplexBaseTypeDefinition =
+ resolveTypeDefinitionURI(XSDConstants.lookupQNameForAttribute(elementChild, XSDConstants.BASE_ATTRIBUTE));
+ }
+ }
+
+ didContents = true;
+ break LOOP;
+ }
+ }
+ }
+
+ if (!didContents && !getContents().isEmpty())
+ {
+ getContents().clear();
+ }
+
+ if (!remainingContents.isEmpty())
+ {
+ getFacetContents().removeAll(remainingContents);
+ }
+
+ if (!newContents.isEmpty())
+ {
+ for (Iterator<?> i = newContents.iterator(); i.hasNext(); )
+ {
+ if (!(i.next() instanceof XSDFacet))
+ {
+ i.remove();
+ }
+ }
+ @SuppressWarnings("unchecked") List<XSDConstrainingFacet> list = (List<XSDConstrainingFacet>)(List<?>)newContents;
+ setListContentAndOrder(getFacetContents(), list);
+ }
+
+ handleNewBaseTypeDefinition(newBaseTypeDefinition);
+ handleNewComplexBaseTypeDefinition(newComplexBaseTypeDefinition);
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL)
+ {
+ if (theElement != null)
+ {
+ niceSetAttribute
+ (theElement,
+ XSDConstants.FINAL_ATTRIBUTE,
+ getStringLexicalFinal());
+ }
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__VARIETY)
+ {
+ if (theElement != null && eAttribute != null)
+ {
+ if (analysisState != ANALYZING)
+ {
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ int childNodeType = XSDConstants.nodeType(child);
+ switch (childNodeType)
+ {
+ case XSDConstants.RESTRICTION_ELEMENT:
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.UNION_ELEMENT:
+ case XSDConstants.LIST_ELEMENT:
+ {
+ if (childNodeType != getRequiredChildElementNodeType())
+ {
+ Element newElement = createChildElement();
+ forceReplace(newElement, (Element)child);
+ }
+ break LOOP;
+ }
+ }
+ }
+ traverseToRootForAnalysis();
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void changeReference(EReference eReference)
+ {
+ super.changeReference(eReference);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION)
+ {
+ if (!isReconciling && eReference != null)
+ {
+ traverseToRootForPatching();
+ }
+
+ if (!isReconciling && !(getContainer() instanceof XSDComplexTypeDefinition))
+ {
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ if (theBaseTypeDefinition != null && !getContents().contains(theBaseTypeDefinition))
+ {
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.EXTENSION_ELEMENT:
+ case XSDConstants.RESTRICTION_ELEMENT:
+ {
+ niceSetAttributeURIValue((Element)child, XSDConstants.BASE_ATTRIBUTE, theBaseTypeDefinition.getURI());
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION)
+ {
+ if (!isReconciling && eReference != null)
+ {
+ traverseToRootForPatching();
+ }
+
+ XSDSimpleTypeDefinition theItemTypeDefinition = getItemTypeDefinition();
+ if (!isReconciling && theItemTypeDefinition != null && !getContents().contains(theItemTypeDefinition))
+ {
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.LIST_ELEMENT:
+ {
+ niceSetAttributeURIValue((Element)child, XSDConstants.ITEMTYPE_ATTRIBUTE, theItemTypeDefinition.getURI());
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+ if (eReference == null || eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS)
+ {
+ if (!isReconciling && eReference != null)
+ {
+ traverseToRootForPatching();
+ }
+
+ if (!isReconciling)
+ {
+ LOOP:
+ for (Node child = theElement.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (XSDConstants.nodeType(child))
+ {
+ case XSDConstants.UNION_ELEMENT:
+ {
+ StringBuffer newMemberTypeDefinitions = null;
+ for (XSDSimpleTypeDefinition theMemberTypeDefinition : getMemberTypeDefinitions())
+ {
+ if (getContents().contains(theMemberTypeDefinition))
+ {
+ break;
+ }
+ if (newMemberTypeDefinitions == null)
+ {
+ newMemberTypeDefinitions = new StringBuffer();
+ }
+ else
+ {
+ newMemberTypeDefinitions.append(' ');
+ }
+ newMemberTypeDefinitions.append(theMemberTypeDefinition.getURI());
+ }
+
+ niceSetAttributeURIValue
+ ((Element)child,
+ XSDConstants.MEMBERTYPES_ATTRIBUTE,
+ newMemberTypeDefinitions == null ? null : newMemberTypeDefinitions.toString());
+ break LOOP;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS ||
+ eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__ANNOTATION)
+ {
+ getAnnotations().add(0, (XSDAnnotation)xsdConcreteComponent);
+ }
+ else if (eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION)
+ {
+ getAnnotations().add((XSDAnnotation)xsdConcreteComponent);
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS ||
+ eReference == XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS)
+ {
+ traverseToRootForPatching();
+ }
+ else if (eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__ANNOTATION ||
+ eReference == XSDPackage.Literals.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION)
+ {
+ getAnnotations().remove(xsdConcreteComponent);
+ }
+ }
+
+ public XSDTotalDigitsFacet getTotalDigitsFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDTotalDigitsFacet)
+ {
+ return (XSDTotalDigitsFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDTotalDigitsFacet getEffectiveTotalDigitsFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDTotalDigitsFacet)
+ {
+ return (XSDTotalDigitsFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDFractionDigitsFacet getFractionDigitsFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDFractionDigitsFacet)
+ {
+ return (XSDFractionDigitsFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDFractionDigitsFacet getEffectiveFractionDigitsFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDFractionDigitsFacet)
+ {
+ return (XSDFractionDigitsFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDLengthFacet getLengthFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDLengthFacet)
+ {
+ return (XSDLengthFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDLengthFacet getEffectiveLengthFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDLengthFacet)
+ {
+ return (XSDLengthFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMaxLengthFacet getMaxLengthFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMaxLengthFacet)
+ {
+ return (XSDMaxLengthFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMaxLengthFacet getEffectiveMaxLengthFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDMaxLengthFacet)
+ {
+ return (XSDMaxLengthFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMinLengthFacet getMinLengthFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMinLengthFacet)
+ {
+ return (XSDMinLengthFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMinLengthFacet getEffectiveMinLengthFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDMinLengthFacet)
+ {
+ return (XSDMinLengthFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMaxExclusiveFacet getMaxExclusiveFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMaxExclusiveFacet)
+ {
+ return (XSDMaxExclusiveFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMaxInclusiveFacet getMaxInclusiveFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMaxInclusiveFacet)
+ {
+ return (XSDMaxInclusiveFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMaxFacet getMaxFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMaxFacet)
+ {
+ return (XSDMaxFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMaxFacet getEffectiveMaxFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDMaxFacet)
+ {
+ return (XSDMaxFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMinExclusiveFacet getMinExclusiveFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMinExclusiveFacet)
+ {
+ return (XSDMinExclusiveFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMinInclusiveFacet getMinInclusiveFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMinInclusiveFacet)
+ {
+ return (XSDMinInclusiveFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMinFacet getMinFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDMinFacet)
+ {
+ return (XSDMinFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDMinFacet getEffectiveMinFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDMinFacet)
+ {
+ return (XSDMinFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDFacet> getSyntheticFacets()
+ {
+ if (syntheticFacets == null)
+ {
+ syntheticFacets = new EObjectContainmentEList<XSDFacet>(XSDFacet.class, this, XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS);
+ }
+ return syntheticFacets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS:
+ return ((InternalEList<?>)getContents()).basicRemove(otherEnd, msgs);
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS:
+ return ((InternalEList<?>)getFacetContents()).basicRemove(otherEnd, msgs);
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS:
+ return ((InternalEList<?>)getFundamentalFacets()).basicRemove(otherEnd, msgs);
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS:
+ return ((InternalEList<?>)getSyntheticFacets()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VARIETY:
+ return getVariety();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FINAL:
+ return getFinal();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL:
+ return getLexicalFinal();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS:
+ return getValidFacets();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS:
+ return getContents();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS:
+ return getFacetContents();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACETS:
+ return getFacets();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS:
+ return getMemberTypeDefinitions();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS:
+ return getFundamentalFacets();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ return getBaseTypeDefinition();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION:
+ return getPrimitiveTypeDefinition();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION:
+ return getItemTypeDefinition();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ROOT_TYPE_DEFINITION:
+ return getRootTypeDefinition();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_FACET:
+ return getMinFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_FACET:
+ return getMaxFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_INCLUSIVE_FACET:
+ return getMaxInclusiveFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_INCLUSIVE_FACET:
+ return getMinInclusiveFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_EXCLUSIVE_FACET:
+ return getMinExclusiveFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_EXCLUSIVE_FACET:
+ return getMaxExclusiveFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LENGTH_FACET:
+ return getLengthFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__WHITE_SPACE_FACET:
+ return getWhiteSpaceFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ENUMERATION_FACETS:
+ return getEnumerationFacets();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PATTERN_FACETS:
+ return getPatternFacets();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CARDINALITY_FACET:
+ return getCardinalityFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__NUMERIC_FACET:
+ return getNumericFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_LENGTH_FACET:
+ return getMaxLengthFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_LENGTH_FACET:
+ return getMinLengthFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__TOTAL_DIGITS_FACET:
+ return getTotalDigitsFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FRACTION_DIGITS_FACET:
+ return getFractionDigitsFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ORDERED_FACET:
+ return getOrderedFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BOUNDED_FACET:
+ return getBoundedFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_FACET:
+ return getEffectiveMaxFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_WHITE_SPACE_FACET:
+ return getEffectiveWhiteSpaceFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_LENGTH_FACET:
+ return getEffectiveMaxLengthFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_FRACTION_DIGITS_FACET:
+ return getEffectiveFractionDigitsFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_PATTERN_FACET:
+ return getEffectivePatternFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_ENUMERATION_FACET:
+ return getEffectiveEnumerationFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_TOTAL_DIGITS_FACET:
+ return getEffectiveTotalDigitsFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_LENGTH_FACET:
+ return getEffectiveMinLengthFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_LENGTH_FACET:
+ return getEffectiveLengthFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_FACET:
+ return getEffectiveMinFacet();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS:
+ return getSyntheticFacets();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VARIETY:
+ setVariety((XSDVariety)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FINAL:
+ getFinal().clear();
+ getFinal().addAll((Collection<? extends XSDSimpleFinal>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL:
+ getLexicalFinal().clear();
+ getLexicalFinal().addAll((Collection<? extends XSDSimpleFinal>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS:
+ getValidFacets().clear();
+ getValidFacets().addAll((Collection<? extends String>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS:
+ getContents().clear();
+ getContents().addAll((Collection<? extends XSDSimpleTypeDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS:
+ getFacetContents().clear();
+ getFacetContents().addAll((Collection<? extends XSDConstrainingFacet>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACETS:
+ getFacets().clear();
+ getFacets().addAll((Collection<? extends XSDConstrainingFacet>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS:
+ getMemberTypeDefinitions().clear();
+ getMemberTypeDefinitions().addAll((Collection<? extends XSDSimpleTypeDefinition>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS:
+ getFundamentalFacets().clear();
+ getFundamentalFacets().addAll((Collection<? extends XSDFundamentalFacet>)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ setBaseTypeDefinition((XSDSimpleTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION:
+ setPrimitiveTypeDefinition((XSDSimpleTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION:
+ setItemTypeDefinition((XSDSimpleTypeDefinition)newValue);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS:
+ getSyntheticFacets().clear();
+ getSyntheticFacets().addAll((Collection<? extends XSDFacet>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VARIETY:
+ unsetVariety();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FINAL:
+ getFinal().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL:
+ unsetLexicalFinal();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS:
+ getValidFacets().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS:
+ getContents().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS:
+ getFacetContents().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACETS:
+ getFacets().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS:
+ getMemberTypeDefinitions().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS:
+ getFundamentalFacets().clear();
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ setBaseTypeDefinition((XSDSimpleTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION:
+ setPrimitiveTypeDefinition((XSDSimpleTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION:
+ setItemTypeDefinition((XSDSimpleTypeDefinition)null);
+ return;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS:
+ getSyntheticFacets().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VARIETY:
+ return isSetVariety();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FINAL:
+ return final_ != null && !final_.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LEXICAL_FINAL:
+ return isSetLexicalFinal();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__VALID_FACETS:
+ return validFacets != null && !validFacets.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CONTENTS:
+ return contents != null && !contents.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACET_CONTENTS:
+ return facetContents != null && !facetContents.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FACETS:
+ return facets != null && !facets.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MEMBER_TYPE_DEFINITIONS:
+ return memberTypeDefinitions != null && !memberTypeDefinitions.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FUNDAMENTAL_FACETS:
+ return fundamentalFacets != null && !fundamentalFacets.isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BASE_TYPE_DEFINITION:
+ return baseTypeDefinition != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PRIMITIVE_TYPE_DEFINITION:
+ return primitiveTypeDefinition != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ITEM_TYPE_DEFINITION:
+ return itemTypeDefinition != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ROOT_TYPE_DEFINITION:
+ return getRootTypeDefinition() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_FACET:
+ return getMinFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_FACET:
+ return getMaxFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_INCLUSIVE_FACET:
+ return getMaxInclusiveFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_INCLUSIVE_FACET:
+ return getMinInclusiveFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_EXCLUSIVE_FACET:
+ return getMinExclusiveFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_EXCLUSIVE_FACET:
+ return getMaxExclusiveFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__LENGTH_FACET:
+ return getLengthFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__WHITE_SPACE_FACET:
+ return getWhiteSpaceFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ENUMERATION_FACETS:
+ return !getEnumerationFacets().isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__PATTERN_FACETS:
+ return !getPatternFacets().isEmpty();
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__CARDINALITY_FACET:
+ return getCardinalityFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__NUMERIC_FACET:
+ return getNumericFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MAX_LENGTH_FACET:
+ return getMaxLengthFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__MIN_LENGTH_FACET:
+ return getMinLengthFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__TOTAL_DIGITS_FACET:
+ return getTotalDigitsFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__FRACTION_DIGITS_FACET:
+ return getFractionDigitsFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__ORDERED_FACET:
+ return getOrderedFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__BOUNDED_FACET:
+ return getBoundedFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_FACET:
+ return getEffectiveMaxFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_WHITE_SPACE_FACET:
+ return getEffectiveWhiteSpaceFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MAX_LENGTH_FACET:
+ return getEffectiveMaxLengthFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_FRACTION_DIGITS_FACET:
+ return getEffectiveFractionDigitsFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_PATTERN_FACET:
+ return getEffectivePatternFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_ENUMERATION_FACET:
+ return getEffectiveEnumerationFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_TOTAL_DIGITS_FACET:
+ return getEffectiveTotalDigitsFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_LENGTH_FACET:
+ return getEffectiveMinLengthFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_LENGTH_FACET:
+ return getEffectiveLengthFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__EFFECTIVE_MIN_FACET:
+ return getEffectiveMinFacet() != null;
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION__SYNTHETIC_FACETS:
+ return syntheticFacets != null && !syntheticFacets.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (variety: ");
+ if ((eFlags & VARIETY_ESETFLAG) != 0) result.append(VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", final: ");
+ result.append(final_);
+ result.append(", lexicalFinal: ");
+ result.append(lexicalFinal);
+ result.append(", validFacets: ");
+ result.append(validFacets);
+ result.append(')');
+ return result.toString();
+ }
+
+ public XSDWhiteSpaceFacet getWhiteSpaceFacet()
+ {
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDWhiteSpaceFacet)
+ {
+ return (XSDWhiteSpaceFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public XSDWhiteSpaceFacet getEffectiveWhiteSpaceFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDWhiteSpaceFacet)
+ {
+ return (XSDWhiteSpaceFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public EList<XSDEnumerationFacet> getEnumerationFacets()
+ {
+ EList<XSDEnumerationFacet> result = new BasicEList<XSDEnumerationFacet>();
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDEnumerationFacet)
+ {
+ result.add((XSDEnumerationFacet)facet);
+ }
+ }
+ }
+ return
+ new EcoreEList.UnmodifiableEList.FastCompare<XSDEnumerationFacet>
+ (this, XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__ENUMERATION_FACETS, result.size(), result.toArray());
+ }
+
+ public XSDEnumerationFacet getEffectiveEnumerationFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDEnumerationFacet)
+ {
+ return (XSDEnumerationFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ public EList<XSDPatternFacet> getPatternFacets()
+ {
+ EList<XSDPatternFacet> result = new BasicEList<XSDPatternFacet>();
+ if (facetContents != null)
+ {
+ Object [] facets = facetContents.data();
+ for (int i = 0, size = facetContents.size(); i < size; ++i)
+ {
+ Object facet = facets[i];
+ if (facet instanceof XSDPatternFacet)
+ {
+ result.add((XSDPatternFacet)facet);
+ }
+ }
+ }
+ return
+ new EcoreEList.UnmodifiableEList.FastCompare<XSDPatternFacet>
+ (this, XSDPackage.Literals.XSD_SIMPLE_TYPE_DEFINITION__PATTERN_FACETS, result.size(), result.toArray());
+ }
+
+ public XSDPatternFacet getEffectivePatternFacet()
+ {
+ if (facets != null)
+ {
+ Object [] facetData = facets.data();
+ for (int i = 0, size = facets.size(); i < size; ++i)
+ {
+ Object facet = facetData[i];
+ if (facet instanceof XSDPatternFacet)
+ {
+ return (XSDPatternFacet)facet;
+ }
+ }
+ }
+ return null;
+ }
+
+ protected XSDBoundedFacet boundedFacet;
+ public XSDBoundedFacet getBoundedFacet()
+ {
+ if (boundedFacet == null)
+ {
+ createFundamentalFacets();
+ }
+ return boundedFacet;
+ }
+
+ protected XSDCardinalityFacet cardinalityFacet;
+ public XSDCardinalityFacet getCardinalityFacet()
+ {
+ if (cardinalityFacet == null)
+ {
+ createFundamentalFacets();
+ }
+ return cardinalityFacet;
+ }
+
+ protected XSDNumericFacet numericFacet;
+ public XSDNumericFacet getNumericFacet()
+ {
+ if (numericFacet == null)
+ {
+ createFundamentalFacets();
+ }
+ return numericFacet;
+ }
+
+ protected XSDOrderedFacet orderedFacet;
+ public XSDOrderedFacet getOrderedFacet()
+ {
+ if (orderedFacet == null)
+ {
+ createFundamentalFacets();
+ }
+ return orderedFacet;
+ }
+
+ protected void createFundamentalFacets()
+ {
+ List<XSDFundamentalFacet> theFundamentalFacets = getFundamentalFacets();
+ boundedFacet = getXSDFactory().createXSDBoundedFacet();
+ cardinalityFacet = getXSDFactory().createXSDCardinalityFacet();
+ numericFacet = getXSDFactory().createXSDNumericFacet();
+ orderedFacet = getXSDFactory().createXSDOrderedFacet();
+ List<XSDFundamentalFacet> list = new ArrayList<XSDFundamentalFacet>(4);
+ list.add(boundedFacet);
+ list.add(cardinalityFacet);
+ list.add(numericFacet);
+ list.add(orderedFacet);
+ theFundamentalFacets.addAll(list);
+ }
+
+ protected static EList<String> validFacetsForList;
+ public EList<String> getValidFacetsForList()
+ {
+ if (validFacetsForList == null)
+ {
+ validFacetsForList = new BasicEList<String>();
+ validFacetsForList.add("length");
+ validFacetsForList.add("maxLength");
+ validFacetsForList.add("minLength");
+ validFacetsForList.add("whiteSpace");
+ validFacetsForList.add("enumeration");
+ validFacetsForList.add("pattern");
+ }
+ return validFacetsForList;
+ }
+
+ protected static EList<String> validFacetsForUnion;
+ public EList<String> getValidFacetsForUnion()
+ {
+ if (validFacetsForUnion == null)
+ {
+ validFacetsForUnion = new BasicEList<String>();
+ validFacetsForUnion.add("enumeration");
+ validFacetsForUnion.add("pattern");
+ }
+ return validFacetsForUnion;
+ }
+
+ @Override
+ public XSDTypeDefinition getBaseType()
+ {
+ XSDTypeDefinition result = getBaseTypeDefinition();
+ if (result == this && XSDConstants.isAnyType(this))
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ String schemaForSchemaNamespace = xsdSchema.getSchemaForSchemaNamespace();
+ XSDSchemaImpl.getSchemaForSchema(schemaForSchemaNamespace).resolveComplexTypeDefinition("anyType");
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public XSDTypeDefinition getRootType()
+ {
+ return getRootTypeDefinition();
+ }
+
+ public XSDSimpleTypeDefinition getRootTypeDefinition()
+ {
+ XSDSimpleTypeDefinition result = this;
+ if (!isCircular())
+ {
+ for (XSDSimpleTypeDefinition theBaseTypeDefinition = result.getBaseTypeDefinition();
+ theBaseTypeDefinition != null && !XSDConstants.isURType(theBaseTypeDefinition);
+ theBaseTypeDefinition = theBaseTypeDefinition.getBaseTypeDefinition())
+ {
+ result = theBaseTypeDefinition;
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public XSDSimpleTypeDefinition getSimpleType()
+ {
+ return this;
+ }
+
+ @Override
+ public XSDParticle getComplexType()
+ {
+ return null;
+ }
+
+ protected XSDEnumerationFacetImpl effectiveEnumerationFacet;
+ protected XSDPatternFacetImpl effectivePatternFacet;
+
+ protected List<XSDConstrainingFacet> mergeFacets()
+ {
+ List<XSDConstrainingFacet> result = new ArrayList<XSDConstrainingFacet>();
+
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+
+ XSDWhiteSpaceFacet xsdWhiteSpaceFacet = getWhiteSpaceFacet();
+ if (xsdWhiteSpaceFacet == null)
+ {
+ xsdWhiteSpaceFacet = theBaseTypeDefinition.getEffectiveWhiteSpaceFacet();
+ }
+ if (xsdWhiteSpaceFacet != null)
+ {
+ result.add(xsdWhiteSpaceFacet);
+ }
+
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = getTotalDigitsFacet();
+ if (xsdTotalDigitsFacet == null)
+ {
+ xsdTotalDigitsFacet = theBaseTypeDefinition.getEffectiveTotalDigitsFacet();
+ }
+ if (xsdTotalDigitsFacet != null)
+ {
+ result.add(xsdTotalDigitsFacet);
+ }
+
+ XSDFractionDigitsFacet xsdFractionDigitsFacet = getFractionDigitsFacet();
+ if (xsdFractionDigitsFacet == null)
+ {
+ xsdFractionDigitsFacet = theBaseTypeDefinition.getEffectiveFractionDigitsFacet();
+ }
+ if (xsdFractionDigitsFacet != null)
+ {
+ result.add(xsdFractionDigitsFacet);
+ }
+
+ XSDLengthFacet xsdLengthFacet = getLengthFacet();
+ if (xsdLengthFacet == null)
+ {
+ xsdLengthFacet = theBaseTypeDefinition.getEffectiveLengthFacet();
+ }
+ if (xsdLengthFacet != null)
+ {
+ result.add(xsdLengthFacet);
+ }
+
+ XSDMinLengthFacet xsdMinLengthFacet = getMinLengthFacet();
+ if (xsdMinLengthFacet == null)
+ {
+ xsdMinLengthFacet = theBaseTypeDefinition.getEffectiveMinLengthFacet();
+ }
+ if (xsdMinLengthFacet != null)
+ {
+ result.add(xsdMinLengthFacet);
+ }
+
+ XSDMaxLengthFacet xsdMaxLengthFacet = getMaxLengthFacet();
+ if (xsdMaxLengthFacet == null)
+ {
+ xsdMaxLengthFacet = theBaseTypeDefinition.getEffectiveMaxLengthFacet();
+ }
+ if (xsdMaxLengthFacet != null)
+ {
+ result.add(xsdMaxLengthFacet);
+ }
+
+ XSDConstrainingFacet maxFacet = getMaxFacet();
+ if (maxFacet == null)
+ {
+ maxFacet = theBaseTypeDefinition.getEffectiveMaxFacet();
+ }
+ if (maxFacet != null)
+ {
+ result.add(maxFacet);
+ }
+
+ XSDConstrainingFacet minFacet = getMinFacet();
+ if (minFacet == null)
+ {
+ minFacet = theBaseTypeDefinition.getEffectiveMinFacet();
+ }
+ if (minFacet != null)
+ {
+ result.add(minFacet);
+ }
+
+ List<XSDEnumerationFacet> enumerationFacets = getEnumerationFacets();
+ if (enumerationFacets.isEmpty())
+ {
+ XSDEnumerationFacet baseEnumerationFacet = theBaseTypeDefinition.getEffectiveEnumerationFacet();
+ if (baseEnumerationFacet != null)
+ {
+ result.add(baseEnumerationFacet);
+ }
+ }
+ else
+ {
+ if (effectiveEnumerationFacet == null)
+ {
+ effectiveEnumerationFacet = (XSDEnumerationFacetImpl)getXSDFactory().createXSDEnumerationFacet();
+ getSyntheticFacets().add(effectiveEnumerationFacet);
+ }
+
+ StringBuffer newLexicalValue = new StringBuffer();
+ List<Object> newValue = new UniqueEList<Object>();
+ List<XSDAnnotation> newAnnotations = new ArrayList<XSDAnnotation>();
+
+ for (XSDEnumerationFacet enumerationFacet : enumerationFacets)
+ {
+ XSDAnnotation xsdAnnotation = enumerationFacet.getAnnotation();
+ if (xsdAnnotation != null)
+ {
+ newAnnotations.add(xsdAnnotation);
+ }
+
+ if (newValue.addAll(enumerationFacet.getValue()))
+ {
+ if (newLexicalValue.length() != 0)
+ {
+ newLexicalValue.append(", ");
+ }
+ newLexicalValue.append(enumerationFacet.getLexicalValue());
+ }
+ }
+ String newLexicalValueString = newLexicalValue.toString();
+
+ List<Object> remainingValues = new ArrayList<Object>(effectiveEnumerationFacet.getValue());
+ remainingValues.removeAll(newValue);
+ if (!remainingValues.isEmpty())
+ {
+ effectiveEnumerationFacet.getValue().removeAll(remainingValues);
+ }
+ if (!newValue.isEmpty())
+ {
+ setListContentAndOrder(effectiveEnumerationFacet.getValue(), newValue);
+ }
+
+ List<XSDAnnotation> remainingAnnotations = new ArrayList<XSDAnnotation>(effectiveEnumerationFacet.getAnnotations());
+ remainingAnnotations.removeAll(newAnnotations);
+ if (!remainingAnnotations.isEmpty())
+ {
+ effectiveEnumerationFacet.getAnnotations().removeAll(remainingAnnotations);
+ }
+ if (!newAnnotations.isEmpty())
+ {
+ setListContentAndOrder(effectiveEnumerationFacet.getAnnotations(), newAnnotations);
+ }
+
+ if (!newLexicalValueString.equals(effectiveEnumerationFacet.getLexicalValue()))
+ {
+ effectiveEnumerationFacet.isReconciling = true;
+ effectiveEnumerationFacet.setLexicalValue(newLexicalValueString);
+ effectiveEnumerationFacet.isReconciling = false;
+ }
+
+ result.add(effectiveEnumerationFacet);
+ }
+
+ List<XSDPatternFacet> patternFacets = getPatternFacets();
+ if (patternFacets.isEmpty())
+ {
+ XSDPatternFacet basePatternFacet = theBaseTypeDefinition.getEffectivePatternFacet();
+ if (basePatternFacet != null)
+ {
+ result.add(basePatternFacet);
+ }
+ }
+ else
+ {
+ if (effectivePatternFacet == null)
+ {
+ effectivePatternFacet = (XSDPatternFacetImpl)getXSDFactory().createXSDPatternFacet();
+ getSyntheticFacets().add(effectivePatternFacet);
+ }
+
+ List<String> newValue = new ArrayList<String>();
+ List<XSDAnnotation> newAnnotations = new ArrayList<XSDAnnotation>();
+ XSDPatternFacet effectiveBasePatternFacet = theBaseTypeDefinition.getEffectivePatternFacet();
+ if (effectiveBasePatternFacet != null)
+ {
+ newValue.addAll(effectiveBasePatternFacet.getValue());
+ }
+
+ StringBuffer combinedPattern = new StringBuffer();
+ if (patternFacets.size() == 1)
+ {
+ XSDPatternFacet xsdPatternFacet = patternFacets.get(0);
+ combinedPattern.append(xsdPatternFacet.getLexicalValue());
+ XSDAnnotation xsdAnnotation = xsdPatternFacet.getAnnotation();
+ if (xsdAnnotation != null)
+ {
+ newAnnotations.add(xsdAnnotation);
+ }
+ }
+ else
+ {
+ for (XSDPatternFacet xsdPatternFacet : patternFacets)
+ {
+ if (combinedPattern.length() != 0)
+ {
+ combinedPattern.append("|");
+ }
+ combinedPattern.append("(");
+ combinedPattern.append(xsdPatternFacet.getLexicalValue());
+ combinedPattern.append(")");
+ XSDAnnotation xsdAnnotation = xsdPatternFacet.getAnnotation();
+ if (xsdAnnotation != null)
+ {
+ newAnnotations.add(xsdAnnotation);
+ }
+ }
+ }
+ newValue.add(combinedPattern.toString());
+
+ List<String> remainingValues = new ArrayList<String>(effectivePatternFacet.getValue());
+ remainingValues.removeAll(newValue);
+ if (!remainingValues.isEmpty())
+ {
+ effectivePatternFacet.getValue().removeAll(remainingValues);
+ }
+ if (!newValue.isEmpty())
+ {
+ setListContentAndOrder(effectivePatternFacet.getValue(), newValue);
+ }
+
+ List<XSDAnnotation> remainingAnnotations = new ArrayList<XSDAnnotation>(effectivePatternFacet.getAnnotations());
+ remainingAnnotations.removeAll(newAnnotations);
+ if (!remainingAnnotations.isEmpty())
+ {
+ effectivePatternFacet.getAnnotations().removeAll(remainingAnnotations);
+ }
+ if (!newAnnotations.isEmpty())
+ {
+ setListContentAndOrder(effectivePatternFacet.getAnnotations(), newAnnotations);
+ }
+
+ StringBuffer newLexicalValue = new StringBuffer();
+ if (newValue.size() == 1)
+ {
+ newLexicalValue.append(newValue.get(0));
+ }
+ else
+ {
+ for (String string : newValue)
+ {
+ if (newLexicalValue.length() != 0)
+ {
+ newLexicalValue.append(" & ");
+ }
+ newLexicalValue.append("(");
+ newLexicalValue.append(string);
+ newLexicalValue.append(")");
+ }
+ }
+ String newLexicalValueString = newLexicalValue.toString();
+ if (!newLexicalValueString.equals(effectivePatternFacet.getLexicalValue()))
+ {
+ effectivePatternFacet.isReconciling = true;
+ effectivePatternFacet.setLexicalValue(newLexicalValueString);
+ effectivePatternFacet.isReconciling = false;
+ }
+
+ result.add(effectivePatternFacet);
+ }
+
+ return result;
+ }
+
+
+ public String getStringLexicalFinal()
+ {
+ if (isSetLexicalFinal())
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getLexicalFinal())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (literal.toString().equals("all"))
+ {
+ result.append("#all");
+ }
+ else
+ {
+ result.append(literal);
+ }
+ }
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringLexicalFinal(String finalDefault)
+ {
+ if (finalDefault == null)
+ {
+ unsetLexicalFinal();
+ }
+ else
+ {
+ List<XSDSimpleFinal> newLexicalFinal = new ArrayList<XSDSimpleFinal>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(finalDefault); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ if (token.equals("#all"))
+ {
+ token = "all";
+ }
+ XSDSimpleFinal literal = XSDSimpleFinal.get(token);
+ if (literal != null)
+ {
+ newLexicalFinal.add(literal);
+ }
+ }
+ if (!newLexicalFinal.equals(getLexicalFinal()))
+ {
+ Collection<XSDSimpleFinal> oldContents = new ArrayList<XSDSimpleFinal>(getLexicalFinal());
+ oldContents.removeAll(newLexicalFinal);
+ if (!oldContents.isEmpty())
+ {
+ getLexicalFinal().removeAll(oldContents);
+ }
+ setListContentAndOrder(getLexicalFinal(), newLexicalFinal);
+ }
+ else if (newLexicalFinal.isEmpty() && !isSetLexicalFinal())
+ {
+ getLexicalFinal().clear();
+ }
+ }
+ }
+
+ public String getStringFinal()
+ {
+ StringBuffer result = new StringBuffer();
+ for (Object literal : getFinal())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(literal);
+ }
+ return result.toString();
+ }
+
+ /**
+ * This is used to gather selectively
+ * the information determined when assessing a literal string
+ * with respect to a {@link XSDSimpleTypeDefinition}.
+ * It is intended to be very light-weight and flexible.
+ *
+ * You may begin assessment with a {@link #node}, which handles three cases:
+ * if the node is an attribute, it's value is used to determine the literal;
+ * if the node is a text node, it's value is used to determine the literal;
+ * if the node is an element, it's (one and only) child text node is used to determine the literal in the preceeding case.
+ * You may begin assessment with a {@link #literal} by not setting a node.
+ * And you may begin assessment with a {@link #normalizedLiteral} by setting neither the node nor the literal.
+ *
+ * Unless additional {@link #yield} flags are set,
+ * assessment will perform but one function:
+ * it will set the {@link #diagnostics} to Collections.EMPTY_LIST when the literal fails to assess as valid.
+ * Hence, this most-light-weight invocation will only determine validity.
+ *
+ * You may choose for assessment to yield additional results,
+ * i.e., the {@link #value}, the {@link #canonicalLiteral}, and the {@link #diagnostics},
+ * using the flags {@link #YIELD_VALUE}, {@link #YIELD_CANONICAL_LITERAL}, {@link #YIELD_DIAGNOSTICS}.
+ */
+ public static class AssessmentImpl implements XSDSimpleTypeDefinition.Assessment
+ {
+ public static final int YIELD_VALUE = 0x01;
+ public static final int YIELD_CANONICAL_LITERAL = 0x02;
+ public static final int YIELD_DIAGNOSTICS = 0x04;
+
+ /**
+ * This is the simple type definition doing the assessment.
+ */
+ public XSDSimpleTypeDefinitionImpl xsdSimpleTypeDefinition;
+
+ /**
+ * This is the simple type definition doing the assessment for an atomic type.
+ */
+ public XSDAnySimpleType xsdAnySimpleType;
+
+ /**
+ * This is the context in which the prefix of QNames are resolved.
+ */
+ public Element context;
+
+ /**
+ * This is the node whose literal is being assessed.
+ */
+ public Node node;
+
+ /**
+ * This is the literal that is being assessed.
+ */
+ public String literal;
+
+ /**
+ * This is the normalized value of the literal being assessed.
+ */
+ public String normalizedLiteral;
+
+ /**
+ * This determines the results that will be yielded during assessment.
+ */
+ public int yield;
+
+ /**
+ * This is the value of the normalized literal in the Java representation of the value space.
+ */
+ public Object value;
+
+ /**
+ * This is the canonical literal representation of the literal.
+ */
+ public String canonicalLiteral;
+
+ /**
+ * These are the diagnostics that are collected.
+ */
+ public Collection<XSDDiagnostic> diagnostics;
+
+ /**
+ * This records any nested assessments that were performed.
+ */
+ public Collection<Assessment> assessments;
+
+ /**
+ * This creates an empty instance;
+ * minimally, the node or literal would need to be set before using this.
+ */
+ public AssessmentImpl()
+ {
+ super();
+ }
+
+ /**
+ * This creates an instance to assess the given node and to yield the specified results.
+ */
+ public AssessmentImpl(Node node, int yield)
+ {
+ this.yield = yield;
+ this.node = node;
+ }
+
+ /**
+ * This creates an instance to assess the given node and to yield the specified results.
+ */
+ public AssessmentImpl(Element context, Node node, int yield)
+ {
+ this.context = context;
+ this.yield = yield;
+ this.node = node;
+ }
+
+ /**
+ * This creates an instance to assess the given literal and to yield the specified results.
+ */
+ public AssessmentImpl(String literal, int yield)
+ {
+ this.yield = yield;
+ this.literal = literal;
+ }
+
+ /**
+ * This creates an instance to assess the given literal and to yield the specified results.
+ */
+ public AssessmentImpl(Element context, String literal, int yield)
+ {
+ this.context = context;
+ this.yield = yield;
+ this.literal = literal;
+ }
+
+ public XSDSimpleTypeDefinition getTypeDefinition()
+ {
+ return xsdSimpleTypeDefinition;
+ }
+
+ public Element getContext()
+ {
+ return context;
+ }
+
+ public Node getNode()
+ {
+ return node;
+ }
+
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ public String getNormalizedLiteral()
+ {
+ return normalizedLiteral;
+ }
+
+ public Object getValue()
+ {
+ return value;
+ }
+
+ public String getCanonicalLiteral()
+ {
+ return normalizedLiteral;
+ }
+
+ public XSDSimpleTypeDefinition getMemberTypeDefinition()
+ {
+ return null;
+ }
+
+ public Collection<XSDDiagnostic> getLocalDiagnostics()
+ {
+ return diagnostics == null ? Collections.<XSDDiagnostic>emptyList() : diagnostics;
+ }
+
+ public Collection<Assessment> getAssessments()
+ {
+ return assessments;
+ }
+
+ public Collection<XSDDiagnostic> getDiagnostics()
+ {
+ Collection<XSDDiagnostic> result = new ArrayList<XSDDiagnostic>();
+ getAllDiagnostics(result);
+ return result;
+ }
+
+ protected void getAllDiagnostics(Collection<XSDDiagnostic> result)
+ {
+ if (diagnostics != null)
+ {
+ result.addAll(diagnostics);
+ }
+ if (assessments != null)
+ {
+ for (Assessment assessment : assessments)
+ {
+ ((AssessmentImpl)assessment).getAllDiagnostics(result);
+ }
+ }
+ }
+
+ public void format(String noun, String name)
+ {
+ if (diagnostics != null)
+ {
+ for (XSDDiagnostic xsdDiagnostic : diagnostics)
+ {
+ xsdDiagnostic.setMessage(MessageFormat.format(xsdDiagnostic.getMessage(), new Object [] { noun, name }));
+ }
+ }
+ if (assessments != null)
+ {
+ for (Assessment assessment : assessments)
+ {
+ assessment.format(noun, name);
+ }
+ }
+ }
+
+ public void assignDiagnostics(XSDConcreteComponent xsdConcreteComponent, Element element, String attributeName)
+ {
+ Collection<XSDDiagnostic> allDiagnostics = getDiagnostics();
+ if (!allDiagnostics.isEmpty())
+ {
+ Node theNode = element;
+ if (element != null && element.hasAttributeNS(null, attributeName))
+ {
+ theNode = element.getAttributeNodeNS(null, attributeName);
+ }
+
+ Object [] substitutions = new Object [] { XSDPlugin.INSTANCE.getString("attribute_noun"), attributeName };
+ for (XSDDiagnostic xsdDiagnostic : allDiagnostics)
+ {
+ xsdDiagnostic.setMessage(MessageFormat.format(xsdDiagnostic.getMessage(), substitutions));
+ xsdDiagnostic.getComponents().add(0, xsdConcreteComponent);
+ xsdDiagnostic.setNode(theNode);
+ }
+ }
+ }
+
+ public void validate(XSDConstrainingFacet xsdConstrainingFacet)
+ {
+ if (xsdConstrainingFacet != null &&
+ !(xsdConstrainingFacet instanceof XSDPatternFacet ?
+ ((XSDPatternFacet)xsdConstrainingFacet).isConstraintSatisfied(normalizedLiteral) :
+ xsdConstrainingFacet.isConstraintSatisfied(value)))
+ {
+ XSDDiagnostic result = ((XSDConcreteComponentImpl)xsdConstrainingFacet).getXSDFactory().createXSDDiagnostic();
+ result.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ Object [] substitutions = createSubstitutions(5);
+ substitutions[3] = xsdConstrainingFacet.getLexicalValue();
+ substitutions[4] = xsdConstrainingFacet.getSimpleTypeDefinition().getURI();
+
+ String message = populateDiagnostic(result, "cvc-" + xsdConstrainingFacet.getFacetName() + "-valid", substitutions);
+ if (node == null || node.getNodeType() == Node.TEXT_NODE)
+ {
+ message = requote(message);
+ }
+ result.setMessage(XSDPlugin.INSTANCE.getString("_UI_XSDError_message", new Object [] { message}));
+ result.setAnnotationURI(XSDConstants.PART2 + "#" + xsdConstrainingFacet.getFacetName());
+ result.setPrimaryComponent(xsdConstrainingFacet);
+ result.setNode(node);
+
+ if (diagnostics == null)
+ {
+ diagnostics = new ArrayList<XSDDiagnostic>();
+ }
+ diagnostics.add(result);
+ }
+ }
+
+ protected Object [] createSubstitutions(int length)
+ {
+ Object [] substitutions = new Object [length];
+ if (normalizedLiteral != null)
+ {
+ substitutions[0] = normalizedLiteral;
+ }
+ else if (literal != null)
+ {
+ substitutions[0] = literal;
+ }
+ else
+ {
+ substitutions[0] = value;
+ }
+
+ if (node == null || node.getNodeType() == Node.TEXT_NODE)
+ {
+ substitutions[1] = "\000";
+ substitutions[2] = "\001";
+ }
+ else if (node.getNodeType() == Node.ATTRIBUTE_NODE)
+ {
+ substitutions[1] = XSDPlugin.INSTANCE.getString("attribute_noun");
+ substitutions[2] = node.getLocalName();
+ }
+ else if (node.getNodeType() == Node.ELEMENT_NODE)
+ {
+ substitutions[1] = XSDPlugin.INSTANCE.getString("element_noun");
+ substitutions[2] = node.getLocalName();
+ }
+
+ return substitutions;
+ }
+
+ protected static String requote(String message)
+ {
+ StringBuffer stringBuffer = new StringBuffer(message);
+ for (int i = stringBuffer.length() - 1; i > 0; --i)
+ {
+ switch (stringBuffer.charAt(i))
+ {
+ case 0:
+ {
+ stringBuffer.replace(i, i + 1, "{0}");
+ break;
+ }
+ case 1:
+ {
+ stringBuffer.replace(i, i + 1, "{1}");
+ break;
+ }
+ case '\'':
+ {
+ stringBuffer.insert(i, '\'');
+ break;
+ }
+ case '{': // }
+ {
+ stringBuffer.replace(i, i + 1, "'{'"); // }
+ break;
+ }
+ }
+ }
+ return stringBuffer.toString();
+ }
+
+ public void reportDatatypeDiagnostic()
+ {
+ XSDDiagnostic result = xsdSimpleTypeDefinition.getXSDFactory().createXSDDiagnostic();
+ result.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ Object [] substitutions = createSubstitutions(4);
+ substitutions[3] = xsdSimpleTypeDefinition.getURI();
+ XSDSimpleTypeDefinition primitiveTypeDefinition = xsdSimpleTypeDefinition.getPrimitiveTypeDefinition();
+ String message =
+ populateDiagnostic
+ (result,
+ primitiveTypeDefinition == null ?
+ "cvc-datatype-valid.1.2.3" :
+ "cvc-datatype-valid.1.2.1",
+ substitutions);
+ if (node == null || node.getNodeType() == Node.TEXT_NODE)
+ {
+ message = requote(message);
+ }
+ result.setMessage(XSDPlugin.INSTANCE.getString("_UI_XSDError_message", new Object [] { message }));
+ if (primitiveTypeDefinition != null)
+ {
+ result.setAnnotationURI(XSDConstants.PART2 + "#" + primitiveTypeDefinition.getName());
+ }
+ result.setPrimaryComponent(primitiveTypeDefinition);
+ result.setNode(node);
+
+ if (diagnostics == null)
+ {
+ diagnostics = new ArrayList<XSDDiagnostic>();
+ }
+ diagnostics.add(result);
+ }
+ }
+
+ public XSDSimpleTypeDefinition.Assessment assess(Node node)
+ {
+ return assess(null, node);
+ }
+
+ public XSDSimpleTypeDefinition.Assessment assess(Element context, Node node)
+ {
+ AssessmentImpl assessment = new AssessmentImpl(context, node, 0);
+ return assess(assessment);
+ }
+
+ public XSDSimpleTypeDefinition.Assessment assess(String literal)
+ {
+ return assess(null, literal);
+ }
+
+ public XSDSimpleTypeDefinition.Assessment assess(Element context, String literal)
+ {
+ AssessmentImpl assessment = new AssessmentImpl(context, literal, 0);
+ return assess(assessment);
+ }
+
+ public AssessmentImpl assess(AssessmentImpl assessment)
+ {
+ return assess(assessment, true);
+ }
+
+ public AssessmentImpl assess(AssessmentImpl assessment, boolean validate)
+ {
+ assessment.xsdSimpleTypeDefinition = this;
+
+ // Determine the literal from the node.
+ //
+ if (assessment.literal == null && assessment.node != null)
+ {
+ switch (assessment.node.getNodeType())
+ {
+ case Node.ATTRIBUTE_NODE:
+ {
+ assessment.literal = assessment.node.getNodeValue();
+ break;
+ }
+ case Node.ELEMENT_NODE:
+ {
+ Element element = (Element)assessment.node;
+ StringBuffer text = new StringBuffer();
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (child.getNodeType())
+ {
+ case Node.TEXT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ {
+ text.append(child.getNodeValue());
+ break;
+ }
+ }
+ }
+ assessment.literal = text.toString();
+ break;
+ }
+ case Node.TEXT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ {
+ assessment.literal = assessment.node.getNodeValue();
+ break;
+ }
+ }
+ }
+
+ // Determine the normalized literal from the literal.
+ //
+ if (assessment.normalizedLiteral == null && assessment.literal != null)
+ {
+ assessment.normalizedLiteral = assessment.literal;
+ XSDWhiteSpaceFacet effectiveWhiteSpaceFacet = getEffectiveWhiteSpaceFacet();
+ if (effectiveWhiteSpaceFacet != null)
+ {
+ assessment.normalizedLiteral = effectiveWhiteSpaceFacet.getNormalizedLiteral(assessment.literal);
+ }
+ }
+
+ if (!isCircular())
+ {
+ if (validate)
+ {
+ assessment.validate(getEffectivePatternFacet());
+ }
+
+ switch (getVariety().getValue())
+ {
+ case XSDVariety.ATOMIC:
+ {
+ XSDSimpleTypeDefinition thePrimitiveTypeDefinition = getPrimitiveTypeDefinition();
+ if (thePrimitiveTypeDefinition != null)
+ {
+ XSDAnySimpleType xsdAnySimpleType = XSDTypeRegister.getTypeImplementer(thePrimitiveTypeDefinition.getName());
+ xsdAnySimpleType.assess(assessment);
+ if (validate && assessment.diagnostics == null)
+ {
+ assessment.validate(getEffectiveLengthFacet());
+ assessment.validate(getEffectiveMinLengthFacet());
+ assessment.validate(getEffectiveMaxLengthFacet());
+
+ assessment.validate(getEffectiveTotalDigitsFacet());
+ assessment.validate(getEffectiveFractionDigitsFacet());
+
+ if (XSDOrdered.FALSE_LITERAL != getOrderedFacet().getValue())
+ {
+ assessment.validate(getEffectiveMinFacet());
+ assessment.validate(getEffectiveMaxFacet());
+ }
+ }
+ }
+ break;
+ }
+ case XSDVariety.UNION:
+ {
+ boolean good = false;
+ for (XSDSimpleTypeDefinition memberTypeDefinition : getMemberTypeDefinitions())
+ {
+ AssessmentImpl nestedAssessment = new AssessmentImpl(assessment.context, assessment.node, assessment.yield);
+ nestedAssessment.literal = nestedAssessment.normalizedLiteral = assessment.normalizedLiteral;
+
+ ((XSDSimpleTypeDefinitionImpl)memberTypeDefinition).assess(nestedAssessment);
+
+ if (nestedAssessment.diagnostics == null)
+ {
+ if (assessment.assessments == null)
+ {
+ assessment.assessments = new ArrayList<Assessment>();
+ }
+ assessment.assessments.add(nestedAssessment);
+ assessment.value = nestedAssessment.value;
+ good = true;
+ break;
+ }
+ }
+
+ if (validate && !good)
+ {
+ assessment.reportDatatypeDiagnostic();
+ }
+
+ break;
+ }
+ case XSDVariety.LIST:
+ {
+ XSDSimpleTypeDefinition theItemTypeDefinition = getItemTypeDefinition();
+ if (theItemTypeDefinition != null)
+ {
+ List<Object> list = new ArrayList<Object>();
+ assessment.value = list;
+ for (StringTokenizer tokens = new StringTokenizer(assessment.normalizedLiteral, " ");
+ tokens.hasMoreTokens(); )
+ {
+ AssessmentImpl nestedAssessment = new AssessmentImpl(assessment.context, assessment.node, assessment.yield);
+ nestedAssessment.literal = nestedAssessment.normalizedLiteral = tokens.nextToken();
+ ((XSDSimpleTypeDefinitionImpl)getItemTypeDefinition()).assess(nestedAssessment, validate);
+ if (nestedAssessment.value != null)
+ {
+ list.add(nestedAssessment.value);
+ }
+ if (assessment.assessments == null)
+ {
+ assessment.assessments = new ArrayList<Assessment>();
+ }
+ assessment.assessments.add(nestedAssessment);
+ }
+
+ if (validate)
+ {
+ assessment.validate(getEffectiveLengthFacet());
+ assessment.validate(getEffectiveMinLengthFacet());
+ assessment.validate(getEffectiveMaxLengthFacet());
+ }
+ }
+ break;
+ }
+ }
+
+ if (validate)
+ {
+ assessment.validate(getEffectiveEnumerationFacet());
+ }
+ }
+
+ return assessment;
+ }
+
+ public boolean isValidLiteral(String literal)
+ {
+ return isValidLiteral(null, literal);
+ }
+
+ public boolean isValidLiteral(Element context, String literal)
+ {
+ AssessmentImpl assessment = new AssessmentImpl(context, literal, 0);
+ assess(assessment);
+ return assessment.diagnostics == null;
+ }
+
+ public Object getValue(String literal)
+ {
+ return getValue(null, literal);
+
+ }
+
+ public Object getValue(Element context, String literal)
+ {
+ AssessmentImpl assessment = new AssessmentImpl(context, literal, 0);
+ assess(assessment, false);
+ return assessment.value;
+ }
+
+ public String getCanonicalLiteral(String literal)
+ {
+ AssessmentImpl assessment = new AssessmentImpl(null, literal, 0);
+ assess(assessment, false);
+ return assessment.normalizedLiteral;
+ }
+
+ public String getNormalizedLiteral(String literal)
+ {
+ String result = literal;
+ XSDWhiteSpaceFacet effectiveWhiteSpaceFacet = getEffectiveWhiteSpaceFacet();
+ if (effectiveWhiteSpaceFacet != null)
+ {
+ result = effectiveWhiteSpaceFacet.getNormalizedLiteral(result);
+ }
+ return result;
+ }
+
+ public boolean equalValues(Object value1, Object value2)
+ {
+ return value1 == null ? value2 == null : value1.equals(value2);
+ }
+
+ public boolean equalLiterals(String literal1, String literal2)
+ {
+ return equalLiterals(null, literal1, null, literal2);
+ }
+
+ public boolean equalLiterals(Element context1, String literal1, Element context2, String literal2)
+ {
+ return equalValues(getValue(context1, literal1), getValue(context2, literal2));
+ }
+
+ public int compareValues(Object value1, Object value2)
+ {
+ if (XSDOrdered.FALSE_LITERAL != getOrderedFacet().getValue())
+ {
+ XSDSimpleTypeDefinition thePrimitiveTypeDefinition = getPrimitiveTypeDefinition();
+ if (thePrimitiveTypeDefinition != null)
+ {
+ XSDAnySimpleType xsdAnySimpleType =
+ XSDTypeRegister.getTypeImplementer(thePrimitiveTypeDefinition.getName());
+ return
+ value1 == null ?
+ value2 == null ?
+ 0 :
+ -1 :
+ value2 == null ?
+ 1 :
+ xsdAnySimpleType.compareValues(value1, value2);
+ }
+ }
+ return 0;
+ }
+
+ public int compareLiterals(String literal1, String literal2)
+ {
+ return compareLiterals(null, literal1, null, literal2);
+ }
+
+ public int compareLiterals(Element context1, String literal1, Element context2, String literal2)
+ {
+ return compareValues(getValue(context1, literal1), getValue(context2, literal2));
+ }
+
+ @Override
+ public XSDTypeDefinition getBadTypeDerivation(XSDTypeDefinition xsdTypeDefinition, boolean extension, boolean restriction)
+ {
+ if (xsdTypeDefinition == this)
+ {
+ return null;
+ }
+ else if (!restriction ||
+ getBaseTypeDefinition() == null ||
+ getBaseTypeDefinition().getFinal().contains(XSDSimpleFinal.RESTRICTION_LITERAL))
+ {
+ return this;
+ }
+ else
+ {
+ XSDTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+ XSDTypeDefinition result = theBaseTypeDefinition;
+ if (theBaseTypeDefinition == xsdTypeDefinition)
+ {
+ return null;
+ }
+ else if (!XSDConstants.isURType(theBaseTypeDefinition))
+ {
+ result = theBaseTypeDefinition.getBadTypeDerivation(xsdTypeDefinition, extension, restriction);
+ if (result == null)
+ {
+ return null;
+ }
+ }
+
+ switch (getVariety().getValue())
+ {
+ case XSDVariety.LIST:
+ case XSDVariety.UNION:
+ {
+ if (XSDConstants.isURType(xsdTypeDefinition))
+ {
+ return null;
+ }
+ }
+ }
+
+ if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdTypeDefinition;
+ if (xsdSimpleTypeDefinition.getVariety() == XSDVariety.UNION_LITERAL)
+ {
+ for (XSDSimpleTypeDefinition memberTypeDefinition : xsdSimpleTypeDefinition.getMemberTypeDefinitions())
+ {
+ XSDTypeDefinition memberResult = getBadTypeDerivation(memberTypeDefinition, extension, restriction);
+ if (memberResult == null)
+ {
+ return null;
+ }
+ }
+ }
+ }
+ else if (XSDConstants.isAnyType(xsdTypeDefinition))
+ {
+ return null;
+ }
+
+ return result;
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDSimpleTypeDefinitionImpl clonedSimpleTypeDefinition =
+ (XSDSimpleTypeDefinitionImpl)getXSDFactory().createXSDSimpleTypeDefinition();
+ clonedSimpleTypeDefinition.isReconciling = true;
+
+ XSDSimpleTypeDefinition theBaseTypeDefinition = getBaseTypeDefinition();
+
+ if (getName() != null)
+ {
+ clonedSimpleTypeDefinition.setName(getName());
+ }
+ if (isSetLexicalFinal())
+ {
+ if (!getLexicalFinal().isEmpty())
+ {
+ clonedSimpleTypeDefinition.getLexicalFinal().addAll(getLexicalFinal());
+ }
+ else
+ {
+ clonedSimpleTypeDefinition.getLexicalFinal().clear();
+ }
+ }
+
+ if (!(getContainer() instanceof XSDComplexTypeDefinition))
+ {
+ if (getItemTypeDefinition() != null && (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)))
+ {
+ if (!getContents().contains(getItemTypeDefinition()))
+ {
+ XSDSimpleTypeDefinition theItemTypeDefinition = getItemTypeDefinition();
+ clonedSimpleTypeDefinition.setItemTypeDefinition
+ (createUnresolvedSimpleTypeDefinition
+ (theItemTypeDefinition.getTargetNamespace(), theItemTypeDefinition.getName()));
+ }
+ }
+ else if (!getMemberTypeDefinitions().isEmpty() && (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)))
+ {
+ List<XSDSimpleTypeDefinition> unresolvedMembers = new ArrayList<XSDSimpleTypeDefinition>(getMemberTypeDefinitions().size());
+ for (XSDSimpleTypeDefinition memberTypeDefinition : getMemberTypeDefinitions())
+ {
+ if (getContents().contains(memberTypeDefinition))
+ {
+ break;
+ }
+ else
+ {
+ unresolvedMembers.add
+ (createUnresolvedSimpleTypeDefinition
+ (memberTypeDefinition.getTargetNamespace(), memberTypeDefinition.getName()));
+ }
+ }
+ if (!unresolvedMembers.isEmpty())
+ {
+ clonedSimpleTypeDefinition.getMemberTypeDefinitions().addAll(unresolvedMembers);
+ }
+ }
+ else
+ {
+ if (getBaseTypeDefinition() != null && !getContents().contains(getBaseTypeDefinition()))
+ {
+ clonedSimpleTypeDefinition.setBaseTypeDefinition
+ (createUnresolvedSimpleTypeDefinition
+ (theBaseTypeDefinition.getTargetNamespace(), theBaseTypeDefinition.getName()));
+ }
+ }
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedSimpleTypeDefinition.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (getDerivationAnnotation() != null)
+ {
+ clonedSimpleTypeDefinition.setDerivationAnnotation((XSDAnnotation)getDerivationAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ if (!getContents().isEmpty())
+ {
+ clonedSimpleTypeDefinition.getContents().addAll(cloneConcreteComponents(getContents(), deep, shareDOM));
+ if (getItemTypeDefinition() != null && (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)))
+ {
+ clonedSimpleTypeDefinition.setItemTypeDefinition(clonedSimpleTypeDefinition.getContents().get(0));
+ }
+ else if (!getMemberTypeDefinitions().isEmpty() && (theBaseTypeDefinition == null || XSDConstants.isURType(theBaseTypeDefinition)))
+ {
+ clonedSimpleTypeDefinition.getMemberTypeDefinitions().addAll(clonedSimpleTypeDefinition.getContents());
+ }
+ else
+ {
+ clonedSimpleTypeDefinition.setBaseTypeDefinition(clonedSimpleTypeDefinition.getContents().get(0));
+ }
+ }
+ if (!getFacetContents().isEmpty())
+ {
+ clonedSimpleTypeDefinition.getFacetContents().addAll(cloneConcreteComponents(getFacetContents(), deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedSimpleTypeDefinition.setElement(getElement());
+ }
+
+ clonedSimpleTypeDefinition.isReconciling = shareDOM;
+ return clonedSimpleTypeDefinition;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTermImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTermImpl.java
new file mode 100644
index 0000000..01ee05f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTermImpl.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDTerm;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Term</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class XSDTermImpl
+ extends XSDComponentImpl
+ implements XSDTerm
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDTermImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_TERM;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTotalDigitsFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTotalDigitsFacetImpl.java
new file mode 100644
index 0000000..778a978
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTotalDigitsFacetImpl.java
@@ -0,0 +1,319 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.math.BigDecimal;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDTotalDigitsFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Total Digits Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDTotalDigitsFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDTotalDigitsFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDTotalDigitsFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ public static XSDTotalDigitsFacet createTotalDigitsFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.TOTALDIGITS_ELEMENT)
+ {
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = XSDFactory.eINSTANCE.createXSDTotalDigitsFacet();
+ xsdTotalDigitsFacet.setElement((Element)node);
+ return xsdTotalDigitsFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDTotalDigitsFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_TOTAL_DIGITS_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue)
+ {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_TOTAL_DIGITS_FACET__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TOTAL_DIGITS_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TOTAL_DIGITS_FACET__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TOTAL_DIGITS_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TOTAL_DIGITS_FACET__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.TOTALDIGITS_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ checkBuiltInTypeConstraint
+ ("positiveInteger",
+ getLexicalValue(),
+ XSDConstants.PART2,
+ "element-totalDigits",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ true);
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ if (getValue() > ((XSDTotalDigitsFacet)xsdFixedFacet).getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "totalDigits-valid-restriction",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object [] { getValue(), xsdFixedFacet.getEffectiveValue(), xsdFixedFacet.getSimpleTypeDefinition().getURI() });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ if (getLexicalValue() == null)
+ {
+ setValue(0);
+ }
+ else
+ {
+ try
+ {
+ int newValue = Integer.parseInt(getLexicalValue());
+ if (newValue != getValue())
+ {
+ setValue(newValue);
+ }
+ }
+ catch (NumberFormatException exception)
+ {
+ setValue(0);
+ }
+ }
+ traverseToRootForAnalysis();
+ }
+ }
+
+ @Override
+ public boolean isConstraintSatisfied(Object value)
+ {
+ return value instanceof BigDecimal && ((BigDecimal)value).unscaledValue().abs().toString().length() <= getValue();
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDTotalDigitsFacetImpl clonedTotalDigitsFacet =
+ (XSDTotalDigitsFacetImpl)getXSDFactory().createXSDTotalDigitsFacet();
+ clonedTotalDigitsFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedTotalDigitsFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedTotalDigitsFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedTotalDigitsFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedTotalDigitsFacet.setElement(getElement());
+ }
+
+ clonedTotalDigitsFacet.isReconciling = shareDOM;
+ return clonedTotalDigitsFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTypeDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTypeDefinitionImpl.java
new file mode 100644
index 0000000..063677a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDTypeDefinitionImpl.java
@@ -0,0 +1,489 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getDerivationAnnotation <em>Derivation Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getAnnotations <em>Annotations</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getRootType <em>Root Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getBaseType <em>Base Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getSimpleType <em>Simple Type</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDTypeDefinitionImpl#getComplexType <em>Complex Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class XSDTypeDefinitionImpl
+ extends XSDRedefinableComponentImpl
+ implements XSDTypeDefinition
+{
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getDerivationAnnotation() <em>Derivation Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDerivationAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation derivationAnnotation;
+
+ /**
+ * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAnnotation> annotations;
+
+ public static XSDTypeDefinition createTypeDefinition(Node node)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDSimpleTypeDefinitionImpl.createSimpleTypeDefinition(node);
+ if (xsdSimpleTypeDefinition != null)
+ {
+ return xsdSimpleTypeDefinition;
+ }
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = XSDComplexTypeDefinitionImpl.createComplexTypeDefinition(node);
+ if (xsdComplexTypeDefinition != null)
+ {
+ return xsdComplexTypeDefinition;
+ }
+ return null;
+ }
+
+ protected int analysisState;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDTypeDefinitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_TYPE_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getDerivationAnnotation()
+ {
+ return derivationAnnotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDerivationAnnotation(XSDAnnotation newDerivationAnnotation)
+ {
+ if (newDerivationAnnotation != derivationAnnotation)
+ {
+ NotificationChain msgs = null;
+ if (derivationAnnotation != null)
+ msgs = ((InternalEObject)derivationAnnotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION, null, msgs);
+ if (newDerivationAnnotation != null)
+ msgs = ((InternalEObject)newDerivationAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION, null, msgs);
+ msgs = basicSetDerivationAnnotation(newDerivationAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION, newDerivationAnnotation, newDerivationAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDerivationAnnotation(XSDAnnotation newDerivationAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldDerivationAnnotation = derivationAnnotation;
+ derivationAnnotation = newDerivationAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION, oldDerivationAnnotation, newDerivationAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAnnotation> getAnnotations()
+ {
+ if (annotations == null)
+ {
+ annotations = new EObjectEList<XSDAnnotation>(XSDAnnotation.class, this, XSDPackage.XSD_TYPE_DEFINITION__ANNOTATIONS);
+ }
+ return annotations;
+ }
+
+ @Override
+ protected void patch()
+ {
+ analysisState = UNANALYZED;
+ super.patch();
+ }
+
+ @Override
+ protected void traverseToRootForAnalysis()
+ {
+ analysisState = UNANALYZED;
+ super.traverseToRootForAnalysis();
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ switch (analysisState)
+ {
+ case UNANALYZED:
+ {
+ analysisState = ANALYZING;
+
+ handleAnalysis();
+ if (analysisState == ANALYZING)
+ {
+ analysisState = ANALYZED;
+ return true;
+ }
+ else
+ {
+ return analysisState == ANALYZED;
+ }
+ }
+ case ANALYZED:
+ {
+ return true;
+ }
+ case ANALYZING:
+ case CIRCULAR:
+ default:
+ {
+ analysisState = CIRCULAR;
+ return false;
+ }
+ }
+ }
+
+ protected void handleAnalysis()
+ {
+ super.analyze();
+ }
+
+ public static XSDTypeDefinition getLowestCommonAncestor(Collection<? extends XSDTypeDefinition> xsdTypeDefinitions)
+ {
+ XSDTypeDefinition result = null;
+
+ if (!xsdTypeDefinitions.isEmpty())
+ {
+ List<List<XSDTypeDefinition>> listOfLists = new ArrayList<List<XSDTypeDefinition>>();
+ for (XSDTypeDefinition xsdTypeDefinition : xsdTypeDefinitions)
+ {
+ List<XSDTypeDefinition> list = new ArrayList<XSDTypeDefinition>();
+ listOfLists.add(list);
+
+ while (xsdTypeDefinition != null)
+ {
+ if (list.contains(xsdTypeDefinition))
+ {
+ break;
+ }
+ list.add(0, xsdTypeDefinition);
+ xsdTypeDefinition = xsdTypeDefinition.getBaseType();
+ }
+ }
+
+ List<XSDTypeDefinition> firstList = listOfLists.get(0);
+ LOOP: for (int index = 0, size = firstList.size(); index < size; ++index)
+ {
+ Object candidate = firstList.get(index);
+ for (Iterator<List<XSDTypeDefinition>> lists = listOfLists.listIterator(1); lists.hasNext(); )
+ {
+ List<XSDTypeDefinition> list = lists.next();
+ if (list.size() <= index || list.get(index) != candidate)
+ {
+ break LOOP;
+ }
+ }
+ result = (XSDTypeDefinition)candidate;
+ }
+ }
+
+ return result;
+ }
+
+ public XSDTypeDefinition getBaseType()
+ {
+ return null;
+ }
+
+ public XSDTypeDefinition getRootType()
+ {
+ return null;
+ }
+
+ public XSDSimpleTypeDefinition getSimpleType()
+ {
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated modifiable
+ */
+ public XSDParticle getComplexType()
+ {
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ case XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION:
+ return basicSetDerivationAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION:
+ return getDerivationAnnotation();
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATIONS:
+ return getAnnotations();
+ case XSDPackage.XSD_TYPE_DEFINITION__ROOT_TYPE:
+ return getRootType();
+ case XSDPackage.XSD_TYPE_DEFINITION__BASE_TYPE:
+ return getBaseType();
+ case XSDPackage.XSD_TYPE_DEFINITION__SIMPLE_TYPE:
+ return getSimpleType();
+ case XSDPackage.XSD_TYPE_DEFINITION__COMPLEX_TYPE:
+ return getComplexType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION:
+ setDerivationAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATIONS:
+ getAnnotations().clear();
+ getAnnotations().addAll((Collection<? extends XSDAnnotation>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION:
+ setDerivationAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATIONS:
+ getAnnotations().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_TYPE_DEFINITION__DERIVATION_ANNOTATION:
+ return derivationAnnotation != null;
+ case XSDPackage.XSD_TYPE_DEFINITION__ANNOTATIONS:
+ return annotations != null && !annotations.isEmpty();
+ case XSDPackage.XSD_TYPE_DEFINITION__ROOT_TYPE:
+ return getRootType() != null;
+ case XSDPackage.XSD_TYPE_DEFINITION__BASE_TYPE:
+ return getBaseType() != null;
+ case XSDPackage.XSD_TYPE_DEFINITION__SIMPLE_TYPE:
+ return getSimpleType() != null;
+ case XSDPackage.XSD_TYPE_DEFINITION__COMPLEX_TYPE:
+ return getComplexType() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public boolean isCircular()
+ {
+ return analysisState == CIRCULAR;
+ }
+
+ public XSDTypeDefinition getBadTypeDerivation(XSDTypeDefinition xsdTypeDefinition, boolean extension, boolean restriction)
+ {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDWhiteSpaceFacetImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDWhiteSpaceFacetImpl.java
new file mode 100644
index 0000000..320dfd5
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDWhiteSpaceFacetImpl.java
@@ -0,0 +1,403 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFixedFacet;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>White Space Facet</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDWhiteSpaceFacetImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDWhiteSpaceFacetImpl
+ extends XSDFixedFacetImpl
+ implements XSDWhiteSpaceFacet
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDWhiteSpace VALUE_EDEFAULT = XSDWhiteSpace.PRESERVE_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG_OFFSET = 10;
+
+ /**
+ * The flags representing the default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG_DEFAULT = VALUE_EDEFAULT.ordinal() << VALUE_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDWhiteSpace White Space}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDWhiteSpace[] VALUE_EFLAG_VALUES = XSDWhiteSpace.values();
+
+ /**
+ * The flags representing the value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EFLAG = 0x3 << VALUE_EFLAG_OFFSET;
+
+ public static XSDWhiteSpaceFacet createWhiteSpaceFacet(Node node)
+ {
+ if (XSDConstants.nodeType(node) == XSDConstants.WHITESPACE_ELEMENT)
+ {
+ XSDWhiteSpaceFacet xsdWhiteSpaceFacet = XSDFactory.eINSTANCE.createXSDWhiteSpaceFacet();
+ xsdWhiteSpaceFacet.setElement((Element)node);
+ return xsdWhiteSpaceFacet;
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDWhiteSpaceFacetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_WHITE_SPACE_FACET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDWhiteSpace getValue()
+ {
+ return VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(XSDWhiteSpace newValue)
+ {
+ XSDWhiteSpace oldValue = VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET];
+ if (newValue == null) newValue = VALUE_EDEFAULT;
+ eFlags = eFlags & ~VALUE_EFLAG | newValue.ordinal() << VALUE_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_WHITE_SPACE_FACET__VALUE, oldValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WHITE_SPACE_FACET__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WHITE_SPACE_FACET__VALUE:
+ setValue((XSDWhiteSpace)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WHITE_SPACE_FACET__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WHITE_SPACE_FACET__VALUE:
+ return (eFlags & VALUE_EFLAG) != VALUE_EFLAG_DEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (value: ");
+ result.append(VALUE_EFLAG_VALUES[(eFlags & VALUE_EFLAG) >>> VALUE_EFLAG_OFFSET]);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement = createElement(XSDConstants.WHITESPACE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ protected void validateRestriction(XSDFixedFacet xsdFixedFacet)
+ {
+ if (getValue().getValue() < ((XSDWhiteSpaceFacet)xsdFixedFacet).getValue().getValue())
+ {
+ XSDDiagnostic xsdDiagnostic =
+ reportConstraintViolation
+ (XSDConstants.PART2,
+ "whiteSpace-valid-restriction",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ new Object []
+ {
+ getLexicalValue(),
+ xsdFixedFacet.getLexicalValue(),
+ xsdFixedFacet.getSimpleTypeDefinition().getURI()
+ });
+ xsdDiagnostic.getComponents().add(xsdFixedFacet);
+ }
+ }
+
+ @Override
+ protected void validateValue()
+ {
+ XSDSimpleTypeDefinition whiteSpaceEnumeration =
+ ((XSDAttributeUse)
+ ((XSDComplexTypeDefinition)
+ getSimpleTypeDefinition().
+ getSchema().
+ getSchemaForSchema().
+ resolveElementDeclaration("whiteSpace").
+ getTypeDefinition()).
+ getAttributeContents().get(0)).
+ getAttributeDeclaration().getTypeDefinition();
+
+ checkSimpleTypeConstraint
+ (whiteSpaceEnumeration,
+ getLexicalValue(),
+ XSDConstants.PART2,
+ "element-whiteSpace",
+ getElement(),
+ XSDConstants.VALUE_ATTRIBUTE,
+ true);
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ if (eAttribute == XSDPackage.Literals.XSD_FACET__LEXICAL_VALUE)
+ {
+ String newValue = getLexicalValue();
+ XSDWhiteSpace literal = XSDWhiteSpace.get(newValue);
+ if (literal == null)
+ {
+ if (getValue() != XSDWhiteSpace.PRESERVE_LITERAL)
+ {
+ setValue(XSDWhiteSpace.PRESERVE_LITERAL);
+ }
+ }
+ else if (literal != getValue())
+ {
+ setValue(literal);
+ }
+ }
+ }
+ public String getNormalizedLiteral(String literal)
+ {
+ switch (getValue().getValue())
+ {
+ case XSDWhiteSpace.COLLAPSE:
+ {
+ StringBuffer stringBuffer = new StringBuffer();
+ boolean holdWhitespace = false;
+ for (int i = 0, length = literal.length(); i < length; ++i)
+ {
+ char character = literal.charAt(i);
+ if (Character.isWhitespace(character))
+ {
+ holdWhitespace = true;
+ }
+ else
+ {
+ if (stringBuffer.length() == 0)
+ {
+ holdWhitespace = false;
+ }
+ if (holdWhitespace)
+ {
+ holdWhitespace = false;
+ stringBuffer.append(" ");
+ }
+ stringBuffer.append(character);
+ }
+ }
+ return stringBuffer.toString();
+ }
+ case XSDWhiteSpace.REPLACE:
+ {
+ StringBuffer stringBuffer = new StringBuffer(literal);
+ for (int i = 0, length = literal.length(); i < length; ++i)
+ {
+ char character = literal.charAt(i);
+ if (Character.isWhitespace(character))
+ {
+ stringBuffer.setCharAt(i, Character.isWhitespace(character) ? ' ' : character);
+ }
+ }
+ return stringBuffer.toString();
+ }
+ default:
+ {
+ return literal;
+ }
+ }
+ }
+
+ @Override
+ public Object getEffectiveValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDWhiteSpaceFacetImpl clonedWhiteSpaceFacet =
+ (XSDWhiteSpaceFacetImpl)getXSDFactory().createXSDWhiteSpaceFacet();
+ clonedWhiteSpaceFacet.isReconciling = true;
+
+ if (getLexicalValue() != null)
+ {
+ clonedWhiteSpaceFacet.setLexicalValue(getLexicalValue());
+ }
+ if (isSetFixed())
+ {
+ clonedWhiteSpaceFacet.setFixed(isFixed());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedWhiteSpaceFacet.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedWhiteSpaceFacet.setElement(getElement());
+ }
+
+ clonedWhiteSpaceFacet.isReconciling = shareDOM;
+ return clonedWhiteSpaceFacet;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDWildcardImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDWildcardImpl.java
new file mode 100644
index 0000000..ace05a3
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDWildcardImpl.java
@@ -0,0 +1,1351 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDNamespaceConstraintCategory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDProcessContents;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Wildcard</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDWildcardImpl#getNamespaceConstraintCategory <em>Namespace Constraint Category</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDWildcardImpl#getNamespaceConstraint <em>Namespace Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDWildcardImpl#getProcessContents <em>Process Contents</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDWildcardImpl#getLexicalNamespaceConstraint <em>Lexical Namespace Constraint</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDWildcardImpl#getAnnotation <em>Annotation</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDWildcardImpl#getAnnotations <em>Annotations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDWildcardImpl
+ extends XSDTermImpl
+ implements XSDWildcard
+{
+ /**
+ * The default value of the '{@link #getNamespaceConstraintCategory() <em>Namespace Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamespaceConstraintCategory()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDNamespaceConstraintCategory NAMESPACE_CONSTRAINT_CATEGORY_EDEFAULT = XSDNamespaceConstraintCategory.ANY_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getNamespaceConstraintCategory() <em>Namespace Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getNamespaceConstraintCategory() <em>Namespace Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_DEFAULT = NAMESPACE_CONSTRAINT_CATEGORY_EDEFAULT.ordinal() << NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDNamespaceConstraintCategory Namespace Constraint Category}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDNamespaceConstraintCategory[] NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_VALUES = XSDNamespaceConstraintCategory.values();
+
+ /**
+ * The flags representing the value of the '{@link #getNamespaceConstraintCategory() <em>Namespace Constraint Category</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamespaceConstraintCategory()
+ * @generated
+ * @ordered
+ */
+ protected static final int NAMESPACE_CONSTRAINT_CATEGORY_EFLAG = 0x3 << NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET;
+
+ /**
+ * The cached value of the '{@link #getNamespaceConstraint() <em>Namespace Constraint</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamespaceConstraint()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> namespaceConstraint;
+
+ /**
+ * The default value of the '{@link #getProcessContents() <em>Process Contents</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProcessContents()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDProcessContents PROCESS_CONTENTS_EDEFAULT = XSDProcessContents.STRICT_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getProcessContents() <em>Process Contents</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int PROCESS_CONTENTS_EFLAG_OFFSET = 10;
+
+ /**
+ * The flags representing the default value of the '{@link #getProcessContents() <em>Process Contents</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int PROCESS_CONTENTS_EFLAG_DEFAULT = PROCESS_CONTENTS_EDEFAULT.ordinal() << PROCESS_CONTENTS_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDProcessContents Process Contents}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDProcessContents[] PROCESS_CONTENTS_EFLAG_VALUES = XSDProcessContents.values();
+
+ /**
+ * The flags representing the value of the '{@link #getProcessContents() <em>Process Contents</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProcessContents()
+ * @generated
+ * @ordered
+ */
+ protected static final int PROCESS_CONTENTS_EFLAG = 0x3 << PROCESS_CONTENTS_EFLAG_OFFSET;
+
+ /**
+ * The flag representing whether the Process Contents attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int PROCESS_CONTENTS_ESETFLAG = 1 << 12;
+
+ /**
+ * The cached value of the '{@link #getLexicalNamespaceConstraint() <em>Lexical Namespace Constraint</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLexicalNamespaceConstraint()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> lexicalNamespaceConstraint;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ /**
+ * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotations()
+ * @generated
+ * @ordered
+ */
+ protected EList<XSDAnnotation> annotations;
+
+ public static XSDWildcard createWildcard(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.ANY_ELEMENT:
+ case XSDConstants.ANYATTRIBUTE_ELEMENT:
+ {
+ XSDWildcard xsdWildcard = XSDFactory.eINSTANCE.createXSDWildcard();
+ xsdWildcard.setElement((Element)node);
+ return xsdWildcard;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDWildcardImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_WILDCARD;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDNamespaceConstraintCategory getNamespaceConstraintCategory()
+ {
+ return NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_VALUES[(eFlags & NAMESPACE_CONSTRAINT_CATEGORY_EFLAG) >>> NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNamespaceConstraintCategory(XSDNamespaceConstraintCategory newNamespaceConstraintCategory)
+ {
+ XSDNamespaceConstraintCategory oldNamespaceConstraintCategory = NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_VALUES[(eFlags & NAMESPACE_CONSTRAINT_CATEGORY_EFLAG) >>> NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET];
+ if (newNamespaceConstraintCategory == null) newNamespaceConstraintCategory = NAMESPACE_CONSTRAINT_CATEGORY_EDEFAULT;
+ eFlags = eFlags & ~NAMESPACE_CONSTRAINT_CATEGORY_EFLAG | newNamespaceConstraintCategory.ordinal() << NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY, oldNamespaceConstraintCategory, newNamespaceConstraintCategory));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getNamespaceConstraint()
+ {
+ if (namespaceConstraint == null)
+ {
+ namespaceConstraint = new EDataTypeUniqueEList<String>(String.class, this, XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT);
+ }
+ return namespaceConstraint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDProcessContents getProcessContents()
+ {
+ return PROCESS_CONTENTS_EFLAG_VALUES[(eFlags & PROCESS_CONTENTS_EFLAG) >>> PROCESS_CONTENTS_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProcessContents(XSDProcessContents newProcessContents)
+ {
+ XSDProcessContents oldProcessContents = PROCESS_CONTENTS_EFLAG_VALUES[(eFlags & PROCESS_CONTENTS_EFLAG) >>> PROCESS_CONTENTS_EFLAG_OFFSET];
+ if (newProcessContents == null) newProcessContents = PROCESS_CONTENTS_EDEFAULT;
+ eFlags = eFlags & ~PROCESS_CONTENTS_EFLAG | newProcessContents.ordinal() << PROCESS_CONTENTS_EFLAG_OFFSET;
+ boolean oldProcessContentsESet = (eFlags & PROCESS_CONTENTS_ESETFLAG) != 0;
+ eFlags |= PROCESS_CONTENTS_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_WILDCARD__PROCESS_CONTENTS, oldProcessContents, newProcessContents, !oldProcessContentsESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetProcessContents()
+ {
+ XSDProcessContents oldProcessContents = PROCESS_CONTENTS_EFLAG_VALUES[(eFlags & PROCESS_CONTENTS_EFLAG) >>> PROCESS_CONTENTS_EFLAG_OFFSET];
+ boolean oldProcessContentsESet = (eFlags & PROCESS_CONTENTS_ESETFLAG) != 0;
+ eFlags = eFlags & ~PROCESS_CONTENTS_EFLAG | PROCESS_CONTENTS_EFLAG_DEFAULT;
+ eFlags &= ~PROCESS_CONTENTS_ESETFLAG;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, XSDPackage.XSD_WILDCARD__PROCESS_CONTENTS, oldProcessContents, PROCESS_CONTENTS_EDEFAULT, oldProcessContentsESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetProcessContents()
+ {
+ return (eFlags & PROCESS_CONTENTS_ESETFLAG) != 0;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getLexicalNamespaceConstraint()
+ {
+ if (lexicalNamespaceConstraint == null)
+ {
+ lexicalNamespaceConstraint = new EDataTypeUniqueEList.Unsettable<String>(String.class, this, XSDPackage.XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT);
+ }
+ return lexicalNamespaceConstraint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetLexicalNamespaceConstraint()
+ {
+ if (lexicalNamespaceConstraint != null) ((InternalEList.Unsettable<?>)lexicalNamespaceConstraint).unset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetLexicalNamespaceConstraint()
+ {
+ return lexicalNamespaceConstraint != null && ((InternalEList.Unsettable<?>)lexicalNamespaceConstraint).isSet();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_WILDCARD__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_WILDCARD__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_WILDCARD__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_WILDCARD__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<XSDAnnotation> getAnnotations()
+ {
+ if (annotations == null)
+ {
+ annotations = new EObjectEList<XSDAnnotation>(XSDAnnotation.class, this, XSDPackage.XSD_WILDCARD__ANNOTATIONS);
+ }
+ return annotations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WILDCARD__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY:
+ return getNamespaceConstraintCategory();
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT:
+ return getNamespaceConstraint();
+ case XSDPackage.XSD_WILDCARD__PROCESS_CONTENTS:
+ return getProcessContents();
+ case XSDPackage.XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT:
+ return getLexicalNamespaceConstraint();
+ case XSDPackage.XSD_WILDCARD__ANNOTATION:
+ return getAnnotation();
+ case XSDPackage.XSD_WILDCARD__ANNOTATIONS:
+ return getAnnotations();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY:
+ setNamespaceConstraintCategory((XSDNamespaceConstraintCategory)newValue);
+ return;
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT:
+ getNamespaceConstraint().clear();
+ getNamespaceConstraint().addAll((Collection<? extends String>)newValue);
+ return;
+ case XSDPackage.XSD_WILDCARD__PROCESS_CONTENTS:
+ setProcessContents((XSDProcessContents)newValue);
+ return;
+ case XSDPackage.XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT:
+ getLexicalNamespaceConstraint().clear();
+ getLexicalNamespaceConstraint().addAll((Collection<? extends String>)newValue);
+ return;
+ case XSDPackage.XSD_WILDCARD__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ case XSDPackage.XSD_WILDCARD__ANNOTATIONS:
+ getAnnotations().clear();
+ getAnnotations().addAll((Collection<? extends XSDAnnotation>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY:
+ setNamespaceConstraintCategory(NAMESPACE_CONSTRAINT_CATEGORY_EDEFAULT);
+ return;
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT:
+ getNamespaceConstraint().clear();
+ return;
+ case XSDPackage.XSD_WILDCARD__PROCESS_CONTENTS:
+ unsetProcessContents();
+ return;
+ case XSDPackage.XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT:
+ unsetLexicalNamespaceConstraint();
+ return;
+ case XSDPackage.XSD_WILDCARD__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ case XSDPackage.XSD_WILDCARD__ANNOTATIONS:
+ getAnnotations().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT_CATEGORY:
+ return (eFlags & NAMESPACE_CONSTRAINT_CATEGORY_EFLAG) != NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_DEFAULT;
+ case XSDPackage.XSD_WILDCARD__NAMESPACE_CONSTRAINT:
+ return namespaceConstraint != null && !namespaceConstraint.isEmpty();
+ case XSDPackage.XSD_WILDCARD__PROCESS_CONTENTS:
+ return isSetProcessContents();
+ case XSDPackage.XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT:
+ return isSetLexicalNamespaceConstraint();
+ case XSDPackage.XSD_WILDCARD__ANNOTATION:
+ return annotation != null;
+ case XSDPackage.XSD_WILDCARD__ANNOTATIONS:
+ return annotations != null && !annotations.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (namespaceConstraintCategory: ");
+ result.append(NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_VALUES[(eFlags & NAMESPACE_CONSTRAINT_CATEGORY_EFLAG) >>> NAMESPACE_CONSTRAINT_CATEGORY_EFLAG_OFFSET]);
+ result.append(", namespaceConstraint: ");
+ result.append(namespaceConstraint);
+ result.append(", processContents: ");
+ if ((eFlags & PROCESS_CONTENTS_ESETFLAG) != 0) result.append(PROCESS_CONTENTS_EFLAG_VALUES[(eFlags & PROCESS_CONTENTS_EFLAG) >>> PROCESS_CONTENTS_EFLAG_OFFSET]); else result.append("<unset>");
+ result.append(", lexicalNamespaceConstraint: ");
+ result.append(lexicalNamespaceConstraint);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement =
+ createElement(getContainer() instanceof XSDParticle ? XSDConstants.ANY_ELEMENT : XSDConstants.ANYATTRIBUTE_ELEMENT);
+ setElement(newElement);
+ return newElement;
+ }
+
+ @Override
+ public void patch()
+ {
+ super.patch();
+ for (String string : getLexicalNamespaceConstraint())
+ {
+ if (!string.startsWith("##"))
+ {
+ ((XSDSchemaImpl)getSchema()).resolveSchema(string);
+ }
+ }
+ }
+
+ @Override
+ protected boolean analyze()
+ {
+ super.analyze();
+
+ XSDSchema xsdSchema = getSchema();
+ XSDNamespaceConstraintCategory newNamespaceConstraintCategory = XSDNamespaceConstraintCategory.ANY_LITERAL;
+ List<String> newNamespaceConstraint = new ArrayList<String>();
+
+ for (String string : getLexicalNamespaceConstraint())
+ {
+ if (string.equals("##any"))
+ {
+ break;
+ }
+ else if (string.equals("##other"))
+ {
+ newNamespaceConstraintCategory = XSDNamespaceConstraintCategory.NOT_LITERAL;
+ String targetNamespace = xsdSchema.getTargetNamespace();
+ newNamespaceConstraint.add(targetNamespace);
+ break;
+ }
+ else if (string.equals("##targetNamespace"))
+ {
+ newNamespaceConstraintCategory = XSDNamespaceConstraintCategory.SET_LITERAL;
+ String targetNamespace = xsdSchema.getTargetNamespace();
+ newNamespaceConstraint.add(targetNamespace);
+ }
+ else if (string.equals("##local"))
+ {
+ newNamespaceConstraintCategory = XSDNamespaceConstraintCategory.SET_LITERAL;
+ newNamespaceConstraint.add(null);
+ }
+ else
+ {
+ newNamespaceConstraintCategory = XSDNamespaceConstraintCategory.SET_LITERAL;
+ newNamespaceConstraint.add(string);
+ }
+ }
+
+ if (getNamespaceConstraintCategory() != newNamespaceConstraintCategory)
+ {
+ setNamespaceConstraintCategory(newNamespaceConstraintCategory);
+ }
+
+ EList<String> theNamespaceConstraint = getNamespaceConstraint();
+ List<String> remainingNamespaceConstraint = new ArrayList<String>(theNamespaceConstraint);
+ remainingNamespaceConstraint.removeAll(newNamespaceConstraint);
+ if (!remainingNamespaceConstraint.isEmpty())
+ {
+ theNamespaceConstraint.removeAll(remainingNamespaceConstraint);
+ }
+ if (!newNamespaceConstraint.isEmpty())
+ {
+ setListContentAndOrder(theNamespaceConstraint, newNamespaceConstraint);
+ }
+
+ return true;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ String anchor = null;
+ String contentType = null;
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ String [] attributes = null;
+ if (getContainer() instanceof XSDParticle)
+ {
+ anchor = "element-any";
+ contentType = "wildcard";
+ attributes =
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ XSDConstants.NAMESPACE_ATTRIBUTE,
+ XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
+ };
+
+ checkAttributeTypeConstraint
+ (contentType,
+ "maxOccurs",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.MAXOCCURS_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (contentType,
+ "minOccurs",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.MINOCCURS_ATTRIBUTE,
+ false);
+ }
+ else
+ {
+ anchor = "element-anyAttribute";
+ contentType = "wildcard";
+ attributes =
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.NAMESPACE_ATTRIBUTE,
+ XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
+ };
+ }
+
+ checkAttributes(XSDConstants.PART1, anchor, theElement, attributes);
+ checkComplexContent(contentType, XSDConstants.PART1, anchor, theElement);
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (contentType,
+ "namespace",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.NAMESPACE_ATTRIBUTE,
+ false);
+
+ checkAttributeTypeConstraint
+ (contentType,
+ "processContents",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
+ false);
+ }
+ }
+
+ @Override
+ protected boolean isUpdatingDOM()
+ {
+ // EATM I think this is needed.
+ return
+ super.isUpdatingDOM() ||
+ getContainer() instanceof XSDParticle &&
+ ((XSDConcreteComponentImpl)getContainer()).isUpdatingDOM();
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ if (changedElement.hasAttributeNS(null, XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
+ {
+ XSDProcessContents newProcessContents =
+ XSDProcessContents.get(changedElement.getAttributeNS(null, XSDConstants.PROCESSCONTENTS_ATTRIBUTE));
+ if (!isSetProcessContents() || newProcessContents != getProcessContents())
+ {
+ setProcessContents(newProcessContents);
+ }
+ }
+ else if (isSetProcessContents())
+ {
+ unsetProcessContents();
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.NAMESPACE_ATTRIBUTE))
+ {
+ String newLexicalNamespaceConstraint = changedElement.getAttributeNS(null, XSDConstants.NAMESPACE_ATTRIBUTE);
+ if (!newLexicalNamespaceConstraint.equals(getStringLexicalNamespaceConstraint()))
+ {
+ setStringLexicalNamespaceConstraint(newLexicalNamespaceConstraint);
+ }
+ }
+ else if (isSetLexicalNamespaceConstraint())
+ {
+ unsetLexicalNamespaceConstraint();
+ }
+ }
+ }
+
+ @Override
+ protected void handleUnreconciledElement(Element child, List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ if (XSDConstants.nodeType(child) == XSDConstants.ANNOTATION_ELEMENT)
+ {
+ XSDAnnotation xsdAnnotation = XSDAnnotationImpl.createAnnotation(child);
+ newContents.add(xsdAnnotation);
+ }
+ }
+
+ @Override
+ protected void handleReconciliation(List<XSDConcreteComponent> newContents, List<XSDConcreteComponent> remainingContents)
+ {
+ handleAnnotationReconciliation(XSDPackage.Literals.XSD_WILDCARD__ANNOTATION, newContents, remainingContents);
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ if (isReconciling)
+ {
+ return;
+ }
+
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_WILDCARD__LEXICAL_NAMESPACE_CONSTRAINT)
+ {
+ if (!isSetLexicalNamespaceConstraint())
+ {
+ niceSetAttribute(theElement, XSDConstants.NAMESPACE_ATTRIBUTE, null);
+ }
+ else
+ {
+ List<String> theLexicalNamespaceConstraint = getLexicalNamespaceConstraint();
+ StringBuffer result = new StringBuffer();
+ for (String value : theLexicalNamespaceConstraint)
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(value);
+ }
+
+ niceSetAttribute(theElement, XSDConstants.NAMESPACE_ATTRIBUTE, result.toString());
+ }
+ if (eAttribute != null)
+ {
+ traverseToRootForPatching();
+ }
+ }
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_WILDCARD__PROCESS_CONTENTS)
+ {
+ XSDProcessContents theProcessContents = getProcessContents();
+ niceSetAttribute
+ (theElement, XSDConstants.PROCESSCONTENTS_ATTRIBUTE, isSetProcessContents() ? theProcessContents.getName() : null);
+ }
+ }
+ }
+
+ @Override
+ protected void adoptContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.adoptContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_WILDCARD__ANNOTATION)
+ {
+ getAnnotations().add((XSDAnnotation)xsdConcreteComponent);
+ }
+ }
+
+ @Override
+ protected void orphanContent(EReference eReference, XSDConcreteComponent xsdConcreteComponent)
+ {
+ super.orphanContent(eReference, xsdConcreteComponent);
+ if (eReference == XSDPackage.Literals.XSD_WILDCARD__ANNOTATION)
+ {
+ int index = getAnnotations().indexOf(xsdConcreteComponent);
+ if (index >= 0)
+ {
+ getAnnotations().remove(index);
+ }
+ }
+ }
+
+ public String getStringNamespaceConstraint()
+ {
+ StringBuffer result = new StringBuffer();
+ for (String value : getNamespaceConstraint())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ if (value == null || value.length() == 0)
+ {
+ result.append("'absent'");
+ }
+ else
+ {
+ result.append(value);
+ }
+ }
+
+ return result.toString();
+ }
+
+ public String getStringLexicalNamespaceConstraint()
+ {
+ if (isSetLexicalNamespaceConstraint())
+ {
+ StringBuffer result = new StringBuffer();
+ for (String value : getLexicalNamespaceConstraint())
+ {
+ if (result.length() != 0)
+ {
+ result.append(' ');
+ }
+ result.append(value);
+ }
+
+ return result.toString();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setStringLexicalNamespaceConstraint(String lexicalNamespaceConstraint)
+ {
+ if (lexicalNamespaceConstraint == null)
+ {
+ unsetLexicalNamespaceConstraint();
+ }
+ else
+ {
+ List<String> newLexicalNamespaceConstraint = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(lexicalNamespaceConstraint); stringTokenizer.hasMoreTokens(); )
+ {
+ String token = stringTokenizer.nextToken();
+ newLexicalNamespaceConstraint.add(token);
+ }
+ if (!newLexicalNamespaceConstraint.equals(getLexicalNamespaceConstraint()))
+ {
+ Collection<String> oldContents = new ArrayList<String>(getLexicalNamespaceConstraint());
+ oldContents.removeAll(newLexicalNamespaceConstraint);
+ if (!oldContents.isEmpty())
+ {
+ getLexicalNamespaceConstraint().removeAll(oldContents);
+ }
+ setListContentAndOrder(getLexicalNamespaceConstraint(), newLexicalNamespaceConstraint);
+ }
+ else if (newLexicalNamespaceConstraint.isEmpty() && !isSetLexicalNamespaceConstraint())
+ {
+ getLexicalNamespaceConstraint().clear();
+ }
+ }
+ }
+
+ public boolean isWildcardSubset(XSDWildcard superSetWildcard)
+
+ {
+ // Clause 1
+ //
+ if (XSDNamespaceConstraintCategory.ANY_LITERAL == superSetWildcard.getNamespaceConstraintCategory())
+ {
+ return true;
+ }
+ // Clause 2
+ //
+ else if (XSDNamespaceConstraintCategory.NOT_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == superSetWildcard.getNamespaceConstraintCategory() &&
+ getNamespaceConstraint().equals(superSetWildcard.getNamespaceConstraint()))
+ {
+ return true;
+ }
+ // Clauses 3.1 and 3.2
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == getNamespaceConstraintCategory() &&
+ (XSDNamespaceConstraintCategory.SET_LITERAL == superSetWildcard.getNamespaceConstraintCategory() &&
+ superSetWildcard.getNamespaceConstraint().containsAll(getNamespaceConstraint()) ||
+ XSDNamespaceConstraintCategory.NOT_LITERAL == superSetWildcard.getNamespaceConstraintCategory() &&
+ !getNamespaceConstraint().containsAll(superSetWildcard.getNamespaceConstraint())))
+ {
+ return true;
+ }
+ // Failure
+ //
+ else
+ {
+ return false;
+ }
+ }
+
+ public XSDWildcard attributeWildcardUnion(XSDWildcard otherWildcard)
+ {
+ // Clause 1
+ //
+ if (getNamespaceConstraintCategory() == otherWildcard.getNamespaceConstraintCategory() &&
+ getNamespaceConstraint().containsAll(otherWildcard.getNamespaceConstraint()) &&
+ otherWildcard.getNamespaceConstraint().containsAll(getNamespaceConstraint()))
+ {
+ return this;
+ }
+ // Clause 2
+ //
+ else if (XSDNamespaceConstraintCategory.ANY_LITERAL == getNamespaceConstraintCategory())
+ {
+ return this;
+ }
+ // Clause 2
+ //
+ else if (XSDNamespaceConstraintCategory.ANY_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+ {
+ return otherWildcard;
+ }
+ // Clause 3.
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.SET_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+ {
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ if (isSetProcessContents())
+ {
+ result.setProcessContents(getProcessContents());
+ }
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.SET_LITERAL);
+ List<String> newNamespaceConstraint = new ArrayList<String>(getNamespaceConstraint());
+ for (String value : otherWildcard.getNamespaceConstraint())
+ {
+ if (!newNamespaceConstraint.contains(value))
+ {
+ newNamespaceConstraint.add(value);
+ }
+ }
+ result.getNamespaceConstraint().addAll(newNamespaceConstraint);
+ return result;
+ }
+ // Clause 4
+ //
+ else if (XSDNamespaceConstraintCategory.NOT_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == otherWildcard.getNamespaceConstraintCategory() &&
+ !getNamespaceConstraint().equals(otherWildcard.getNamespaceConstraint()))
+ {
+ return null;
+ }
+ // Clause 5
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+
+ {
+ // Clause 5.2
+ //
+ if (getNamespaceConstraint().containsAll(otherWildcard.getNamespaceConstraint()))
+ {
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ if (isSetProcessContents())
+ {
+ result.setProcessContents(getProcessContents());
+ }
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.ANY_LITERAL);
+ return result;
+ }
+ // Clause 5.1
+ //
+ else
+ {
+ return otherWildcard;
+ }
+ }
+ // Clause 5
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == otherWildcard.getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == getNamespaceConstraintCategory())
+ {
+ // Clause 5.2
+ //
+ if (otherWildcard.getNamespaceConstraint().containsAll(getNamespaceConstraint()))
+ {
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ if (isSetProcessContents())
+ {
+ result.setProcessContents(getProcessContents());
+ }
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.ANY_LITERAL);
+ return result;
+ }
+ // Clause 5.1
+ //
+ else
+ {
+ return this;
+ }
+ }
+ // Failure
+ //
+ else
+ {
+ // EATM return a bad placeholder.
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.NOT_LITERAL);
+ return result;
+ // return null;
+ }
+ }
+
+ public XSDWildcard attributeWildcardIntersection(XSDWildcard otherWildcard)
+ {
+ // Clause 1
+ //
+ if (getNamespaceConstraintCategory() == otherWildcard.getNamespaceConstraintCategory() &&
+ getNamespaceConstraint().containsAll(otherWildcard.getNamespaceConstraint()) &&
+ otherWildcard.getNamespaceConstraint().containsAll(getNamespaceConstraint()))
+ {
+ return this;
+ }
+ // Clause 2
+ //
+ else if (XSDNamespaceConstraintCategory.ANY_LITERAL == getNamespaceConstraintCategory())
+ {
+ return otherWildcard;
+ }
+ // Clause 2
+ //
+ else if (XSDNamespaceConstraintCategory.ANY_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+ {
+ return this;
+ }
+ // Clause 3
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+
+ {
+ // Clause 3 minus
+ //
+ if (getNamespaceConstraint().containsAll(otherWildcard.getNamespaceConstraint()) || getNamespaceConstraint().contains(null))
+ {
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ if (isSetProcessContents())
+ {
+ result.setProcessContents(getProcessContents());
+ }
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.SET_LITERAL);
+ List<String> newNamespaceConstraint = new ArrayList<String>(getNamespaceConstraint());
+ newNamespaceConstraint.removeAll(otherWildcard.getNamespaceConstraint());
+ newNamespaceConstraint.remove(null);
+ result.getNamespaceConstraint().addAll(newNamespaceConstraint);
+ return result;
+ }
+ // Clause 3 without minus
+ //
+ else
+ {
+ return this;
+ }
+ }
+ // Clause 3
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == otherWildcard.getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == getNamespaceConstraintCategory())
+ {
+ // Clause 3 with minus
+ //
+ if (otherWildcard.getNamespaceConstraint().containsAll(getNamespaceConstraint()) || otherWildcard.getNamespaceConstraint().contains(null))
+ {
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ if (isSetProcessContents())
+ {
+ result.setProcessContents(getProcessContents());
+ }
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.SET_LITERAL);
+ List<String> newNamespaceConstraint = new ArrayList<String>(otherWildcard.getNamespaceConstraint());
+ newNamespaceConstraint.removeAll(getNamespaceConstraint());
+ newNamespaceConstraint.remove(null);
+ result.getNamespaceConstraint().addAll(newNamespaceConstraint);
+ return result;
+ }
+ // Clause 3 without minus
+ //
+ else
+ {
+ return otherWildcard;
+ }
+ }
+ // Clause 4
+ //
+ else if (XSDNamespaceConstraintCategory.SET_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.SET_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+ {
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ if (isSetProcessContents())
+ {
+ result.setProcessContents(getProcessContents());
+ }
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.SET_LITERAL);
+ List<String> newNamespaceConstraint = new ArrayList<String>(getNamespaceConstraint());
+ newNamespaceConstraint.retainAll(otherWildcard.getNamespaceConstraint());
+ result.getNamespaceConstraint().addAll(newNamespaceConstraint);
+ return result;
+ }
+ // Clause 5
+ //
+ else if (XSDNamespaceConstraintCategory.NOT_LITERAL == getNamespaceConstraintCategory() &&
+ XSDNamespaceConstraintCategory.NOT_LITERAL == otherWildcard.getNamespaceConstraintCategory())
+ {
+ if (getNamespaceConstraint().size() == 1 && getNamespaceConstraint().contains(null))
+ {
+ return otherWildcard;
+ }
+ else if (otherWildcard.getNamespaceConstraint().size() == 1 && otherWildcard.getNamespaceConstraint().contains(null))
+ {
+ return this;
+ }
+ else
+ {
+ // EATM return a bad placeholder.
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.NOT_LITERAL);
+ return result;
+ }
+ }
+ // Failure
+ //
+ else
+ {
+ // EATM return a bad placeholder.
+ XSDWildcard result = getXSDFactory().createXSDWildcard();
+ result.setNamespaceConstraintCategory(XSDNamespaceConstraintCategory.NOT_LITERAL);
+ return result;
+ // return null;
+ }
+ }
+
+ public void setLike(XSDWildcard xsdWildcard)
+ {
+ if (getNamespaceConstraintCategory() != xsdWildcard.getNamespaceConstraintCategory())
+ {
+ setNamespaceConstraintCategory(xsdWildcard.getNamespaceConstraintCategory());
+ }
+
+ EList<String> theNamespaceConstraint = getNamespaceConstraint();
+ EList<String> newNamespaceConstraint = xsdWildcard.getNamespaceConstraint();
+ if (!theNamespaceConstraint.containsAll(newNamespaceConstraint) ||
+ !newNamespaceConstraint.containsAll(theNamespaceConstraint))
+ {
+ List<String> remainingNamespaceConstraint = new ArrayList<String>(theNamespaceConstraint);
+ remainingNamespaceConstraint.removeAll(newNamespaceConstraint);
+ if (!remainingNamespaceConstraint.isEmpty())
+ {
+ theNamespaceConstraint.removeAll(remainingNamespaceConstraint);
+ }
+ if (!newNamespaceConstraint.isEmpty())
+ {
+ setListContentAndOrder(theNamespaceConstraint, newNamespaceConstraint);
+ }
+ }
+
+ if (xsdWildcard.isSetProcessContents())
+ {
+ if (getProcessContents() != xsdWildcard.getProcessContents())
+ {
+ setProcessContents(xsdWildcard.getProcessContents());
+ }
+ }
+ else
+ {
+ unsetProcessContents();
+ }
+ }
+
+ public boolean allows(String namespace)
+ {
+ switch (getNamespaceConstraintCategory().getValue())
+ {
+ case XSDNamespaceConstraintCategory.ANY:
+ {
+ return true;
+ }
+ case XSDNamespaceConstraintCategory.NOT:
+ {
+ return namespace != null && !getNamespaceConstraint().contains(namespace);
+ }
+ case XSDNamespaceConstraintCategory.SET:
+ {
+ return getNamespaceConstraint().contains(namespace);
+ }
+ default:
+ {
+ return false;
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDWildcardImpl clonedWildcard =
+ (XSDWildcardImpl)getXSDFactory().createXSDWildcard();
+ clonedWildcard.isReconciling = true;
+
+ if (isSetLexicalNamespaceConstraint())
+ {
+ if (!getLexicalNamespaceConstraint().isEmpty())
+ {
+ clonedWildcard.getLexicalNamespaceConstraint().addAll(getLexicalNamespaceConstraint());
+ }
+ else
+ {
+ clonedWildcard.getLexicalNamespaceConstraint().clear();
+ }
+ }
+
+ if (isSetProcessContents())
+ {
+ clonedWildcard.setProcessContents(getProcessContents());
+ }
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedWildcard.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedWildcard.setElement(getElement());
+ }
+
+ clonedWildcard.isReconciling = shareDOM;
+ return clonedWildcard;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDXPathDefinitionImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDXPathDefinitionImpl.java
new file mode 100644
index 0000000..4986245
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/XSDXPathDefinitionImpl.java
@@ -0,0 +1,533 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl;
+
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.XSDXPathVariety;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>XPath Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.xsd.impl.XSDXPathDefinitionImpl#getVariety <em>Variety</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDXPathDefinitionImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.xsd.impl.XSDXPathDefinitionImpl#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class XSDXPathDefinitionImpl
+ extends XSDComponentImpl
+ implements XSDXPathDefinition
+{
+ /**
+ * The default value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariety()
+ * @generated
+ * @ordered
+ */
+ protected static final XSDXPathVariety VARIETY_EDEFAULT = XSDXPathVariety.SELECTOR_LITERAL;
+
+ /**
+ * The offset of the flags representing the value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_EFLAG_OFFSET = 8;
+
+ /**
+ * The flags representing the default value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_EFLAG_DEFAULT = VARIETY_EDEFAULT.ordinal() << VARIETY_EFLAG_OFFSET;
+
+ /**
+ * The array of enumeration values for '{@link XSDXPathVariety XPath Variety}'
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ private static final XSDXPathVariety[] VARIETY_EFLAG_VALUES = XSDXPathVariety.values();
+
+ /**
+ * The flag representing the value of the '{@link #getVariety() <em>Variety</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariety()
+ * @generated
+ * @ordered
+ */
+ protected static final int VARIETY_EFLAG = 1 << VARIETY_EFLAG_OFFSET;
+
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnnotation()
+ * @generated
+ * @ordered
+ */
+ protected XSDAnnotation annotation;
+
+ public static XSDXPathDefinition createXPathDefinition(Node node)
+ {
+ switch (XSDConstants.nodeType(node))
+ {
+ case XSDConstants.SELECTOR_ELEMENT:
+ case XSDConstants.FIELD_ELEMENT:
+ {
+ XSDXPathDefinition xsdXPathDefinition = XSDFactory.eINSTANCE.createXSDXPathDefinition();
+ xsdXPathDefinition.setElement((Element)node);
+ return xsdXPathDefinition;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDXPathDefinitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return XSDPackage.Literals.XSD_XPATH_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDXPathVariety getVariety()
+ {
+ return VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVariety(XSDXPathVariety newVariety)
+ {
+ XSDXPathVariety oldVariety = VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET];
+ if (newVariety == null) newVariety = VARIETY_EDEFAULT;
+ eFlags = eFlags & ~VARIETY_EFLAG | newVariety.ordinal() << VARIETY_EFLAG_OFFSET;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_XPATH_DEFINITION__VARIETY, oldVariety, newVariety));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue)
+ {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_XPATH_DEFINITION__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAnnotation getAnnotation()
+ {
+ return annotation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAnnotation(XSDAnnotation newAnnotation)
+ {
+ if (newAnnotation != annotation)
+ {
+ NotificationChain msgs = null;
+ if (annotation != null)
+ msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION, null, msgs);
+ if (newAnnotation != null)
+ msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION, null, msgs);
+ msgs = basicSetAnnotation(newAnnotation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION, newAnnotation, newAnnotation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION:
+ return basicSetAnnotation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAnnotation(XSDAnnotation newAnnotation, NotificationChain msgs)
+ {
+ XSDAnnotation oldAnnotation = annotation;
+ annotation = newAnnotation;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION, oldAnnotation, newAnnotation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_XPATH_DEFINITION__VARIETY:
+ return getVariety();
+ case XSDPackage.XSD_XPATH_DEFINITION__VALUE:
+ return getValue();
+ case XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION:
+ return getAnnotation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_XPATH_DEFINITION__VARIETY:
+ setVariety((XSDXPathVariety)newValue);
+ return;
+ case XSDPackage.XSD_XPATH_DEFINITION__VALUE:
+ setValue((String)newValue);
+ return;
+ case XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_XPATH_DEFINITION__VARIETY:
+ setVariety(VARIETY_EDEFAULT);
+ return;
+ case XSDPackage.XSD_XPATH_DEFINITION__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION:
+ setAnnotation((XSDAnnotation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case XSDPackage.XSD_XPATH_DEFINITION__VARIETY:
+ return (eFlags & VARIETY_EFLAG) != VARIETY_EFLAG_DEFAULT;
+ case XSDPackage.XSD_XPATH_DEFINITION__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case XSDPackage.XSD_XPATH_DEFINITION__ANNOTATION:
+ return annotation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (variety: ");
+ result.append(VARIETY_EFLAG_VALUES[(eFlags & VARIETY_EFLAG) >>> VARIETY_EFLAG_OFFSET]);
+ result.append(", value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public Element createElement()
+ {
+ Element newElement =
+ createElement
+ (XSDXPathVariety.SELECTOR_LITERAL == getVariety() ?
+ XSDConstants.SELECTOR_ELEMENT :
+ XSDConstants.FIELD_ELEMENT);
+ if (newElement != null)
+ {
+ newElement.setAttributeNS(null, XSDConstants.XPATH_ATTRIBUTE, getValue());
+
+ setElement(newElement);
+ }
+ return newElement;
+ }
+
+ @Override
+ public void validate()
+ {
+ super.validate();
+
+ String anchor = null;
+ String elementName = null;
+ switch (getVariety().getValue())
+ {
+ case XSDXPathVariety.FIELD:
+ {
+ anchor = "element-field";
+ elementName = "field";
+ break;
+ }
+ case XSDXPathVariety.SELECTOR:
+ {
+ anchor = "element-selector";
+ elementName = "selector";
+ break;
+ }
+ }
+
+ Element theElement = getElement();
+ if (theElement != null)
+ {
+ checkAttributes
+ (XSDConstants.PART1,
+ anchor,
+ theElement,
+ new String []
+ {
+ XSDConstants.ID_ATTRIBUTE,
+ XSDConstants.XPATH_ATTRIBUTE
+ });
+
+ checkBuiltInTypeConstraint
+ ("ID",
+ null,
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.ID_ATTRIBUTE,
+ false);
+
+ checkComplexContent("annotated", XSDConstants.PART1, anchor, theElement);
+ }
+
+ checkAttributeTypeConstraint
+ ((XSDComplexTypeDefinition)getSchema().getSchemaForSchema().resolveElementDeclaration(elementName).getTypeDefinition(),
+ XSDConstants.XPATH_ATTRIBUTE,
+ getValue(),
+ XSDConstants.PART1,
+ anchor,
+ theElement,
+ XSDConstants.XPATH_ATTRIBUTE,
+ true);
+ }
+
+ @Override
+ protected void reconcileAttributes(Element changedElement)
+ {
+ super.reconcileAttributes(changedElement);
+
+ if (changedElement == getElement())
+ {
+ XSDXPathVariety newVariety = XSDXPathVariety.get(changedElement.getLocalName());
+ if (newVariety != getVariety())
+ {
+ setVariety(newVariety);
+ }
+
+ if (changedElement.hasAttributeNS(null, XSDConstants.XPATH_ATTRIBUTE))
+ {
+ String newValue = changedElement.getAttributeNS(null, XSDConstants.XPATH_ATTRIBUTE);
+ if (newValue == null || !newValue.equals(getValue()))
+ {
+ setValue(newValue);
+ }
+ }
+ else if (getValue() != null)
+ {
+ setValue(null);
+ }
+ }
+ }
+
+ @Override
+ protected void changeAttribute(EAttribute eAttribute)
+ {
+ super.changeAttribute(eAttribute);
+ Element theElement = getElement();
+ if (eAttribute == null || eAttribute == XSDPackage.Literals.XSD_XPATH_DEFINITION__VARIETY)
+ {
+ if (theElement != null && eAttribute != null && !isReconciling)
+ {
+ Element newElement =
+ createElement
+ (XSDXPathVariety.SELECTOR_LITERAL == getVariety() ?
+ XSDConstants.SELECTOR_ELEMENT :
+ XSDConstants.FIELD_ELEMENT);
+
+ forceReplace(newElement, theElement);
+ setElement(newElement);
+ }
+ }
+ }
+
+ @Override
+ public XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM)
+ {
+ XSDXPathDefinitionImpl clonedXPathDefinition =
+ (XSDXPathDefinitionImpl)getXSDFactory().createXSDXPathDefinition();
+ clonedXPathDefinition.isReconciling = true;
+
+ clonedXPathDefinition.setVariety(getVariety());
+ clonedXPathDefinition.setValue(getValue());
+
+ if (deep)
+ {
+ if (getAnnotation() != null)
+ {
+ clonedXPathDefinition.setAnnotation((XSDAnnotation)getAnnotation().cloneConcreteComponent(deep, shareDOM));
+ }
+ }
+
+ if (shareDOM && getElement() != null)
+ {
+ clonedXPathDefinition.setElement(getElement());
+ }
+
+ clonedXPathDefinition.isReconciling = shareDOM;
+ return clonedXPathDefinition;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/package.html b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/package.html
new file mode 100644
index 0000000..f08bccc
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/package.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+-->
+</head>
+<body>
+
+This provides an implementation of the API for XML Schema;
+it is considered internal and the Javadoc is incomplete.
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDAnySimpleType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDAnySimpleType.java
new file mode 100644
index 0000000..b1300e0
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDAnySimpleType.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+
+import java.util.Arrays;
+
+import org.eclipse.emf.ecore.xml.type.internal.DataValue.Base64;
+import org.eclipse.emf.ecore.xml.type.internal.DataValue.HexBin;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl;
+import org.eclipse.xsd.util.XSDUtil;
+
+
+public class XSDAnySimpleType
+{
+ public static class ByteSequence implements XSDUtil.ByteSequence
+ {
+ protected final XSDAnySimpleType xsdAnySimpleType;
+ protected final byte [] bytes;
+ protected String canonical;
+
+ public ByteSequence(XSDAnySimpleType xsdAnySimpleType, byte [] bytes)
+ {
+ this.xsdAnySimpleType = xsdAnySimpleType;
+ this.bytes = bytes;
+ }
+
+ public byte [] getBytes()
+ {
+ return bytes;
+ }
+
+ @Override
+ public boolean equals(Object that)
+ {
+ if (that == this)
+ {
+ return true;
+ }
+ else if (that instanceof ByteSequence)
+ {
+ return Arrays.equals(this.bytes, ((ByteSequence)that).bytes);
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int hashCode = 1;
+ for (int i = 0; i < bytes.length; ++i)
+ {
+ byte theByte = bytes[i];
+ hashCode = 31 * hashCode + theByte;
+ }
+ return hashCode;
+ }
+
+ @Override
+ public String toString()
+ {
+ if (canonical == null)
+ {
+ canonical = Base64.encode(bytes);
+ }
+ return canonical;
+ }
+ }
+
+ public static class HexSequence extends ByteSequence
+ {
+ public HexSequence(XSDAnySimpleType xsdAnySimpleType, byte [] bytes)
+ {
+ super(xsdAnySimpleType, bytes);
+ }
+ @Override
+ public String toString()
+ {
+ if (canonical == null)
+ {
+ canonical = HexBin.encode(bytes);
+ }
+ return canonical;
+ }
+ }
+
+ public void assess(XSDSimpleTypeDefinitionImpl.AssessmentImpl assessment)
+ {
+ assessment.xsdAnySimpleType = this;
+ Object value = getValue(assessment.normalizedLiteral);
+ if (value != null)
+ {
+ assessment.value = value;
+ }
+ else
+ {
+ assessment.reportDatatypeDiagnostic();
+ }
+ }
+
+
+ public Object getValue(String normalizedLiteral)
+ {
+ return normalizedLiteral;
+ }
+
+ public String getCanonicalLiteral(Object value)
+ {
+ return value == null ? null : value.toString();
+ }
+
+ public int compareValues(Object value1, Object value2)
+ {
+ throw new RuntimeException(XSDPlugin.INSTANCE.getString("_EXC_CompareNotSupported"));
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDAnyURIType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDAnyURIType.java
new file mode 100644
index 0000000..83f821a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDAnyURIType.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.DataValue.URI;
+
+public class XSDAnyURIType extends XSDAnySimpleType
+{
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ if (normalizedLiteral.length() >0)
+ {
+ //encode special characters using XLink 5.4 algorithm
+ normalizedLiteral = URI.encode(normalizedLiteral);
+ // Support for relative URLs
+ // According to Java 1.1: URLs may also be specified with a
+ // String and the URL object that it is related to.
+ new URI(URI.BASE_URI, normalizedLiteral);
+ }
+ return normalizedLiteral;
+ }
+ catch (URI.MalformedURIException exception)
+ {
+ // Ignore
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDBase64BinaryType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDBase64BinaryType.java
new file mode 100644
index 0000000..a7e6660
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDBase64BinaryType.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.DataValue.Base64;
+
+public class XSDBase64BinaryType extends XSDAnySimpleType
+{
+ @Override
+ public Object getValue(String literal)
+ {
+ byte[] bytes = Base64.decode(literal);
+ return (bytes != null) ? new ByteSequence(this, bytes) : null;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDBooleanType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDBooleanType.java
new file mode 100644
index 0000000..46c68bd
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDBooleanType.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+public class XSDBooleanType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String literal)
+ {
+ if ("true".equals(literal) || "1".equals(literal))
+ {
+ return Boolean.TRUE;
+ }
+ else if ("false".equals(literal) || "0".equals(literal))
+ {
+ return Boolean.FALSE;
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDateTimeType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDateTimeType.java
new file mode 100644
index 0000000..104684a
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDateTimeType.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDDateTimeType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.DATETIME);
+ return calendar.isValid() && "dateTime".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDateType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDateType.java
new file mode 100644
index 0000000..97515da
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDateType.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDDateType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.DATE);
+ return calendar.isValid() && "date".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDecimalType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDecimalType.java
new file mode 100644
index 0000000..8ab2948
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDecimalType.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import java.math.BigDecimal;
+
+public class XSDDecimalType extends XSDAnySimpleType
+{
+ @Override
+ public Object getValue(String literal)
+ {
+ try
+ {
+ BigDecimal value = new BigDecimal(literal);
+
+ if (literal.indexOf('e') == -1 && literal.indexOf('E') == -1)
+ {
+ return value;
+ }
+ }
+ catch (RuntimeException e)
+ {
+ // Ignore
+ }
+ return null;
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return ((BigDecimal)value1).compareTo((BigDecimal)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDoubleType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDoubleType.java
new file mode 100644
index 0000000..b541687
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDoubleType.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+public class XSDDoubleType extends XSDAnySimpleType
+{
+ protected static final Double NaN = Double.NaN;
+ protected static final Double NEGATIVE_INFINITY = Double.NEGATIVE_INFINITY;
+ protected static final Double POSITIVE_INFINITY = Double.POSITIVE_INFINITY;
+
+ @Override
+ public Object getValue(String literal)
+ {
+ try
+ {
+ if ("NaN".equals(literal))
+ {
+ return NaN;
+ }
+ else if ("-INF".equals(literal))
+ {
+ return NEGATIVE_INFINITY;
+ }
+ else if ("INF".equals(literal))
+ {
+ return POSITIVE_INFINITY;
+ }
+ else if (literal != null && literal.contains("Infinity"))
+ {
+ // Be sure to treat Java's infinity representation as invalid.
+ //
+ return null;
+ }
+ else
+ {
+ return Double.valueOf(literal);
+ }
+ }
+ catch (NumberFormatException e)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return ((Double)value1).compareTo((Double)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDurationType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDurationType.java
new file mode 100644
index 0000000..29113a7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDDurationType.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLDuration;
+
+
+public class XSDDurationType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ return new XMLDuration(normalizedLiteral);
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLDuration.compare((XMLDuration)value1, (XMLDuration)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDFloatType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDFloatType.java
new file mode 100644
index 0000000..7941435
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDFloatType.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+public class XSDFloatType extends XSDAnySimpleType
+{
+ protected static final Float NaN = Float.NaN;
+ protected static final Float NEGATIVE_INFINITY = Float.NEGATIVE_INFINITY;
+ protected static final Float POSITIVE_INFINITY = Float.POSITIVE_INFINITY;
+
+ @Override
+ public Object getValue(String literal)
+ {
+ try
+ {
+ if ("NaN".equals(literal))
+ {
+ return NaN;
+ }
+ else if ("-INF".equals(literal))
+ {
+ return NEGATIVE_INFINITY;
+ }
+ else if ("INF".equals(literal))
+ {
+ return POSITIVE_INFINITY;
+ }
+ else if (literal != null && literal.contains("Infinity"))
+ {
+ // Be sure to treat Java's infinity representation as invalid.
+ //
+ return null;
+ }
+ else
+ {
+ return Float.valueOf(literal);
+ }
+ }
+ catch (NumberFormatException e)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return ((Float)value1).compareTo((Float)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGDayType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGDayType.java
new file mode 100644
index 0000000..dc35da8
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGDayType.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDGDayType extends XSDAnySimpleType
+{
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.GDAY);
+ return calendar.isValid() && "gDay".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGMonthDayType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGMonthDayType.java
new file mode 100644
index 0000000..484f1d9
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGMonthDayType.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDGMonthDayType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.GMONTHDAY);
+ return calendar.isValid() && "gMonthDay".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGMonthType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGMonthType.java
new file mode 100644
index 0000000..9c7faac
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGMonthType.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDGMonthType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.GMONTH);
+ return calendar.isValid() && "gMonth".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGYearMonthType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGYearMonthType.java
new file mode 100644
index 0000000..da06ab7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGYearMonthType.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDGYearMonthType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.GYEARMONTH);
+ return calendar.isValid() && "gYearMonth".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGYearType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGYearType.java
new file mode 100644
index 0000000..d106942
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDGYearType.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDGYearType extends XSDAnySimpleType
+{
+
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.GYEAR);
+ return calendar.isValid() && "gYear".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDHexBinaryType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDHexBinaryType.java
new file mode 100644
index 0000000..01cc19e
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDHexBinaryType.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.DataValue.HexBin;
+
+public class XSDHexBinaryType extends XSDAnySimpleType
+{
+ @Override
+ public Object getValue(String literal)
+ {
+ byte[] bytes = HexBin.decode(literal);
+ if (bytes != null)
+ {
+ return new HexSequence(this, bytes);
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDNotationType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDNotationType.java
new file mode 100644
index 0000000..edfbb04
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDNotationType.java
@@ -0,0 +1,16 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+public class XSDNotationType extends XSDQNameType
+{
+ // It's implemented exactly the same as XSDQName.
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDQNameType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDQNameType.java
new file mode 100644
index 0000000..2382ddb
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDQNameType.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.QName;
+import org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+public class XSDQNameType extends XSDAnySimpleType
+{
+ @Override
+ public void assess(XSDSimpleTypeDefinitionImpl.AssessmentImpl assessment)
+ {
+ assessment.xsdAnySimpleType = this;
+ Object value = null;
+ if (assessment.context == null)
+ {
+ value = getValue(assessment.normalizedLiteral);
+ }
+ else
+ {
+ value = getValue(assessment.context, assessment.normalizedLiteral);
+ }
+ if (value != null)
+ {
+ assessment.value = value;
+ }
+ else
+ {
+ assessment.reportDatatypeDiagnostic();
+ }
+ }
+
+ @Override
+ public Object getValue(String literal)
+ {
+ try
+ {
+ return new QName(literal);
+ }
+ catch (RuntimeException e)
+ {
+ return null;
+ }
+ }
+
+ public Object getValue(Element context, String literal)
+ {
+ try
+ {
+ String localPart;
+ String prefix;
+ String namespaceAttribute;
+ int index = literal.indexOf(':');
+ if (index == -1)
+ {
+ localPart = literal;
+ prefix = "";
+ namespaceAttribute = "xmlns";
+ }
+ else
+ {
+ localPart = literal.substring(index + 1);
+ prefix = literal.substring(0, index);
+ namespaceAttribute = "xmlns:" + prefix;
+ }
+ String namespace = null;
+ for (Node node = context; node instanceof Element; node = node.getParentNode())
+ {
+ Element elementNode = (Element)node;
+ if (elementNode.hasAttribute(namespaceAttribute))
+ {
+ namespace = elementNode.getAttribute(namespaceAttribute);
+ break;
+ }
+ }
+ if (namespace == null)
+ {
+ if (index == -1)
+ {
+ namespace = "";
+ }
+ else
+ {
+ return null;
+ }
+ }
+ return new QName(namespace, localPart, prefix);
+ }
+ catch (RuntimeException e)
+ {
+ return null;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDTimeType.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDTimeType.java
new file mode 100644
index 0000000..7d12a56
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDTimeType.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
+
+public class XSDTimeType extends XSDAnySimpleType
+{
+ @Override
+ public Object getValue(String normalizedLiteral)
+ {
+ try
+ {
+ XMLCalendar calendar = new XMLCalendar(normalizedLiteral, XMLCalendar.TIME);
+ return calendar.isValid() && "time".equals(calendar.getXMLSchemaType().getLocalPart()) ? calendar : null;
+ }
+ catch (RuntimeException exception)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int compareValues(Object value1, Object value2)
+ {
+ return XMLCalendar.compare((XMLCalendar)value1, (XMLCalendar)value2);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDTypeRegister.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDTypeRegister.java
new file mode 100644
index 0000000..5644fc1
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/XSDTypeRegister.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.impl.type;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class XSDTypeRegister
+{
+ protected static Map<String, XSDAnySimpleType> map;
+
+ public static Map<String, XSDAnySimpleType> getMap()
+ {
+ if (map == null)
+ {
+ map = new HashMap<String, XSDAnySimpleType>();
+ map.put("anySimpleType", new XSDAnySimpleType());
+ map.put("anyURI", new XSDAnyURIType());
+ map.put("duration", new XSDDurationType());
+ map.put("base64Binary", new XSDBase64BinaryType());
+ map.put("boolean", new XSDBooleanType());
+ map.put("date", new XSDDateType());
+ map.put("dateTime", new XSDDateTimeType());
+ map.put("decimal", new XSDDecimalType());
+ map.put("double", new XSDDoubleType());
+ map.put("float", new XSDFloatType());
+ map.put("gMonth", new XSDGMonthType());
+ map.put("gMonthDay", new XSDGMonthDayType());
+ map.put("gDay", new XSDGDayType());
+ map.put("gYearMonth", new XSDGYearMonthType());
+ map.put("gYear", new XSDGYearType());
+ map.put("NOTATION", new XSDNotationType());
+ map.put("hexBinary", new XSDHexBinaryType());
+ map.put("QName", new XSDQNameType());
+ map.put("time", new XSDTimeType());
+ }
+ return map;
+ }
+
+ public static XSDAnySimpleType getTypeImplementer(String primitiveTypeName)
+ {
+ XSDAnySimpleType xsdAnyType = getMap().get(primitiveTypeName);
+ if (xsdAnyType == null)
+ {
+ xsdAnyType = map.get("anySimpleType");
+ }
+ return xsdAnyType;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/package.html b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/package.html
new file mode 100644
index 0000000..2f7f0f4
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/impl/type/package.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+-->
+</head>
+<body>
+
+This provides an implementation of the supported primitive datatypes;
+it is considered internal and the Javadoc is incomplete.
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/package.html b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/package.html
new file mode 100644
index 0000000..2d7de43
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/package.html
@@ -0,0 +1,958 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+-->
+</head>
+<body>
+
+
+<p>
+<a name="package_description"></a>
+This provides an API for the XML Schema Standard
+<a href="http://www.w3.org/TR/xmlschema-1">Part 1</a> and
+<a href="http://www.w3.org/TR/xmlschema-2">Part 2</a>;
+for differences between the <a href="#xsd-version">current version</a> of the API
+and the previous version of the API, please see the <a href="#xsd-changes">Appendix</a>.
+</p>
+
+<a name="details"><h2>Abstract XML Schema Components Part 1</h2></a>
+
+<p>
+The abstract XML Schema Components,
+as described in <a href="http://www.w3.org/TR/xmlschema-1">Part 1</a> of the Standard,
+are related according to this hierarchy:
+</p>
+
+<p>
+
+<img src="doc-files/ComponentHierarchy.gif" usemap="#ComponentHierarchy" border=0 alt="Diagram of the Abstract Schema Component Hierarchy"></img>
+</p>
+<p>
+In this UML notation,
+each feature (i.e., each relation or attribute) Xyz in a diagram,
+corresponds to a getXyz method in Java for accessing that feature.
+If the feature is many-valued,
+the getXyz method yields a list,
+which can be modified directly using standard Java List API;
+otherwise a corresponding setXyz method is available for modification.
+A relation with a black diamond corresponds to a containment relation;
+these form the basis for the concrete tree structure of the model.
+A relation with a white diamond corresponds to a shared psuedo-containment relation;
+it is used only for documentation purposes
+since it is not logically different from a relation with no diamond.
+In general, the white diamond relations represent relations defined directly in the XML Schema specification.
+They are typically computed from other relations and hence should not be modified directly.
+The exception to this rule are relations involving types, e.g., base-type, member-type, item-type, and element- or attribute-type.
+</p>
+<p>
+Throughout this Javadoc,
+the distinction between methods that support the abstract features representing concepts defined in the XML Schema specification
+verses methods that support the concrete features representing the syntactic structure of the XML serialization,
+will be carefully emphasized.
+The former support read-only analysis whereas the later support editing.
+</p>
+
+<p>
+The abstract XML Schema Components have the following defined relations:
+</p>
+<p>
+
+<img src="doc-files/ComponentRelations.gif" usemap="#ComponentRelations" border=0 alt="Diagram of the Abstract Schema Component Relations"></img>
+</p>
+
+<p>
+This is very similar to the standard non-normative
+<a href="http://www.w3.org/TR/xmlschema-1/#component-diagram">Schema Components Diagram</a>.
+</p>
+
+<p>
+The abstract XML Schema Components have the following defined attributes:
+</p>
+
+<p>
+
+<img src="doc-files/ComponentAttributes.gif" usemap="#ComponentAttributes" border=0 alt="Diagram of the Abstract Schema Component Attributes"></img>
+</p>
+
+
+<h2>Abstract XML Schema Components Part 2</h2>
+<p>
+The abstract XML Schema Components,
+as described in <a href="http://www.w3.org/TR/xmlschema-2">Part 2</a> of the Standard,
+are related according to this hierarchy with these defined relations and attributes:
+</p>
+<p>
+<img
+ alt="Diagram of the Abstract Schema Components for Part 2"
+ src="doc-files/ComponentHierarchyPart2.gif"
+ border=0
+ usemap="#ComponentHierarchyPart2"></img>
+</p>
+
+
+<h2>Abstract XML Schema Annotations</h2>
+<p>
+The abstract XML Schema Components,
+as described in <a href="http://www.w3.org/TR/xmlschema-1">Part 1</a> and <a href="http://www.w3.org/TR/xmlschema-2">Part 2</A> of the Standard,
+are annotated as follows:
+</p>
+<p>
+<img
+ alt="Diagram of the Abstract Schema Component Annotations"
+ src="doc-files/Annotations.gif"
+ border=0
+ usemap="#Annotations"></img>
+</p>
+
+
+<h2>Concrete XML Schema Components</h2>
+<p>
+The set of abstract XML Schema Components is extended to represent the concrete syntax as follows:
+</p>
+<p>
+
+<img src="doc-files/ConcreteComponents.gif" usemap="#ConcreteComponents" border=0 alt="Diagram of the Concrete Schema Components"></img>
+</p>
+
+<p>
+The concrete attributes are represented as follows:
+</p>
+<p>
+
+<img src="doc-files/ConcreteAttributes.gif" usemap="#ConcreteAttributes" border=0 alt="Diagram of the Concrete Schema Component Attributes"></img>
+</p>
+
+<p>
+The concrete containment relations are represented as follows:
+</p>
+<p>
+
+<img src="doc-files/ConcreteContainment.gif" usemap="#ConcreteContainment" border=0 alt="Diagram of the Concrete Containment Relations"></img>
+</p>
+
+<p>
+The following concrete components resolve to abstract components:
+</p>
+<p>
+
+
+
+<img src="doc-files/ConcreteResolution.gif" usemap="#ConcreteResolution" border=0 alt="Diagram of Concrete Component Resolution"></img>
+</p>
+
+<p>
+The following diagnostics are produced by validation:
+</p>
+<p>
+
+<img src="doc-files/Diagnostics.gif" usemap="#Diagnostics" border=0 alt="Diagram of Concrete Component Diagnostics"></img>
+</p>
+<p>
+The following concrete components have supplemental relations and attributes:
+</p>
+<p>
+
+<img src="doc-files/ConcreteSupplemental.gif" usemap="#ConcreteSupplemental" border=0 alt="Diagram of Concrete Component Supplemental Relations and Attributes"></img>
+</p>
+<p>
+
+
+<map name="ComponentHierarchy">
+<area shape=rect coords="236,3,347,38" href="XSDComponent.html">
+<area shape=rect coords="11,81,87,115" href="XSDScope.html">
+<area shape=rect coords="129,80,230,113" href="XSDAnnotation.html">
+<area shape=rect coords="289,82,400,116" href="XSDAttributeUse.html">
+<area shape=rect coords="459,81,532,116" href="XSDTerm.html">
+<area shape=rect coords="569,80,697,115" href="XSDXPathDefinition.html">
+<area shape=rect coords="9,158,100,192" href="XSDSchema.html">
+<area shape=rect coords="109,158,275,192" href="XSDComplexTypeContent.html">
+<area shape=rect coords="292,158,444,195" href="XSDNamedComponent.html">
+<area shape=rect coords="458,158,550,194" href="XSDWildcard.html">
+<area shape=rect coords="568,159,678,191" href="XSDModelGroup.html">
+<area shape=rect coords="81,235,166,270" href="XSDParticle.html">
+<area shape=rect coords="212,235,390,270" href="XSDRedefinableComponent.html">
+<area shape=rect coords="548,236,634,272" href="XSDFeature.html">
+<area shape=rect coords="73,315,196,352" href="XSDTypeDefinition.html">
+<area shape=rect coords="238,316,400,351" href="XSDModelGroupDefinition.html">
+<area shape=rect coords="544,316,698,352" href="XSDElementDeclaration.html">
+<area shape=rect coords="26,392,187,426" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="248,389,426,426" href="XSDAttributeGroupDefinition.html">
+<area shape=rect coords="523,386,699,424" href="XSDAttributeDeclaration.html">
+<area shape=rect coords="4,453,207,486" href="XSDComplexTypeDefinition.html">
+<area shape=rect coords="281,455,466,490" href="XSDNotationDeclaration.html">
+<area shape=rect coords="491,454,700,489" href="XSDIdentityConstraintDefinition.html">
+</map>
+
+
+<map name="ComponentRelations">
+<area shape=rect coords="302,6,484,69" href="XSDSchema.html">
+<area shape=rect coords="43,112,194,139" href="XSDElementDeclaration.html">
+<area shape=rect coords="299,110,484,142" href="XSDIdentityConstraintDefinition.html">
+<area shape=rect coords="544,113,700,146" href="XSDModelGroupDefinition.html">
+<area shape=rect coords="48,215,167,245" href="XSDTypeDefinition.html">
+<area shape=rect coords="333,208,455,240" href="XSDXPathDefinition.html">
+<area shape=rect coords="597,208,704,239" href="XSDModelGroup.html">
+<area shape=rect coords="43,277,201,308" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="219,277,384,308" href="XSDComplexTypeDefinition.html">
+<area shape=rect coords="493,276,582,307" href="XSDWildcard.html">
+<area shape=rect coords="618,280,700,310" href="XSDParticle.html">
+<area shape=rect coords="319,347,480,382" href="XSDComplexTypeContent.html">
+<area shape=rect coords="629,348,701,382" href="XSDTerm.html">
+<area shape=rect coords="43,412,192,443" href="XSDAttributeDeclaration.html">
+<area shape=rect coords="265,411,374,442" href="XSDAttributeUse.html">
+<area shape=rect coords="486,410,657,445" href="XSDAttributeGroupDefinition.html">
+<area shape=rect coords="11,473,92,507" href="XSDFeature.html">
+<area shape=rect coords="195,473,270,505" href="XSDScope.html">
+<area shape=rect coords="488,473,636,506" href="XSDNotationDeclaration.html">
+<area shape=poly coords="300,30,19,29,19,239,46,239,48,221,30,222,31,53,299,53,300,33,300,30" href="XSDSchema.html#getTypeDefinitions()">
+<area shape=poly coords="484,2,733,4,732,495,638,496,638,484,718,483,715,25,485,26,484,2,484,2" href="XSDSchema.html#getNotationDeclarations()">
+<area shape=poly coords="486,28,715,28,717,436,654,438,657,423,706,420,702,53,485,52,486,25,486,28" href="XSDSchema.html#getAttributeGroupDefinitions()">
+<area shape=poly coords="301,4,3,5,2,434,43,434,43,410,13,409,13,25,300,26,301,4" href="XSDSchema.html#getAttributeDeclarations()">
+<area shape=poly coords="301,58,50,59,50,109,80,110,80,99,195,100,193,83,71,82,72,68,300,71,301,58" href="XSDSchema.html#getElementDeclarations()">
+<area shape=poly coords="487,58,562,60,562,83,697,84,697,101,562,97,563,107,541,107,539,70,485,69,487,58" href="XSDSchema.html#getModelGroupDefinitions()">
+<area shape=poly coords="312,70,314,112,342,110,340,102,500,103,495,84,336,84,335,69,315,69,312,70" href="XSDSchema.html#getIdentityConstraintDefinitions()">
+<area shape=poly coords="197,121,300,120,298,146,344,147,345,159,178,155,180,143,199,143,197,121" href="XSDElementDeclaration.html#getIdentityConstraintDefinitions()">
+<area shape=poly coords="165,143,166,163,317,163,317,177,126,173,126,143,169,144,166,145,165,143" href="XSDElementDeclaration.html#getSubstitutionGroupAffiliation()">
+<area shape=poly coords="119,140,120,180,225,181,224,194,77,187,77,141,120,143,119,140" href="XSDElementDeclaration.html#getSubstitutionGroup()">
+<area shape=poly coords="72,142,70,194,166,198,166,211,52,210,53,189,62,189,61,142,72,142" href="XSDElementDeclaration.html#getTypeDefinition()">
+<area shape=poly coords="170,234,224,236,225,254,103,253,103,269,241,270,240,221,168,221,170,234" href="XSDComplexTypeDefinition.html#getBaseTypeDefinition()">
+<area shape=poly coords="53,310,53,404,77,406,79,380,162,378,161,362,74,357,76,310,53,310" href="XSDAttributeDeclaration.html#getTypeDefinition()">
+<area shape=poly coords="144,312,145,340,122,341,125,357,250,359,247,343,197,339,198,310,146,310,144,312" href="XSDSimpleTypeDefinition.html#getBaseTypeDefinition()">
+<area shape=poly coords="195,411,264,411,265,438,266,448,296,447,296,460,170,456,171,447,204,445,196,413,195,411" href="XSDAttributeUse.html#getAttributeDeclaration()">
+<area shape=poly coords="95,476,190,476,190,503,95,498,95,476" href="XSDFeature.html#getScope()">
+<area shape=poly coords="263,310,264,367,185,367,189,386,266,384,266,408,296,408,292,311,265,312,263,310" href="XSDComplexTypeDefinition.html#getAttributeUses()">
+<area shape=poly coords="325,312,325,325,305,325,306,350,417,348,416,329,345,324,345,311,325,312" href="XSDComplexTypeDefinition.html#getContentType()">
+<area shape=poly coords="377,412,482,414,479,461,375,454,377,412" href="XSDAttributeGroupDefinition.html#getAttributeUses()">
+<area shape=poly coords="382,269,490,269,489,317,453,311,451,297,385,296,382,269" href="XSDComplexTypeDefinition.html#getAttributeWildcard()">
+<area shape=poly coords="516,409,515,339,613,339,610,317,498,312,498,324,473,324,476,335,502,338,500,411,516,409" href="XSDAttributeGroupDefinition.html#getAttributeWildcard()">
+<area shape=poly coords="665,310,665,330,634,330,642,343,669,343,671,350,692,350,690,310,665,310" href="XSDParticle.html#getTerm()">
+<area shape=poly coords="682,276,680,269,705,269,697,255,684,253,682,243,664,241,665,251,610,255,610,271,661,271,666,278,682,276" href="XSDModelGroup.html#getParticles()">
+<area shape=poly coords="683,208,685,192,696,190,691,171,676,170,680,145,660,142,660,168,584,170,587,194,655,194,659,209,683,208" href="XSDModelGroupDefinition.html#getModelGroup()">
+<area shape=poly coords="491,118,521,120,520,162,583,165,578,187,459,177,457,143,492,144,494,117,494,119,491,118" href="XSDIdentityConstraintDefinition.html#getReferencedKey()">
+<area shape=poly coords="434,146,434,182,484,182,486,195,437,194,439,207,414,206,416,198,406,195,408,179,421,177,420,144,434,146" href="XSDIdentityConstraintDefinition.html#getSelector()">
+<area shape=poly coords="368,144,369,179,390,184,389,199,369,198,369,209,348,206,346,199,313,199,314,181,351,178,349,143,370,144,368,144" href="XSDIdentityConstraintDefinition.html#getFields()">
+</map>
+
+
+<map name="ComponentAttributes">
+<area shape=rect coords="8,10,177,30" href="XSDNamedComponent.html">
+<area shape=rect coords="199,7,374,25" href="XSDAttributeUse.html">
+<area shape=rect coords="402,6,600,43" href="XSDIdentityConstraintCategory.html">
+<area shape=rect coords="632,11,803,32" href="XSDXPathDefinition.html">
+<area shape=rect coords="820,10,941,45" href="XSDXPathVariety.html">
+<area shape=rect coords="6,80,97,102" href="XSDSchema.html">
+<area shape=rect coords="3,131,180,153" href="XSDFeature.html">
+<area shape=rect coords="194,126,302,165" href="XSDConstraint.html">
+<area shape=rect coords="323,146,691,167" href="XSDIdentityConstraintDefinition.html">
+<area shape=rect coords="765,143,944,161" href="XSDRedefinableComponent.html">
+<area shape=rect coords="3,256,159,275" href="XSDAttributeDeclaration.html">
+<area shape=rect coords="175,236,623,257" href="XSDElementDeclaration.html">
+<area shape=rect coords="657,220,817,241" href="XSDNotationDeclaration.html">
+<area shape=rect coords="7,335,117,375" href="XSDCompositor.html">
+<area shape=rect coords="147,340,354,376" href="XSDSubstitutionGroupExclusions.html">
+<area shape=rect coords="366,336,544,372" href="XSDDisallowedSubstitutions.html">
+<area shape=rect coords="575,349,736,368" href="XSDModelGroupDefinition.html">
+<area shape=rect coords="768,347,942,369" href="XSDAttributeGroupDefinition.html">
+<area shape=rect coords="686,398,809,419" href="XSDTypeDefinition.html">
+<area shape=rect coords="6,439,198,458" href="XSDModelGroup.html">
+<area shape=rect coords="5,498,170,517" href="XSDParticle.html">
+<area shape=rect coords="218,464,333,502" href="XSDVariety.html">
+<area shape=rect coords="343,480,549,502" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="564,481,944,502" href="XSDComplexTypeDefinition.html">
+<area shape=rect coords="6,581,423,601" href="XSDWildcard.html">
+<area shape=rect coords="437,549,544,589" href="XSDSimpleFinal.html">
+<area shape=rect coords="564,601,684,638" href="XSDComplexFinal.html">
+<area shape=rect coords="7,669,227,705" href="XSDNamespaceConstraintCategory.html">
+<area shape=rect coords="237,668,378,708" href="XSDProcessContents.html">
+<area shape=rect coords="439,687,615,727" href="XSDProhibitedSubstitutions.html">
+<area shape=rect coords="626,687,766,726" href="XSDDerivationMethod.html">
+<area shape=rect coords="779,655,943,691" href="XSDContentTypeCategory.html">
+
+<area shape=rect coords="7,601,421,618" href="XSDWildcard.html#getNamespaceConstraintCategory()">
+<area shape=rect coords="6,618,423,632" href="XSDWildcard.html#getNamespaceConstraint()">
+<area shape=rect coords="6,632,423,652" href="XSDWildcard.html#getProcessContents()">
+<area shape=rect coords="440,587,546,603" href="XSDSimpleFinal.html#LIST">
+<area shape=rect coords="438,604,546,620" href="XSDSimpleFinal.html#RESTRICTION">
+<area shape=rect coords="436,622,546,639" href="XSDSimpleFinal.html#UNION">
+<area shape=rect coords="564,638,686,654" href="XSDComplexFinal.html#EXTENSION">
+<area shape=rect coords="564,657,686,674" href="XSDComplexFinal.html#RESTRICTION">
+<area shape=rect coords="8,706,227,721" href="XSDNamespaceConstraintCategory.html#ANY">
+<area shape=rect coords="6,722,228,735" href="XSDNamespaceConstraintCategory.html#NOT">
+<area shape=rect coords="5,736,227,755" href="XSDNamespaceConstraintCategory.html#SET">
+<area shape=rect coords="238,705,374,720" href="XSDProcessContents.html#STRICT">
+<area shape=rect coords="236,721,376,735" href="XSDProcessContents.html#LAX">
+<area shape=rect coords="236,735,377,754" href="XSDProcessContents.html#SKIP">
+<area shape=rect coords="440,723,614,739" href="XSDProhibitedSubstitutions.html#EXTENSION">
+<area shape=rect coords="439,738,614,759" href="XSDProhibitedSubstitutions.html#RESTRICTION">
+<area shape=rect coords="7,30,175,47" href="XSDNamedComponent.html#getName()">
+<area shape=rect coords="6,46,178,66" href="XSDNamedComponent.html#getTargetNamespace()">
+<area shape=rect coords="198,26,372,44" href="XSDAttributeUse.html#isRequired()">
+<area shape=rect coords="199,45,375,58" href="XSDAttributeUse.html#getValue()">
+<area shape=rect coords="199,59,374,80" href="XSDAttributeUse.html#getConstraint()">
+<area shape=rect coords="402,42,600,60" href="XSDIdentityConstraintCategory.html#KEY">
+<area shape=rect coords="404,60,599,76" href="XSDIdentityConstraintCategory.html#KEYREF">
+<area shape=rect coords="403,77,599,97" href="XSDIdentityConstraintCategory.html#UNIQUE">
+<area shape=rect coords="632,30,802,47" href="XSDXPathDefinition.html#getVariety()">
+<area shape=rect coords="632,48,798,64" href="XSDXPathDefinition.html#getValue()">
+<area shape=rect coords="820,46,940,62" href="XSDXPathVariety.html#SELECTOR">
+<area shape=rect coords="818,63,942,80" href="XSDXPathVariety.html#FIELD">
+<area shape=rect coords="5,153,179,169" href="XSDFeature.html#getValue()">
+<area shape=rect coords="3,170,183,189" href="XSDFeature.html#getConstraint()">
+<area shape=rect coords="196,165,304,181" href="XSDConstraint.html#DEFAULT">
+<area shape=rect coords="195,182,305,201" href="XSDConstraint.html#FIXED">
+<area shape=rect coords="325,164,688,186" href="XSDIdentityConstraintDefinition.html#getIdentityConstraintCategory()">
+<area shape=rect coords="176,255,622,271" href="XSDElementDeclaration.html#isNillable()">
+<area shape=rect coords="175,271,625,286" href="XSDElementDeclaration.html#getDisallowedSubstitutions()">
+<area shape=rect coords="174,287,626,302" href="XSDElementDeclaration.html#getSubstitutionGroupExclusions()">
+<area shape=rect coords="175,304,624,321" href="XSDElementDeclaration.html#isAbstract()">
+<area shape=rect coords="657,239,815,258" href="XSDNotationDeclaration.html#getSystemIdentifier()">
+<area shape=rect coords="656,259,815,275" href="XSDNotationDeclaration.html#getPublicIdentifier()">
+<area shape=rect coords="8,372,114,388" href="XSDCompositor.html#ALL">
+<area shape=rect coords="8,389,117,404" href="XSDCompositor.html#CHOICE">
+<area shape=rect coords="6,405,115,423" href="XSDCompositor.html#SEQUENCE">
+<area shape=rect coords="148,375,352,393" href="XSDSubstitutionGroupExclusions.html#EXTENSION">
+<area shape=rect coords="146,395,354,410" href="XSDSubstitutionGroupExclusions.html#RESTRICTION">
+<area shape=rect coords="366,373,544,390" href="XSDDisallowedSubstitutions.html#SUBSTITUTION">
+<area shape=rect coords="365,391,544,405" href="XSDDisallowedSubstitutions.html#EXTENSION">
+<area shape=rect coords="365,405,545,422" href="XSDDisallowedSubstitutions.html#RESTRICTION">
+<area shape=rect coords="7,458,196,479" href="XSDModelGroup.html#getCompositor()">
+<area shape=rect coords="5,517,169,533" href="XSDParticle.html#getMinOccurs()">
+<area shape=rect coords="5,533,169,551" href="XSDParticle.html#getMaxOccurs()">
+<area shape=rect coords="219,500,333,519" href="XSDVariety.html#ATOMIC">
+<area shape=rect coords="217,519,332,533" href="XSDVariety.html#LIST">
+<area shape=rect coords="218,535,336,549" href="XSDVariety.html#UNION">
+<area shape=rect coords="341,501,548,517" href="XSDSimpleTypeDefinition.html#getVariety()">
+<area shape=rect coords="343,518,547,534" href="XSDSimpleTypeDefinition.html#getFinal()">
+<area shape=rect coords="562,502,943,518" href="XSDComplexTypeDefinition.html#getDerivationMethod()">
+<area shape=rect coords="562,519,950,533" href="XSDComplexTypeDefinition.html#getFinal()">
+<area shape=rect coords="562,534,949,551" href="XSDComplexTypeDefinition.html#isAbstract()">
+<area shape=rect coords="561,553,943,567" href="XSDComplexTypeDefinition.html#getContentTypeCategory()">
+<area shape=rect coords="562,568,941,586" href="XSDComplexTypeDefinition.html#getProhibitedSubstitutions()">
+<area shape=rect coords="628,723,766,738" href="XSDDerivationMethod.html#EXTENSION">
+<area shape=rect coords="627,740,767,757" href="XSDDerivationMethod.html#RESTRICTION">
+<area shape=rect coords="778,691,943,709" href="XSDContentTypeCategory.html#EMPTY">
+<area shape=rect coords="778,711,941,723" href="XSDContentTypeCategory.html#SIMPLE">
+<area shape=rect coords="778,724,942,740" href="XSDContentTypeCategory.html#MIXED">
+<area shape=rect coords="777,742,941,759" href="XSDContentTypeCategory.html#ELEMENT_ONLY">
+</map>
+
+
+<map name="ComponentHierarchyPart2">
+<area shape="rect" coords="609,9,717,45" href="XSDVariety.html">
+<area shape="rect" coords="607,115,716,152" href="XSDSimpleFinal.html">
+<area shape="rect" coords="581,403,723,439" href="XSDOrdered.html">
+<area shape="rect" coords="582,511,722,549" href="XSDCardinality.html">
+<area shape="rect" coords="590,604,725,639" href="XSDWhiteSpace.html">
+<area shape="rect" coords="358,10,568,30" href="XSDSimpleTypeDefinition.html">
+<area shape="rect" coords="50,31,157,67" href="XSDComponent.html">
+<area shape="rect" coords="51,98,179,117" href="XSDFacet.html">
+<area shape="rect" coords="6,177,152,199" href="XSDConstrainingFacet.html">
+<area shape="rect" coords="163,177,312,199" href="XSDFundamentalFacet.html">
+<area shape="rect" coords="5,262,113,284" href="XSDFixedFacet.html">
+<area shape="rect" coords="155,265,297,287" href="XSDRepeatableFacet.html">
+<area shape="rect" coords="437,273,560,295" href="XSDBoundedFacet.html">
+<area shape="rect" coords="571,273,702,295" href="XSDOrderedFacet.html">
+<area shape="rect" coords="79,350,231,371" href="XSDEnumerationFacet.html">
+<area shape="rect" coords="244,351,395,371" href="XSDPatternFacet.html">
+<area shape="rect" coords="416,331,539,351" href="XSDNumericFacet.html">
+<area shape="rect" coords="573,330,721,351" href="XSDCardinalityFacet.html">
+<area shape="rect" coords="30,417,126,439" href="XSDMinFacet.html">
+<area shape="rect" coords="151,416,262,438" href="XSDLengthFacet.html">
+<area shape="rect" coords="276,418,433,438" href="XSDWhiteSpaceFacet.html">
+<area shape="rect" coords="456,416,553,438" href="XSDMaxFacet.html">
+<area shape="rect" coords="123,473,258,495" href="XSDMinLengthFacet.html">
+<area shape="rect" coords="316,474,456,495" href="XSDMaxLengthFacet.html">
+<area shape="rect" coords="84,530,225,553" href="XSDMinInclusiveFacet.html">
+<area shape="rect" coords="343,530,490,552" href="XSDMaxInclusiveFacet.html">
+<area shape="rect" coords="34,587,185,607" href="XSDMinExclusiveFacet.html">
+<area shape="rect" coords="376,586,528,607" href="XSDMaxExclusiveFacet.html">
+<area shape="rect" coords="11,653,146,673" href="XSDTotalDigitsFacet.html">
+<area shape="rect" coords="417,654,571,672" href="XSDFractionDigitsFacet.html">
+
+<area shape=rect coords="628,723,766,738" href="XSDDerivationMethod.html#EXTENSION">
+<area shape=poly coords="357,13,20,14,19,146,5,148,6,167,29,177,79,161,80,148,31,147,35,24,356,27,357,13" href="XSDSimpleTypeDefinition.html#getFacets()">
+<area shape=poly coords="355,35,168,36,167,93,179,93,179,61,352,71,356,69,355,35" href="XSDFacet.html#getSimpleTypeDefinition()">
+<area shape=poly coords="356,77,198,78,197,176,218,177,218,130,244,129,243,106,339,106,336,87,356,89,355,79,356,77" href="XSDSimpleTypeDefinition.html#getFundamentalFacets()">
+<area shape=poly coords="352,91,354,126,278,127,280,150,399,148,398,88,354,90,352,91" href="XSDSimpleTypeDefinition.html#getBaseTypeDefinition()">
+<area shape=poly coords="405,89,407,153,309,153,311,168,452,167,453,88,410,89,405,89" href="XSDSimpleTypeDefinition.html#getPrimitiveTypeDefinition()">
+<area shape=poly coords="461,89,461,170,391,172,392,192,515,192,515,88,465,87,465,89,461,89" href="XSDSimpleTypeDefinition.html#getItemTypeDefinition()">
+<area shape=poly coords="524,89,525,194,416,195,419,216,572,218,572,87,524,89" href="XSDSimpleTypeDefinition.html#getMemberTypeDefinitions()">
+<area shape=rect coords="357,30,563,46" href="XSDSimpleTypeDefinition.html#getVariety()">
+<area shape=rect coords="358,46,566,63" href="XSDSimpleTypeDefinition.html#getFinal()">
+<area shape=rect coords="608,44,715,62" href="XSDVariety.html#ATOMIC">
+<area shape=rect coords="608,63,715,77" href="XSDVariety.html#LIST">
+<area shape=rect coords="608,80,715,98" href="XSDVariety.html#UNION">
+<area shape=rect coords="607,152,714,169" href="XSDSimpleFinal.html#LIST">
+<area shape=rect coords="608,170,718,185" href="XSDSimpleFinal.html#RESTRICTION">
+<area shape=rect coords="606,185,717,201" href="XSDSimpleFinal.html#UNION">
+<area shape=rect coords="4,285,111,303" href="XSDFacet.html#isFixed()">
+<area shape=rect coords="438,294,558,314" href="XSDBoundedFacet.html#isValue()">
+<area shape=rect coords="568,295,703,314" href="XSDOrderedFacet.html#getValue()">
+<area shape=rect coords="78,372,230,391" href="XSDEnumerationFacet.html#getValue()">
+<area shape=rect coords="241,371,393,393" href="XSDPatternFacet.html#getValue()">
+<area shape=rect coords="415,349,539,372" href="XSDNumericFacet.html#isValue()">
+<area shape=rect coords="570,351,721,372" href="XSDCardinalityFacet.html#getValue()">
+<area shape=rect coords="28,439,128,459" href="XSDMinFacet.html#getValue()">
+<area shape=rect coords="150,438,260,460" href="XSDLengthFacet.html#getValue()">
+<area shape=rect coords="275,438,433,458" href="XSDWhiteSpaceFacet.html#getValue()">
+<area shape=rect coords="453,439,552,458" href="XSDMaxFacet.html#getValue()">
+<area shape=rect coords="123,496,257,514" href="XSDMinLengthFacet.html#getValue()">
+<area shape=rect coords="316,495,454,515" href="XSDMaxLengthFacet.html#getValue()">
+<area shape=rect coords="8,673,147,692" href="XSDTotalDigitsFacet.html#getValue()">
+<area shape=rect coords="415,675,571,691" href="XSDFractionDigitsFacet.html#getValue()">
+<area shape=rect coords="579,550,722,565" href="XSDCardinality.html#fFINITE">
+<area shape=rect coords="578,567,722,584" href="XSDCardinality.html#COUNTABLY_INFINITE">
+<area shape=rect coords="579,439,722,457" href="XSDOrdered.html#FALSE">
+<area shape=rect coords="578,458,721,474" href="XSDOrdered.html#PARTIAL">
+<area shape=rect coords="580,473,722,490" href="XSDOrdered.html#TOTAL">
+<area shape=rect coords="589,640,724,658" href="XSDWhiteSpace.html#PRESERVE">
+<area shape=rect coords="588,658,725,673" href="XSDWhiteSpace.html#REPLACE">
+<area shape=rect coords="588,674,726,690" href="XSDWhiteSpace.html#COLLAPSE">
+</map>
+
+<map name="Annotations">
+<area shape="rect" coords="14,7,127,42" href="XSDAttributeUse.html">
+<area shape="rect" coords="327,6,415,40" href="XSDSchema.html">
+<area shape="rect" coords="591,6,665,39" href="XSDFacet.html">
+<area shape="rect" coords="13,53,167,86" href="XSDAttributeDeclaration.html">
+<area shape="rect" coords="12,104,188,138" href=" XSDAttributeGroupDefinition.html">
+<area shape="rect" coords="518,77,666,111" href="XSDConstrainingFacet.html">
+<area shape="rect" coords="525,161,668,194" href="XSDRepeatableFacet.html">
+<area shape="rect" coords="545,369,669,403" href="XSDTypeDefinition.html">
+<area shape="rect" coords="506,462,668,496" href="XSDSimpleTypeDefinition.html">
+<area shape="rect" coords="454,530,666,561" href="XSDComplexTypeDefinition.html">
+<area shape="rect" coords="13,156,167,189" href="XSDElementDeclaration.html">
+<area shape="rect" coords="14,206,167,240" href="XSDNotationDeclaration.html">
+<area shape="rect" coords="12,258,137,290" href="XSDXPathDefinition.html">
+<area shape="rect" coords="11,309,118,342" href="XSDModelGroup.html">
+<area shape="rect" coords="10,359,170,393" href="XSDModelGroupDefinition.html">
+<area shape="rect" coords="10,417,203,449" href="XSDIdentityConstraintDefinition.html">
+<area shape="rect" coords="7,472,100,505" href="XSDWildcard.html">
+<area shape="rect" coords="12,523,96,557" href="XSDParticle.html">
+<area shape="rect" coords="265,214,500,387" href="XSDAnnotation.html">
+
+<area shape=poly coords="168,61,267,62,265,47,341,50,342,185,357,186,356,200,339,199,339,214,329,211,327,75,167,76,168,61" href="XSDAttributeDeclaration.html#getAnnotation()">
+<area shape=poly coords="186,101,231,100,233,90,308,92,306,181,324,187,322,206,304,213,293,208,295,118,185,119,186,101" href="XSDAttributeGroupDefinition.html#getAnnotation()">
+<area shape=poly coords="166,166,196,167,198,157,276,156,275,188,291,189,289,203,275,202,274,215,261,213,262,180,166,181,166,166" href="XSDElementDeclaration.html#getAnnotation()">
+<area shape=poly coords="168,217,182,218,186,205,254,207,262,228,253,244,226,242,222,231,166,232,168,217" href="XSDNotationDeclaration.html#getAnnotation()">
+<area shape=poly coords="136,269,180,269,180,258,257,258,260,278,251,296,230,295,224,283,136,282,136,269" href="XSDXPathDefinition.html#getAnnotation()">
+<area shape=poly coords="119,318,173,317,181,304,245,306,262,325,253,344,222,342,216,331,118,331,118,330,119,318" href="XSDModelGroup.html#getAnnotation()">
+<area shape=poly coords="170,369,178,370,186,357,254,360,261,384,251,403,224,401,218,390,168,389,170,369" href="XSDModelGroupDefinition.html#getAnnotation()">
+<area shape=poly coords="200,426,210,414,273,414,276,388,288,389,310,401,314,412,292,423,288,442,202,442,200,426" href="XSDIdentityConstraintDefinition.html#getAnnotation()">
+<area shape=poly coords="99,471,317,460,317,388,337,387,337,397,350,400,351,416,332,421,329,483,98,482,99,471" href="XSDWildcard.html#getAnnotation()">
+<area shape=poly coords="99,489,361,486,361,388,383,388,402,406,380,421,375,506,99,506,99,489" href="XSDWildcard.html#getAnnotations()">
+<area shape=poly coords="452,528,453,417,429,416,433,397,455,400,456,389,475,390,473,424,595,425,593,443,473,444,472,530,452,528" href="XSDComplexTypeDefinition.html#getContentAnnotation()">
+<area shape=poly coords="555,369,555,343,499,343,501,307,582,308,580,370,555,369" href="XSDTypeDefinition.html#getAnnotation()">
+<area shape=poly coords="501,293,598,299,602,369,621,370,621,281,638,280,636,260,498,260,500,295,501,293" href="XSDTypeDefinition.html#getDerivationAnnotation()">
+<area shape=poly coords="653,370,650,239,500,242,501,212,592,210,663,223,664,371,653,370" href="XSDTypeDefinition.html#getAnnotations()">
+<area shape=poly coords="518,172,519,156,561,154,551,137,479,139,479,188,464,190,469,210,495,211,499,180,521,181,518,172" href="XSDRepeatableFacet.html#getAnnotations()">
+<area shape=poly coords="583,31,537,30,538,50,464,50,462,211,447,213,422,198,427,185,450,181,450,11,589,12,583,31" href="XSDFacet.html#getAnnotation()">
+<area shape=poly coords="371,44,373,64,448,63,448,80,372,80,369,185,399,188,400,203,366,214,357,205,356,40,371,44" href="XSDSchema.html#getAnnotations()">
+</map>
+
+<map name="ConcreteComponents">
+<area shape=rect coords="267,12,429,47" href="XSDConcreteComponent.html">
+<area shape=rect coords="28,104,136,137" href="XSDComponent.html">
+<area shape=rect coords="170,103,344,136" href="XSDAttributeGroupContent.html">
+<area shape=rect coords="360,101,495,134" href="XSDSchemaContent.html">
+<area shape=rect coords="520,101,652,135" href="XSDParticleContent.html">
+<area shape=rect coords="25,186,102,220" href="XSDScope.html">
+<area shape=rect coords="135,184,286,220" href="XSDNamedComponent.html">
+<area shape=rect coords="305,185,444,219" href="XSDRedefineContent.html">
+<area shape=rect coords="508,184,647,217" href="XSDSchemaDirective.html">
+<area shape=rect coords="132,277,309,312" href="XSDRedefinableComponent.html">
+<area shape=rect coords="400,272,478,305" href="XSDImport.html">
+<area shape=rect coords="499,270,653,305" href="XSDSchemaCompositor.html">
+<area shape=rect coords="6,352,96,384" href="XSDSchema.html">
+<area shape=rect coords="108,351,385,389" href="XSDAnnotation.html">
+<area shape=rect coords="473,352,554,385" href="XSDInclude.html">
+<area shape=rect coords="567,353,653,386" href="XSDRedefine.html">
+
+<area shape=poly coords="267,25,72,25,72,5,6,6,5,351,20,351,16,48,54,50,69,39,266,34,267,25" href="XSDConcreteComponent.html#getSchema()">
+<area shape=poly coords="265,38,229,39,228,47,143,46,143,64,224,61,228,70,289,72,282,51,264,50,265,38" href="XSDConcreteComponent.html#getRootContainer()">
+<area shape=poly coords="18,388,16,448,3,448,6,469,25,472,695,470,695,193,651,193,651,212,686,211,684,458,141,460,139,449,31,446,32,386,18,388" href="XSDSchemaDirective.html#getResolvedSchema()">
+<area shape=poly coords="53,387,52,423,38,423,38,443,65,445,681,446,681,277,654,280,654,296,670,297,671,435,200,435,195,423,71,420,71,387,53,387" href="XSDSchemaCompositor.html#getIncorporatedSchema()">
+<area shape=poly coords="410,50,411,68,474,71,475,59,543,59,537,43,472,44,472,35,433,34,431,52,410,50" href="XSDConcreteComponent.html#getContainer()">
+<area shape=poly coords="360,388,361,397,336,399,336,419,370,423,621,424,621,387,600,386,602,414,452,411,450,399,377,398,377,387,360,388" href="XSDRedefine.html#getAnnotations()">
+<area shape=poly coords="469,382,418,380,417,395,391,394,385,373,388,350,459,349,471,369,469,382" href="XSDInclude.html#getAnnotation()">
+<area shape=poly coords="400,285,355,285,355,319,336,318,336,336,355,339,364,351,380,339,440,338,438,323,367,322,370,299,398,302,400,285" href="XSDImport.html#getAnnotation()">
+</map>
+
+
+<map name="ConcreteAttributes">
+<area shape=rect coords="6,4,221,25" href="XSDConcreteComponent.html">
+<area shape=rect coords="4,100,138,121" href="XSDSchemaContent.html">
+<area shape=rect coords="212,100,322,122" href="XSDComponent.html">
+<area shape=rect coords="6,181,169,201" href="XSDSchemaDirective.html">
+<area shape=rect coords="232,182,312,203" href="XSDScope.html">
+<area shape=rect coords="357,185,493,205" href="XSDFacet.html">
+<area shape=rect coords="556,184,849,206" href="XSDAnnotation.html">
+<area shape=rect coords="5,283,140,304" href="XSDImport.html">
+<area shape=rect coords="192,244,515,263" href="XSDSchema.html">
+<area shape=rect coords="529,279,680,300" href="XSDNamedComponent.html">
+<area shape=rect coords="793,275,869,296" href="XSDTerm.html">
+<area shape=rect coords="579,344,867,366" href="XSDWildcard.html">
+<area shape=rect coords="6,403,209,423" href="XSDAttributeUse.html">
+<area shape=rect coords="227,411,404,446" href="XSDDisallowedSubstitutions.html">
+<area shape=rect coords="418,427,597,448" href="XSDRedefinableComponent.html">
+<area shape=rect coords="614,428,750,449" href="XSDFeature.html">
+<area shape=rect coords="761,415,869,451" href="XSDForm.html">
+<area shape=rect coords="6,474,168,509" href="XSDAttributeUseCategory.html">
+<area shape=rect coords="191,525,364,561" href="XSDProhibitedSubstitutions.html">
+<area shape=rect coords="411,519,533,541" href="XSDTypeDefinition.html">
+<area shape=rect coords="557,516,868,537" href="XSDElementDeclaration.html">
+<area shape=rect coords="8,577,116,613" href="XSDSimpleFinal.html">
+<area shape=rect coords="164,647,410,668" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="444,616,725,637" href="XSDComplexTypeDefinition.html">
+<area shape=rect coords="749,597,870,631" href="XSDComplexFinal.html">
+
+
+<area shape=rect coords="9,616,118,634" href="XSDSimpleFinal.html#LIST">
+<area shape=rect coords="8,635,117,650" href="XSDSimpleFinal.html#RESTRICTION">
+<area shape=rect coords="9,650,117,665" href="XSDSimpleFinal.html#UNION">
+<area shape=rect coords="8,666,116,680" href="XSDSimpleFinal.html#ALL">
+<area shape=rect coords="6,27,221,49" href="XSDConcreteComponent.html#getElement()">
+<area shape=rect coords="6,203,169,222" href="XSDSchemaDirective.html#getSchemaLocation()">
+<area shape=rect coords="358,208,496,228" href="XSDFacet.html#getLexicalValue()">
+<area shape=rect coords="556,207,847,225" href="XSDAnnotation.html#getApplicationInformation()">
+<area shape=rect coords="557,226,849,240" href="XSDAnnotation.html#getUserInformation()">
+<area shape=rect coords="557,241,847,259" href="XSDAnnotation.html#getAttributes()">
+<area shape=rect coords="5,306,140,325" href="XSDImport.html#getNamespace()">
+<area shape=rect coords="579,367,866,387" href="XSDWildcard.html#getLexicalNamespaceConstraint()">
+<area shape=rect coords="6,427,210,445" href="XSDAttributeUse.html#getUse()">
+<area shape=rect coords="5,445,210,462" href="XSDAttributeUse.html#getLexicalValue()">
+<area shape=rect coords="612,448,749,467" href="XSDFeature.html#getForm()">
+<area shape=rect coords="613,467,750,487" href="XSDFeature.html#getLexicalValue()">
+<area shape=rect coords="192,263,514,281" href="XSDSchema.html#getDocument()">
+<area shape=rect coords="192,281,514,298" href="XSDSchema.html#getSchemaLocation()">
+<area shape=rect coords="193,298,514,313" href="XSDSchema.html#getTargetNamespace()">
+<area shape=rect coords="193,313,515,328" href="XSDSchema.html#getAttributeFormDefault()">
+<area shape=rect coords="191,329,517,344" href="XSDSchema.html#getElementFormDefault()">
+<area shape=rect coords="192,345,517,361" href="XSDSchema.html#getFinalDefault()">
+<area shape=rect coords="192,364,516,377" href="XSDSchema.html#getBlockDefault()">
+<area shape=rect coords="193,378,516,396" href="XSDSchema.html#getVersion()">
+<area shape=rect coords="557,537,870,555" href="XSDElementDeclaration.html#getLexicalFinal()">
+<area shape=rect coords="555,555,867,575" href="XSDElementDeclaration.html#getBlock()">
+<area shape=rect coords="163,669,410,689" href="XSDSimpleTypeDefinition.html#getLexicalFinal()">
+<area shape=rect coords="445,638,724,653" href="XSDComplexTypeDefinition.html#getLexicalFinal()">
+<area shape=rect coords="445,654,724,669" href="XSDComplexTypeDefinition.html#getBlock()">
+<area shape=rect coords="445,670,723,687" href="XSDComplexTypeDefinition.html#isMixed()">
+<area shape=rect coords="225,447,401,462" href="XSDDisallowedSubstitutions.html#SUBSTITUTION">
+<area shape=rect coords="225,462,402,479" href="XSDDisallowedSubstitutions.html#EXTENSION">
+<area shape=rect coords="225,479,402,495" href="XSDDisallowedSubstitutions.html#RESTRICTION">
+<area shape=rect coords="226,496,401,514" href="XSDDisallowedSubstitutions.html#ALL">
+<area shape=rect coords="760,452,868,470" href="XSDForm.html#QUALIFIED">
+<area shape=rect coords="762,469,870,488" href="XSDForm.html#UNQUALIFIED">
+<area shape=rect coords="6,511,169,530" href="XSDAttributeUseCategory.html#OPTIONAL">
+<area shape=rect coords="6,531,169,544" href="XSDAttributeUseCategory.html#PROHIBITED">
+<area shape=rect coords="4,545,168,561" href="XSDAttributeUseCategory.html#REQUIRED">
+<area shape=rect coords="189,562,365,580" href="XSDProhibitedSubstitutions.html#EXTENSION">
+<area shape=rect coords="190,581,365,595" href="XSDProhibitedSubstitutions.html#RESTRICTION">
+<area shape=rect coords="190,597,364,612" href="XSDProhibitedSubstitutions.html#ALL">
+<area shape=rect coords="750,635,869,653" href="XSDComplexFinal.html#EXTENSION">
+<area shape=rect coords="751,653,869,668" href="XSDComplexFinal.html#RESTRICTION">
+<area shape=rect coords="747,668,870,684" href="XSDComplexFinal.html#ALL">
+</map>
+
+
+<map name="ConcreteContainment">
+<area shape=rect coords="5,8,170,40" href="XSDParticleContent.html">
+<area shape=rect coords="41,83,115,117" href="XSDTerm.html">
+<area shape=rect coords="171,83,261,117" href="XSDSchema.html">
+<area shape=rect coords="347,82,483,117" href="XSDSchemaContent.html">
+<area shape=rect coords="22,165,132,199" href="XSDModelGroup.html">
+<area shape=rect coords="157,164,368,200" href="XSDElementDeclaration.html">
+<area shape=rect coords="390,165,563,199" href="XSDAttributeGroupContent.html">
+<area shape=rect coords="588,165,726,199" href="XSDRedefineContent.html">
+<area shape=rect coords="771,164,909,200" href="XSDSchemaDirective.html">
+<area shape=rect coords="155,267,348,301" href="XSDIdentityConstraintDefinition.html">
+<area shape=rect coords="393,267,509,304" href="XSDAttributeUse.html">
+<area shape=rect coords="638,233,725,266" href="XSDRedefine.html">
+<area shape=rect coords="758,229,913,266" href="XSDSchemaCompositor.html">
+<area shape=rect coords="625,296,750,332" href="XSDTypeDefinition.html">
+<area shape=rect coords="773,298,928,332" href="XSDNotationDeclaration.html">
+<area shape=rect coords="82,354,175,390" href="XSDWildcard.html">
+<area shape=rect coords="204,355,330,390" href="XSDXPathDefinition.html">
+<area shape=rect coords="369,354,523,390" href="XSDAttributeDeclaration.html">
+<area shape=rect coords="538,354,714,389" href="XSDAttributeGroupDefinition.html">
+<area shape=rect coords="752,354,939,389" href="XSDModelGroupDefinition.html">
+<area shape=rect coords="153,440,319,477" href="XSDComplexTypeContent.html">
+<area shape=rect coords="5,522,89,557" href="XSDParticle.html">
+<area shape=rect coords="323,523,485,558" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="587,523,736,558" href="XSDConstrainingFacet.html">
+<area shape=rect coords="759,522,932,558" href="XSDComplexTypeDefinition.html">
+
+<area shape=poly coords="15,40,22,52,69,52,67,66,15,66,16,520,3,521,6,65,1,55,8,37,15,40" href="XSDParticle.html#getContent()">
+<area shape=poly coords="28,199,27,520,42,519,66,501,66,490,98,487,97,473,41,471,37,441,44,199,28,199" href="XSDModelGroup.html#getContents()">
+<area shape=poly coords="53,199,52,434,41,434,42,447,120,447,120,438,131,432,140,435,377,432,420,435,875,435,875,388,859,388,860,424,725,428,714,424,376,426,132,426,71,425,70,197,53,199" href="XSDModelGroupDefinition.html#getModelGroup()">
+<area shape=poly coords="125,390,129,427,127,453,124,579,98,581,101,611,840,610,836,556,820,559,818,601,801,599,294,600,291,581,141,579,133,428,140,389,125,390" href="XSDComplexTypeDefinition.html#getAttributeWildcardContent()">
+<area shape=poly coords="161,197,161,267,182,264,201,258,201,243,348,243,345,226,178,223,178,197,161,197" href="XSDElementDeclaration.html#getIdentityConstraintDefinitions()">
+<area shape=poly coords="261,88,304,90,304,79,336,81,348,99,337,121,278,120,260,106,261,88" href="XSDSchema.html#getContents()">
+<area shape=poly coords="211,302,208,319,170,320,169,342,210,341,218,353,234,342,257,341,254,317,230,315,227,301,211,302" href="XSDIdentityConstraintDefinition.html#getFields()">
+<area shape=poly coords="279,300,275,316,264,316,264,337,284,352,307,345,349,341,349,321,300,319,293,302,279,300" href="XSDIdentityConstraintDefinition.html#getSelector()">
+<area shape=poly coords="151,389,146,404,150,423,352,423,357,420,381,421,394,423,611,424,611,389,595,388,595,412,384,412,377,418,351,417,345,396,166,396,160,385,151,389" href="XSDAttributeGroupDefinition.html#getAttributeWildcardContent()">
+<area shape=poly coords="302,476,300,559,252,560,251,579,299,579,302,596,313,599,803,598,803,558,787,558,787,585,496,588,448,591,341,589,342,571,318,569,316,475,302,476" href="XSDComplexTypeDefinition.html#getContent()">
+<area shape=poly coords="349,199,355,418,353,459,377,456,390,459,559,465,575,481,731,478,728,431,730,416,731,330,714,330,718,353,722,427,721,445,711,435,686,434,678,449,383,448,376,452,361,448,360,418,362,405,365,197,349,199" href="XSDElementDeclaration.html#getAnonymousTypeDefinition()">
+<area shape=poly coords="370,387,372,420,373,449,371,475,345,476,346,493,369,497,371,522,387,522,389,492,550,492,545,473,388,474,376,453,382,432,376,419,387,388,372,388,370,387" href="XSDAttributeDeclaration.html#getAnonymousTypeDefinition()">
+<area shape=poly coords="396,559,398,590,453,589,454,585,517,579,516,564,460,563,456,558,446,557,396,559" href="XSDSimpleTypeDefinition.html#getContents()">
+<area shape=poly coords="487,539,494,557,585,561,586,527,575,514,546,512,531,528,487,527,487,539" href="XSDSimpleTypeDefinition.html#getFacetContents()">
+<area shape=poly coords="409,304,408,313,394,315,395,334,415,351,434,347,441,335,486,335,486,319,430,319,427,302,409,304" href="XSDAttributeUse.html#getContent()">
+<area shape=poly coords="548,198,545,209,482,209,488,227,546,228,548,352,568,353,566,227,589,228,588,205,567,205,563,198,548,198" href="XSDAttributeGroupDefinition.html#getContents()">
+<area shape=poly coords="551,163,544,150,543,99,667,101,675,113,956,114,957,535,933,539,932,523,946,521,945,126,588,132,564,151,562,164,551,163" href="XSDComplexTypeDefinition.html#getAttributeContents()">
+<area shape=poly coords="669,200,666,205,644,205,640,221,666,221,673,230,689,226,748,221,750,202,688,201,682,196,669,200" href="XSDRedefine.html#getContents()">
+</map>
+
+
+<map name="ConcreteResolution">
+<area shape=rect coords="474,23,634,57" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="454,182,657,212" href="XSDComplexTypeDefinition.html">
+<area shape=rect coords="496,110,573,144" href="XSDFacet.html">
+<area shape=rect coords="441,281,526,312" href="XSDParticle.html">
+<area shape=rect coords="565,278,658,313" href="XSDWildcard.html">
+<area shape=rect coords="134,69,250,162" href="XSDSchema.html">
+<area shape=rect coords="124,228,272,264" href="XSDSchemaDirective.html">
+<area shape=rect coords="120,295,278,328" href="XSDSchemaCompositor.html">
+<area shape=rect coords="10,354,167,389" href="XSDAttributeDeclaration.html">
+<area shape=rect coords="231,357,406,390" href="XSDAttributeGroupDefinition.html">
+<area shape=rect coords="9,468,164,502" href="XSDElementDeclaration.html">
+<area shape=rect coords="244,469,407,499" href="XSDModelGroupDefinition.html">
+
+<area shape=poly coords="153,68,153,20,93,16,89,2,7,3,4,24,4,82,131,82,130,67,116,58,113,47,96,48,94,69,15,66,15,31,140,33,140,67,153,68" href="XSDSchema.html#getRootVersion()">
+<area shape=poly coords="140,166,140,185,12,183,10,138,88,142,97,156,122,156,133,137,130,103,2,101,0,127,0,200,158,200,159,167,140,166" href="XSDSchema.html#getIncorporatedVersions()">
+<area shape=poly coords="165,67,166,17,122,13,122,1,255,1,254,18,214,18,216,68,165,67" href="XSDSchema.html#getSchemaForSchema()">
+<area shape=poly coords="222,68,223,23,260,22,307,16,309,8,411,7,414,92,248,90,247,68,258,50,285,53,285,73,393,73,394,37,236,35,235,68,222,68" href="XSDSchema.html#getOriginalVersion()">
+<area shape=poly coords="245,110,258,94,390,95,397,102,413,108,413,319,277,320,278,304,398,304,398,122,293,119,286,137,257,134,246,117,245,110" href="XSDSchemaCompositor.html#getIncorporatedSchema()">
+<area shape=poly coords="184,166,182,199,166,198,165,216,196,227,211,219,333,217,333,195,213,196,207,168,184,166" href="XSDSchema.html#getReferencingDirectives()">
+<area shape=poly coords="271,237,366,235,364,166,303,164,287,178,252,178,243,151,256,138,377,135,388,156,385,256,268,258,271,237" href="XSDSchemaDirective.html#getResolvedSchema()">
+<area shape=poly coords="38,393,39,420,9,428,10,446,185,448,184,433,96,427,89,391,38,393" href="XSDAttributeDeclaration.html#getResolvedAttributeDeclaration()">
+<area shape=poly coords="259,392,255,427,209,429,206,452,409,453,409,431,306,427,308,391,259,392" href="XSDAttributeGroupDefinition.html#getResolvedAttributeGroupDefinition()">
+<area shape=poly coords="36,505,36,540,6,540,8,559,190,562,187,542,90,537,90,505,36,505" href="XSDElementDeclaration.html#getResolvedElementDeclaration()">
+<area shape=poly coords="267,504,263,539,219,541,220,562,413,562,407,540,323,539,321,504,267,504" href="XSDModelGroupDefinition.html#getResolvedModelGroupDefinition()">
+<area shape=poly coords="511,58,511,80,492,80,493,102,527,111,539,102,641,101,641,83,540,79,538,56,511,58" href="XSDSimpleTypeDefinition.html#getSyntheticFacets()">
+<area shape=poly coords="461,216,461,246,431,250,434,269,471,280,483,270,481,250,587,249,586,228,484,228,479,214,461,216" href="XSDComplexTypeDefinition.html#getSyntheticParticle()">
+<area shape=poly coords="628,216,626,255,516,256,517,273,622,273,638,280,649,272,673,273,672,252,644,252,644,215,628,216" href="XSDComplexTypeDefinition.html#getSyntheticWildcard()">
+<area shape=poly coords="630,315,621,336,512,335,510,365,406,363,407,379,644,379,647,354,668,353,666,332,644,315,630,315" href="XSDAttributeGroupDefinition.html#getSyntheticWildcard()">
+</map>
+
+
+<map name="Diagnostics">
+<area shape=rect coords="8,6,95,29" href="XSDSchema.html">
+<area shape=rect coords="165,8,394,29" href="XSDConcreteComponent.html">
+<area shape=rect coords="9,117,216,133" href="XSDDiagnostic.html">
+<area shape=rect coords="249,146,395,183" href="XSDDiagnosticSeverity.html">
+
+
+<area shape=poly coords="28,46,26,83,6,85,7,101,35,116,55,108,138,107,136,88,50,85,47,45,28,46" href="XSDSchema.html#getAllDiagnostics()">
+<area shape=poly coords="200,46,201,84,181,86,184,102,209,115,223,107,300,104,294,87,221,85,219,46,200,46" href="XSDConcreteComponent.html#getDiagnostics()">
+<area shape=poly coords="218,123,331,122,330,73,252,73,247,58,326,58,336,45,353,52,373,56,373,72,344,75,343,136,218,138,218,123" href="XSDDiagnostic.html#getComponents()">
+<area shape=rect coords="8,137,217,155" href="XSDDiagnostic.html#getSeverity()">
+<area shape=rect coords="8,155,219,170" href="XSDDiagnostic.html#getMessage()">
+<area shape=rect coords="8,171,219,186" href="XSDDiagnostic.html#getLocationURI()">
+<area shape=rect coords="9,186,218,201" href="XSDDiagnostic.html#getLine()">
+<area shape=rect coords="9,201,218,218" href="XSDDiagnostic.html#getColumn()">
+<area shape=rect coords="9,219,217,234" href="XSDDiagnostic.html#getNode()">
+<area shape=rect coords="9,234,216,251" href="XSDDiagnostic.html#getAnnotationURI()">
+<area shape=rect coords="250,182,397,201" href="XSDDiagnosticSeverity.html#FATAL">
+<area shape=rect coords="250,200,397,217" href="XSDDiagnosticSeverity.html#ERROR">
+<area shape=rect coords="250,217,397,233" href="XSDDiagnosticSeverity.html#WARNING">
+<area shape=rect coords="249,233,396,249" href="XSDDiagnosticSeverity.html#INFORMATION">
+</map>
+
+
+<map name="ConcreteSupplemental">
+<area shape=rect coords="7,6,165,27" href="XSDConcreteComponent.html">
+<area shape=rect coords="699,9,808,33" href="XSDDiagnostic.html">
+<area shape=rect coords="314,40,463,62" href="XSDNamedComponent.html">
+<area shape=rect coords="9,84,186,105" href="XSDRedefinableComponent.html">
+<area shape=rect coords="633,87,809,108" href="XSDFeature.html">
+<area shape=rect coords="8,173,268,192" href="XSDModelGroupDefinition.html">
+<area shape=rect coords="317,174,460,194" href="XSDTypeDefinition.html">
+<area shape=rect coords="562,183,808,206" href="XSDElementDeclaration.html">
+<area shape=rect coords="7,233,278,255" href="XSDAttributeGroupDefinition.html">
+<area shape=rect coords="535,253,795,274" href="XSDAttributeDeclaration.html">
+<area shape=rect coords="8,316,92,337" href="XSDParticle.html">
+<area shape=rect coords="206,341,376,363" href="XSDComplexTypeDefinition.html">
+<area shape=rect coords="665,306,809,328" href="XSDFacet.html">
+<area shape=rect coords="9,367,136,388" href="XSDNumericFacet.html">
+<area shape=rect coords="7,419,128,439" href="XSDOrderedFacet.html">
+<area shape=rect coords="293,408,483,428" href="XSDSimpleTypeDefinition.html">
+<area shape=rect coords="685,378,810,399" href="XSDBoundedFacet.html">
+<area shape=rect coords="676,428,809,449" href="XSDCardinalityFacet.html">
+<area shape=rect coords="4,470,138,490" href="XSDMinFacet.html">
+<area shape=rect coords="675,482,808,503" href="XSDMaxFacet.html">
+<area shape=rect coords="3,543,159,565" href="XSDMinInclusiveFacet.html">
+<area shape=rect coords="665,552,811,574" href="XSDMaxInclusiveFacet.html">
+<area shape=rect coords="4,595,159,615" href="XSDMinExclusiveFacet.html">
+<area shape=rect coords="656,604,807,624" href="XSDMaxExclusiveFacet.html">
+<area shape=rect coords="3,644,148,665" href="XSDEnumerationFacet.html">
+<area shape=rect coords="696,656,810,674" href="XSDPatternFacet.html">
+<area shape=rect coords="5,701,117,721" href="XSDLengthFacet.html">
+<area shape=rect coords="665,706,808,727" href="XSDWhiteSpaceFacet.html">
+<area shape=rect coords="6,759,137,778" href="XSDMinLengthFacet.html">
+<area shape=rect coords="667,760,806,783" href="XSDMaxLengthFacet.html">
+<area shape=rect coords="5,807,137,828" href="XSDTotalDigitsFacet.html">
+<area shape=rect coords="655,813,809,834" href="XSDFractionDigitsFacet.html">
+
+
+<area shape=rect coords="7,104,185,124" href="XSDRedefinableComponent.html#isCircular()">
+<area shape=rect coords="313,61,462,78" href="XSDNamedComponent.html#getAliasName()">
+<area shape=rect coords="314,79,461,94" href="XSDNamedComponent.html#getURI()">
+<area shape=rect coords="313,94,462,111" href="XSDNamedComponent.html#getAliasURI()">
+<area shape=rect coords="313,112,463,128" href="XSDNamedComponent.html#getQName()">
+<area shape=rect coords="632,108,811,124" href="XSDFeature.html#isGlobal()">
+<area shape=rect coords="632,123,810,144" href="XSDFeature.html#isFeatureReference()">
+<area shape=rect coords="6,194,268,212" href="XSDModelGroupDefinition.html#isModelGroupDefinitionReference()">
+<area shape=rect coords="5,255,279,274" href="XSDAttributeGroupDefinition.html#isAttributeGroupDefinitionReference()">
+<area shape=rect coords="561,207,811,225" href="XSDElementDeclaration.html#isElementDeclarationReference()">
+<area shape=rect coords="562,225,811,240" href="XSDElementDeclaration.html#isCircular()">
+<area shape=rect coords="544,275,795,294" href="XSDAttributeDeclaration.html#isAttributeDeclarationReference()">
+<area shape=rect coords="664,328,808,345" href="XSDFacet.html#getFacetName()">
+<area shape=rect coords="663,345,810,363" href="XSDFacet.html#getEffectiveValue()">
+<area shape=rect coords="293,429,482,448" href="XSDSimpleTypeDefinition.html#getValidFacets()">
+<area shape=rect coords="2,492,136,508" href="XSDMinFacet.html#isInclusive()">
+<area shape=rect coords="3,508,136,528" href="XSDMinFacet.html#isExclusive()">
+<area shape=rect coords="675,502,808,520" href="XSDMaxFacet.html#isInclusive()">
+<area shape=rect coords="675,521,805,539" href="XSDMaxFacet.html#isExclusive()">
+<area shape=poly coords="161,604,173,590,319,590,321,449,333,450,331,620,159,622,161,604" href="XSDSimpleTypeDefinition.html#getMinExclusiveFacet()">
+<area shape=poly coords="650,612,620,588,446,586,447,449,435,449,438,623,654,627,650,612" href="XSDSimpleTypeDefinition.html#getMaxExclusiveFacet()">
+<area shape=poly coords="149,645,171,630,322,631,339,647,338,653,149,656,149,645" href="XSDSimpleTypeDefinition.html#getEnumerationFacets()">
+<area shape=poly coords="149,662,156,656,345,657,346,684,148,685,149,662" href="XSDSimpleTypeDefinition.html#getEffectiveEnumerationFacet()">
+<area shape=poly coords="691,653,635,644,633,636,492,633,431,652,431,663,693,663,691,653" href="XSDSimpleTypeDefinition.html#getPatternFacets()">
+<area shape=poly coords="692,678,677,666,425,665,424,688,692,690,692,678" href="XSDSimpleTypeDefinition.html#getEffectivePatternFacet()">
+<area shape=poly coords="118,705,134,689,320,690,351,705,350,714,117,715,118,705" href="XSDSimpleTypeDefinition.html#getLengthFacet()">
+<area shape=poly coords="118,725,134,715,358,717,358,737,117,741,118,725" href="XSDSimpleTypeDefinition.html#getEffectiveLengthFacet()">
+<area shape=poly coords="662,704,657,688,474,689,420,706,421,717,479,715,661,717,662,704" href="XSDSimpleTypeDefinition.html#getWhiteSpaceFacet()">
+<area shape=poly coords="662,731,645,718,426,720,413,721,415,743,662,742,662,731" href="XSDSimpleTypeDefinition.html#getEffectiveWhiteSpaceFacet()">
+<area shape=poly coords="137,758,151,742,350,744,370,746,368,767,135,771,137,758" href="XSDSimpleTypeDefinition.html#getMinLengthFacet()">
+<area shape=poly coords="136,779,152,770,381,771,380,799,138,797,136,779" href="XSDSimpleTypeDefinition.html#getEffectiveMinLengthFacet()">
+<area shape=poly coords="165,14,185,4,201,4,206,15,703,14,704,25,297,26,294,39,169,35,167,23,165,14" href="XSDDiagnostic.html#getPrimaryComponent()">
+<area shape=poly coords="628,86,493,92,496,114,631,125,628,86" href="XSDFeature.html#getResolvedFeature()">
+<area shape=poly coords="631,132,372,134,366,142,367,154,382,174,401,163,443,160,439,145,448,141,630,143,631,132" href="XSDFeature.html#getType()">
+<area shape=poly coords="459,176,530,175,526,195,491,199,491,232,458,231,459,176" href="XSDTypeDefinition.html#getBaseType()">
+<area shape=poly coords="460,240,525,240,526,251,497,263,495,291,459,293,460,240" href="XSDTypeDefinition.html#getRootType()">
+<area shape=poly coords="313,284,50,286,48,308,85,315,186,316,193,304,316,302,313,284" href="XSDTypeDefinition.html#getComplexType()">
+<area shape=poly coords="415,305,415,333,400,333,400,356,422,355,422,405,435,405,435,350,517,352,514,333,439,329,440,304,415,305" href="XSDTypeDefinition.html#getSimpleType()">
+<area shape=poly coords="331,304,330,314,216,313,218,335,330,334,340,340,350,340,356,330,355,304,331,304" href="XSDComplexTypeDefinition.html#getRootTypeDefinition()">
+<area shape=poly coords="438,407,440,358,561,360,561,375,477,380,478,407,438,407" href="XSDSimpleTypeDefinition.html#getRootTypeDefinition()">
+<area shape=poly coords="292,401,255,393,248,385,146,383,135,404,136,415,291,415,292,401" href="XSDSimpleTypeDefinition.html#getNumericFacet()">
+<area shape=poly coords="291,429,251,427,246,419,150,419,125,429,128,447,292,447,291,429" href="XSDSimpleTypeDefinition.html#getOrderedFacet()">
+<area shape=poly coords="481,405,535,392,665,391,682,406,679,421,661,415,483,418,481,405" href="XSDSimpleTypeDefinition.html#getBoundedFacet()">
+<area shape=poly coords="482,430,534,421,663,420,674,440,670,448,483,448,482,430" href="XSDSimpleTypeDefinition.html#getCardinalityFacet()">
+<area shape=poly coords="138,490,152,468,266,470,299,490,297,499,138,499,138,490" href="XSDSimpleTypeDefinition.html#getMinFacet()">
+<area shape=poly coords="138,514,152,500,305,502,304,526,138,526,138,514" href="XSDSimpleTypeDefinition.html#getEffectiveMinFacet()">
+<area shape=poly coords="472,494,516,480,658,475,674,494,671,506,637,502,472,502,472,494" href="XSDSimpleTypeDefinition.html#getMaxFacet()">
+<area shape=poly coords="673,521,657,506,603,506,464,507,464,530,673,532,673,521" href="XSDSimpleTypeDefinition.html#getEffectiveMaxFacet()">
+<area shape=poly coords="159,557,167,542,308,544,308,448,320,450,318,568,159,572,159,557" href="XSDSimpleTypeDefinition.html#getMinInclusiveFacet()">
+<area shape=poly coords="661,562,645,542,459,540,462,450,446,449,452,569,459,575,662,578,661,562" href="XSDSimpleTypeDefinition.html#getMaxInclusiveFacet()">
+<area shape=poly coords="666,758,639,744,461,743,409,758,411,768,664,772,666,758" href="XSDSimpleTypeDefinition.html#getMaxLengthFacet()">
+<area shape=poly coords="665,788,643,775,425,774,404,773,405,798,666,803,665,788" href="XSDSimpleTypeDefinition.html#getEffectiveMaxLengthFacet()">
+<area shape=poly coords="139,810,159,802,335,801,386,816,385,826,137,826,139,810" href="XSDSimpleTypeDefinition.html#getTotalDigitsFacet()">
+<area shape=poly coords="138,833,154,828,393,830,392,850,138,851,138,833" href="XSDSimpleTypeDefinition.html#getEffectiveTotalDigitsFacet()">
+<area shape=poly coords="651,819,638,805,444,804,397,820,399,830,440,829,653,828,651,819" href="XSDSimpleTypeDefinition.html#getFractionDigitsFacet()">
+<area shape=poly coords="653,838,639,829,419,832,395,834,394,851,653,855,653,838" href="XSDSimpleTypeDefinition.html#getEffectiveFractionDigitsFacet()">
+
+</map>
+
+
+<h2><a name="xsd-changes">XSD API Changes</a></h2>
+
+<p>
+An earlier version of this API was incorporated into Websphere Studio Workbench v2.0 beta,
+in which the package names were called <code>com.ibm.etools.xsd</code>.
+</p>
+<p>
+This older version of the API was generated using more complex rules than this current version.
+As a result, the newer version has significantly fewer (redundant) methods.
+</p>
+
+<h3>No Boolean Getter or Setter</h3>
+<p>
+All methods of the form:
+<pre>
+ Boolean getXyz()
+ void setXyz(Boolean)
+</pre>
+are removed. Use this form instead:
+<pre>
+ boolean isXyz();
+ void setXyz(boolean);
+</pre>
+</p>
+
+
+<h3>No Wrapper-type Getter or Setter</h3>
+<p>
+All methods of the form:
+<pre>
+ Integer getXyz();
+ void setXyz(Integer);
+ int getXyzValue();
+</pre>
+are removed. Use this form instead:
+<pre>
+ int getXyz(int);
+ void setXyz(int);
+</pre>
+</p>
+
+<h3>No IsSet Tester for Null-pointer Test</h3>
+<p>
+All methods of the form
+<pre>
+ Abc isSetXyz()
+</pre>
+where
+<pre>
+ getXyz() != null
+</pre>
+yields the same answer, have been removed. Use a null test instead.
+</p>
+
+
+<h3>Type-safe Enumerations</h3>
+<p>
+Enumerations are now implemented using Java type-safe enums, rather than using EEnumLiteral.
+As a result, this set of methods:
+<pre>
+ Integer getXyz();
+ String getXyzString();
+ int getXyzValue();
+ EEnumLiteral getXyzLiteral();
+ void setXyz(Integer);
+ void setXyz(String);
+ void setXyz(int);
+ void setXyz(EEnumLiteral);
+</pre>
+is reduced to
+<pre>
+ Abc getXyz();
+ void setXyz(Abc);
+</pre>
+where Abc is the type-same enumeration.
+Rather than accessing the literal like this:
+<pre>
+ EEnumLiteral XSDPackage.getAbc__EnumeratorGhi();
+</pre>
+you can access the literal like this:
+<pre>
+ Abc.ENUMERATOR_GHI_LITERAL
+</pre>
+The name and int value are accessible like this:
+<pre>
+ Abc.ENUMERATOR_GHI_LITERAL.getName()
+ Abc.ENUMERATOR_GHI_LITERAL.getValue()
+</pre>
+And conversion from String or int is supported like this:
+<pre>
+ Abc.get(Abc.ENUMERATOR_GHI_LITERAL.getName())
+ Abc.get(Abc.ENUMERATOR_GHI_LITERAL.getValue())
+</pre>
+<p>
+
+<h2><a name="emf-changes">EMF API Changes</a></h2>
+
+<p>
+Naturally there have been many changes within EMF itself.
+Below are described the most significant changes that will impact the XSD client.
+</p>
+
+<h3>Package and Factory Access</h3>
+<p>
+Rather than accessing a package or factory like this:
+<pre>
+ XSDPackage xsdPackage = (XSDPackage)RefRegister.getPackage(XSDPackage.packageURI);
+ XSDFactory xsdFactory = xsdPackage.getXSDFactory();
+</pre>
+you can access it like this:
+<pre>
+ XSDPackage.eINSTANCE;
+ XSDFactory.eINSTANCE;
+</pre>
+<p>
+
+
+<h3>Resources</h3>
+
+<p>
+Rather than registering the resource factory like this:
+<pre>
+ ResourceFactoryRegister.registerExtension("xsd", new XSDResourceFactoryImpl());
+</pre>
+you can register it like this:
+<pre>
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+</pre>
+You can also do this directly on just a resource set now too:
+<pre>
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+</pre>
+A resource is loaded like this:
+<pre>
+ XSDResourceImpl xsdSchemaResource =
+ (XSDResourceImpl)resourceSet.getResource(URI.createDeviceURI(xsdSchemaURI), true);
+</pre>
+<p>
+
+
+<h3>URI Reference Removed to use EMF URI Fragment</h3>
+
+<p>
+The URIReference for XSDComponet and XSDDiagnostic have been removed.
+The function is subsumbed by the EMF concept of a URI Fragment Path.
+
+
+<h3>Owner Removed to use Containment</h3>
+
+<p>
+The concept of ownership has been eliminated in favor of "transient" containment.
+This ensures that absolutely every valid component is contained by a schema.
+The relations
+<a href="XSDConcreteComponent.html#getDiagnostics()">XSDConcreteComponent.getDiagnostics()</a>,
+<a href="XSDSimpleTypeDefinition.html#getFundamentalFacets()">XSDSimpleTypeDefinition.getFundamentalFacets()</a>,
+and <a href="XSDSchema.html#getIncorporatedVersions()">XSDSchema.getIncorporatedVersions()</a>,
+are now black diamond,
+and <a href="XSDDiagnostic.html">XSDDiagnostic</a>
+extends <a href="XSDConcreteComponent.html">XSDConcreteComponent</a>.
+The new relations
+<a href="XSDSimpleTypeDefinition.html#getSyntheticFacets()">XSDSimpleTypeDefinition.getSyntheticFacets()</a>,
+<a href="XSDComplexTypeDefinition.html#getSyntheticParticle()">XSDComplexTypeDefinition.getSyntheticParticle()</a>,
+<a href="XSDAttributeGroupDefinition.html#getSyntheticWildcard()">XSDAttributeGroupDefinition.getSyntheticWildcard()</a>,
+and <a href="XSDComplexTypeDefinition.html#getSyntheticWildcard()">XSDComplexTypeDefiniton.getSyntheticWildcard()</a>
+are defined to contain the synthesized components that were formerly only just owned.
+None of these relations should be modified by the client.
+
+
+<h2><a name="xsd-version">XSD Version</a></h2>
+<p>
+First version, August 1, 2002, donated by IBM Corporation.
+<ul>
+<li>
+Ed Merks merks@ca.ibm.com,
+</li>
+<li>
+Bob Schloss rschloss@us.ibm.com,
+</li>
+<li>
+Shane Curcuru shane_curcuru@us.ibm.com,
+</li>
+<li>
+and others.
+</li>
+</ul>
+</p>
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultErrorHandler.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultErrorHandler.java
new file mode 100644
index 0000000..7a21f71
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultErrorHandler.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2002-2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPlugin;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXParseException;
+
+
+/**
+ * This helper class provides a default implementation for SAX ErrorHandler.
+ *
+ */
+public class DefaultErrorHandler implements ErrorHandler
+{
+
+ protected List<XSDDiagnostic> xsdDiagnostics = new ArrayList<XSDDiagnostic>();
+
+ protected XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+ public void fatalError(SAXParseException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.FATAL_LITERAL);
+ xsdDiagnostic.setMessage(XSDPlugin.INSTANCE.getString("_UI_ParserError_message", new Object []{ exception.getMessage() }));
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ public void error(SAXParseException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage("DOM:" + exception.getMessage());
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ public void warning(SAXParseException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.WARNING_LITERAL);
+ xsdDiagnostic.setMessage("DOM:" + exception.getMessage());
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ public Collection<XSDDiagnostic> getDiagnostics()
+ {
+ return xsdDiagnostics;
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultJAXPConfiguration.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultJAXPConfiguration.java
new file mode 100644
index 0000000..bef0883
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultJAXPConfiguration.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+
+
+/**
+ * This class provides a default implementation of JAXPConfiguration interface. It creates
+ * and configures SAX parser, DOM parser and transformer using options needed by XSD implementation.
+ */
+public class DefaultJAXPConfiguration implements JAXPConfiguration
+{
+ public Transformer createTransformer(String encoding) throws TransformerException
+ {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+
+ try
+ {
+ transformerFactory.setAttribute("indent-number", 2);
+ }
+ catch (IllegalArgumentException exception)
+ {
+ // Ignore
+ }
+
+ Transformer transformer = transformerFactory.newTransformer();
+
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+
+ // Unless a width is set, there will be only line breaks but no indentation.
+ // The IBM JDK and the Sun JDK don't agree on the property name,
+ // so we set them both.
+ //
+ transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "2");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+ if (encoding != null)
+ {
+ transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
+ }
+ return transformer;
+ }
+
+ /**
+ * Creates a SAXParser and sets some default options.
+ */
+ public SAXParser createSAXParser(LexicalHandler lexicalHandler) throws ParserConfigurationException, SAXException
+ {
+ SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+ saxParserFactory.setNamespaceAware(true);
+ saxParserFactory.setValidating(false);
+ saxParserFactory.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+
+ SAXParser saxParser = saxParserFactory.newSAXParser();
+ saxParser.setProperty("http://xml.org/sax/properties/lexical-handler", lexicalHandler);
+ return saxParser;
+
+ }
+
+ /**
+ * Creates a DocumentBuilder and sets some default options.
+ * If features or properties are available, these features and properties are set on the documentBuilder.
+ */
+ public DocumentBuilder createDocumentBuilder(ErrorHandler errorHandler) throws ParserConfigurationException
+ {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ documentBuilderFactory.setNamespaceAware(true);
+ documentBuilderFactory.setValidating(false);
+ try
+ {
+ documentBuilderFactory.setAttribute("http://apache.org/xml/features/dom/defer-node-expansion", Boolean.FALSE);
+ }
+ catch (IllegalArgumentException e)
+ {
+ // do nothing
+ }
+ DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder();
+ parser.setEntityResolver(createEntityResolver());
+ parser.setErrorHandler(errorHandler);
+ return parser;
+ }
+
+ public EntityResolver createEntityResolver()
+ {
+ return XSDResourceImpl.createEntityResolver();
+ }
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultJAXPPool.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultJAXPPool.java
new file mode 100644
index 0000000..871e39c
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/DefaultJAXPPool.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2002-2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+
+package org.eclipse.xsd.util;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.ext.LexicalHandler;
+
+
+/**
+ * The DefaultJAXPPool class provides a thread-safe implementation of JAXPPool interface.
+ *
+ */
+public class DefaultJAXPPool implements JAXPPool
+{
+ private final List<DocumentBuilder> documentBuilderCache = new ArrayList<DocumentBuilder>();
+
+ private final List<Transformer> transformerCache = new ArrayList<Transformer>();
+
+ private final List<SAXParser> saxParserCache = new ArrayList<SAXParser>();
+
+ private final JAXPConfiguration configuration;
+
+ /**
+ * Creates an instance using {@link DefaultJAXPConfiguration}.
+ */
+ public DefaultJAXPPool()
+ {
+ this(new DefaultJAXPConfiguration());
+ }
+
+ /**
+ * Creates an instance using the specified JAXPConfiguration.
+ * @param configuration the non-null configuration used to create new
+ * {@link #getDocumentBuilder(ErrorHandler) builders},
+ * {@link #getSAXParser(LexicalHandler) parsers},
+ * and {@link #getTransformer(String) transformers}.
+ */
+ public DefaultJAXPPool(JAXPConfiguration configuration)
+ {
+ this.configuration = configuration;
+ }
+
+ public synchronized DocumentBuilder getDocumentBuilder(ErrorHandler errorHandler) throws ParserConfigurationException, SAXException
+ {
+ int size = documentBuilderCache.size();
+ if (size > 0)
+ {
+ DocumentBuilder documentBuilder = documentBuilderCache.remove(size - 1);
+ documentBuilder.setErrorHandler(errorHandler);
+ return documentBuilder;
+ }
+ else
+ {
+ return configuration.createDocumentBuilder(errorHandler);
+ }
+ }
+
+ public synchronized void releaseDocumentBuilder(DocumentBuilder documentBuilder)
+ {
+ if (documentBuilder != null)
+ {
+ documentBuilder.setErrorHandler
+ (new ErrorHandler()
+ {
+ public void error(SAXParseException exception) throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void warning(SAXParseException exception) throws SAXException
+ {
+ // Ignore.
+ }
+ });
+ documentBuilderCache.add(documentBuilder);
+ }
+ }
+
+ public synchronized SAXParser getSAXParser(LexicalHandler lexicalHandler) throws ParserConfigurationException, SAXException
+ {
+ int size = saxParserCache.size();
+ if (size > 0)
+ {
+ SAXParser saxParser = saxParserCache.remove(size - 1);
+ saxParser.setProperty("http://xml.org/sax/properties/lexical-handler", lexicalHandler);
+ return saxParser;
+ }
+ else
+ {
+ return configuration.createSAXParser(lexicalHandler);
+ }
+ }
+
+ public synchronized void releaseSAXParser(SAXParser parser)
+ {
+ if (parser != null)
+ {
+ try
+ {
+ parser.setProperty
+ ("http://xml.org/sax/properties/lexical-handler",
+ new LexicalHandler()
+ {
+ public void comment(char[] comment, int start, int length) throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void endCDATA() throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void endDTD() throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void endEntity(String name) throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void startCDATA() throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void startDTD(String name, String publicId, String systemId) throws SAXException
+ {
+ // Ignore.
+ }
+
+ public void startEntity(String name) throws SAXException
+ {
+ // Ignore.
+ }
+ });
+ }
+ catch (SAXNotRecognizedException exception)
+ {
+ // Ignore.
+ }
+ catch (SAXNotSupportedException exception)
+ {
+ // Ignore.
+ }
+ saxParserCache.add(parser);
+ }
+ }
+
+ public synchronized Transformer getTransformer(String encoding) throws TransformerException
+ {
+ int size = transformerCache.size();
+ if (size > 0)
+ {
+ Transformer transformer = transformerCache.remove(size - 1);
+ if (encoding != null)
+ {
+ transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
+ }
+ return transformer;
+ }
+ else
+ {
+ return configuration.createTransformer(encoding);
+ }
+ }
+
+ public synchronized void releaseTransformer(Transformer transformer)
+ {
+ if (transformer != null)
+ {
+ transformerCache.add(transformer);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/JAXPConfiguration.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/JAXPConfiguration.java
new file mode 100644
index 0000000..d569583
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/JAXPConfiguration.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2002-2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+
+/**
+ * This interface defines methods to create and configure SAX parser, DOM parser and Transformer.
+ */
+public interface JAXPConfiguration
+{
+ SAXParser createSAXParser(LexicalHandler lexicalHandler) throws ParserConfigurationException, SAXException;
+
+ DocumentBuilder createDocumentBuilder(ErrorHandler errorHandler) throws ParserConfigurationException;
+
+ Transformer createTransformer(String encoding) throws TransformerException;
+
+ EntityResolver createEntityResolver();
+
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/JAXPPool.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/JAXPPool.java
new file mode 100644
index 0000000..616a8d6
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/JAXPPool.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2002-2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+
+/**
+ * This interface defines pool that can be used to fetch and cache document builders, SAX parsers, and transformers.
+ * It's generally expected that instances will be thread safe.
+ */
+public interface JAXPPool
+{
+ /**
+ * Fetches a document builder and sets the given error handler.
+ * @param errorHandler the error handler to use while build documents.
+ * @return a document builder.
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ */
+ DocumentBuilder getDocumentBuilder(ErrorHandler errorHandler) throws ParserConfigurationException, SAXException;
+
+ /**
+ * Returns a document builder {@link #getDocumentBuilder(ErrorHandler) fetched} from this pool
+ * back to the pool for subsequent reuse.
+ * @param documentBuilder the document builder to release.
+ */
+ void releaseDocumentBuilder(DocumentBuilder documentBuilder);
+
+ /**
+ * Fetches a SAX parser and set the given lexical handler.
+ * @param lexicalHandler the lexical handler to use while parsing.
+ * @return a SAX parser.
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ */
+ SAXParser getSAXParser(LexicalHandler lexicalHandler) throws ParserConfigurationException, SAXException;
+
+ /**
+ * Returns a SAX parser {@link #getSAXParser(LexicalHandler) fetched} from this pool
+ * back to the pool for subsequent reuse.
+ * @param parser the SAX parser to release.
+ */
+ void releaseSAXParser(SAXParser parser);
+
+ /**
+ * Fetches a transformer and set the given encoding.
+ * @param encoding the encoding used to convert characters to bytes.
+ * @return a transformer.
+ * @throws TransformerException
+ */
+ Transformer getTransformer(String encoding) throws TransformerException;
+
+ /**
+ * Returns a transformer {@link #getTransformer(String) fetched} from this pool
+ * back to the pool for subsequent reuse.
+ * @param transformer the transformer to release.
+ */
+ void releaseTransformer(Transformer transformer);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDAdapterFactory.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDAdapterFactory.java
new file mode 100644
index 0000000..c2d6954
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDAdapterFactory.java
@@ -0,0 +1,1262 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xsd.*;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage
+ * @generated
+ */
+public class XSDAdapterFactory extends AdapterFactoryImpl
+{
+
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static XSDPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = XSDPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDSwitch<Adapter> modelSwitch =
+ new XSDSwitch<Adapter>()
+ {
+ @Override
+ public Adapter caseXSDAnnotation(XSDAnnotation object)
+ {
+ return createXSDAnnotationAdapter();
+ }
+ @Override
+ public Adapter caseXSDAttributeDeclaration(XSDAttributeDeclaration object)
+ {
+ return createXSDAttributeDeclarationAdapter();
+ }
+ @Override
+ public Adapter caseXSDAttributeGroupContent(XSDAttributeGroupContent object)
+ {
+ return createXSDAttributeGroupContentAdapter();
+ }
+ @Override
+ public Adapter caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object)
+ {
+ return createXSDAttributeGroupDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseXSDAttributeUse(XSDAttributeUse object)
+ {
+ return createXSDAttributeUseAdapter();
+ }
+ @Override
+ public Adapter caseXSDBoundedFacet(XSDBoundedFacet object)
+ {
+ return createXSDBoundedFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDCardinalityFacet(XSDCardinalityFacet object)
+ {
+ return createXSDCardinalityFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDComplexTypeContent(XSDComplexTypeContent object)
+ {
+ return createXSDComplexTypeContentAdapter();
+ }
+ @Override
+ public Adapter caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object)
+ {
+ return createXSDComplexTypeDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseXSDComponent(XSDComponent object)
+ {
+ return createXSDComponentAdapter();
+ }
+ @Override
+ public Adapter caseXSDConcreteComponent(XSDConcreteComponent object)
+ {
+ return createXSDConcreteComponentAdapter();
+ }
+ @Override
+ public Adapter caseXSDConstrainingFacet(XSDConstrainingFacet object)
+ {
+ return createXSDConstrainingFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDDiagnostic(XSDDiagnostic object)
+ {
+ return createXSDDiagnosticAdapter();
+ }
+ @Override
+ public Adapter caseXSDElementDeclaration(XSDElementDeclaration object)
+ {
+ return createXSDElementDeclarationAdapter();
+ }
+ @Override
+ public Adapter caseXSDEnumerationFacet(XSDEnumerationFacet object)
+ {
+ return createXSDEnumerationFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDFacet(XSDFacet object)
+ {
+ return createXSDFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDFeature(XSDFeature object)
+ {
+ return createXSDFeatureAdapter();
+ }
+ @Override
+ public Adapter caseXSDFixedFacet(XSDFixedFacet object)
+ {
+ return createXSDFixedFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDFractionDigitsFacet(XSDFractionDigitsFacet object)
+ {
+ return createXSDFractionDigitsFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDFundamentalFacet(XSDFundamentalFacet object)
+ {
+ return createXSDFundamentalFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDIdentityConstraintDefinition(XSDIdentityConstraintDefinition object)
+ {
+ return createXSDIdentityConstraintDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseXSDImport(XSDImport object)
+ {
+ return createXSDImportAdapter();
+ }
+ @Override
+ public Adapter caseXSDInclude(XSDInclude object)
+ {
+ return createXSDIncludeAdapter();
+ }
+ @Override
+ public Adapter caseXSDLengthFacet(XSDLengthFacet object)
+ {
+ return createXSDLengthFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMaxExclusiveFacet(XSDMaxExclusiveFacet object)
+ {
+ return createXSDMaxExclusiveFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMaxFacet(XSDMaxFacet object)
+ {
+ return createXSDMaxFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMaxInclusiveFacet(XSDMaxInclusiveFacet object)
+ {
+ return createXSDMaxInclusiveFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMaxLengthFacet(XSDMaxLengthFacet object)
+ {
+ return createXSDMaxLengthFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMinExclusiveFacet(XSDMinExclusiveFacet object)
+ {
+ return createXSDMinExclusiveFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMinFacet(XSDMinFacet object)
+ {
+ return createXSDMinFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMinInclusiveFacet(XSDMinInclusiveFacet object)
+ {
+ return createXSDMinInclusiveFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDMinLengthFacet(XSDMinLengthFacet object)
+ {
+ return createXSDMinLengthFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDModelGroup(XSDModelGroup object)
+ {
+ return createXSDModelGroupAdapter();
+ }
+ @Override
+ public Adapter caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
+ {
+ return createXSDModelGroupDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseXSDNamedComponent(XSDNamedComponent object)
+ {
+ return createXSDNamedComponentAdapter();
+ }
+ @Override
+ public Adapter caseXSDNotationDeclaration(XSDNotationDeclaration object)
+ {
+ return createXSDNotationDeclarationAdapter();
+ }
+ @Override
+ public Adapter caseXSDNumericFacet(XSDNumericFacet object)
+ {
+ return createXSDNumericFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDOrderedFacet(XSDOrderedFacet object)
+ {
+ return createXSDOrderedFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDParticle(XSDParticle object)
+ {
+ return createXSDParticleAdapter();
+ }
+ @Override
+ public Adapter caseXSDParticleContent(XSDParticleContent object)
+ {
+ return createXSDParticleContentAdapter();
+ }
+ @Override
+ public Adapter caseXSDPatternFacet(XSDPatternFacet object)
+ {
+ return createXSDPatternFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDRedefinableComponent(XSDRedefinableComponent object)
+ {
+ return createXSDRedefinableComponentAdapter();
+ }
+ @Override
+ public Adapter caseXSDRedefineContent(XSDRedefineContent object)
+ {
+ return createXSDRedefineContentAdapter();
+ }
+ @Override
+ public Adapter caseXSDRedefine(XSDRedefine object)
+ {
+ return createXSDRedefineAdapter();
+ }
+ @Override
+ public Adapter caseXSDRepeatableFacet(XSDRepeatableFacet object)
+ {
+ return createXSDRepeatableFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDSchema(XSDSchema object)
+ {
+ return createXSDSchemaAdapter();
+ }
+ @Override
+ public Adapter caseXSDSchemaCompositor(XSDSchemaCompositor object)
+ {
+ return createXSDSchemaCompositorAdapter();
+ }
+ @Override
+ public Adapter caseXSDSchemaContent(XSDSchemaContent object)
+ {
+ return createXSDSchemaContentAdapter();
+ }
+ @Override
+ public Adapter caseXSDSchemaDirective(XSDSchemaDirective object)
+ {
+ return createXSDSchemaDirectiveAdapter();
+ }
+ @Override
+ public Adapter caseXSDScope(XSDScope object)
+ {
+ return createXSDScopeAdapter();
+ }
+ @Override
+ public Adapter caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object)
+ {
+ return createXSDSimpleTypeDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseXSDTerm(XSDTerm object)
+ {
+ return createXSDTermAdapter();
+ }
+ @Override
+ public Adapter caseXSDTotalDigitsFacet(XSDTotalDigitsFacet object)
+ {
+ return createXSDTotalDigitsFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDTypeDefinition(XSDTypeDefinition object)
+ {
+ return createXSDTypeDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseXSDWhiteSpaceFacet(XSDWhiteSpaceFacet object)
+ {
+ return createXSDWhiteSpaceFacetAdapter();
+ }
+ @Override
+ public Adapter caseXSDWildcard(XSDWildcard object)
+ {
+ return createXSDWildcardAdapter();
+ }
+ @Override
+ public Adapter caseXSDXPathDefinition(XSDXPathDefinition object)
+ {
+ return createXSDXPathDefinitionAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object)
+ {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target)
+ {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDAnnotation <em>Annotation</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDAnnotation
+ * @generated
+ */
+ public Adapter createXSDAnnotationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDAttributeDeclaration <em>Attribute Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDAttributeDeclaration
+ * @generated
+ */
+ public Adapter createXSDAttributeDeclarationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDAttributeGroupContent <em>Attribute Group Content</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDAttributeGroupContent
+ * @generated
+ */
+ public Adapter createXSDAttributeGroupContentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDAttributeGroupDefinition <em>Attribute Group Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDAttributeGroupDefinition
+ * @generated
+ */
+ public Adapter createXSDAttributeGroupDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDAttributeUse <em>Attribute Use</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDAttributeUse
+ * @generated
+ */
+ public Adapter createXSDAttributeUseAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDBoundedFacet <em>Bounded Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDBoundedFacet
+ * @generated
+ */
+ public Adapter createXSDBoundedFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDCardinalityFacet <em>Cardinality Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDCardinalityFacet
+ * @generated
+ */
+ public Adapter createXSDCardinalityFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDComplexTypeContent <em>Complex Type Content</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDComplexTypeContent
+ * @generated
+ */
+ public Adapter createXSDComplexTypeContentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDComplexTypeDefinition <em>Complex Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDComplexTypeDefinition
+ * @generated
+ */
+ public Adapter createXSDComplexTypeDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDComponent <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDComponent
+ * @generated
+ */
+ public Adapter createXSDComponentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDConcreteComponent <em>Concrete Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDConcreteComponent
+ * @generated
+ */
+ public Adapter createXSDConcreteComponentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDConstrainingFacet <em>Constraining Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDConstrainingFacet
+ * @generated
+ */
+ public Adapter createXSDConstrainingFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDDiagnostic <em>Diagnostic</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDDiagnostic
+ * @generated
+ */
+ public Adapter createXSDDiagnosticAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDElementDeclaration <em>Element Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDElementDeclaration
+ * @generated
+ */
+ public Adapter createXSDElementDeclarationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDEnumerationFacet <em>Enumeration Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDEnumerationFacet
+ * @generated
+ */
+ public Adapter createXSDEnumerationFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDFacet <em>Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDFacet
+ * @generated
+ */
+ public Adapter createXSDFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDFeature <em>Feature</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDFeature
+ * @generated
+ */
+ public Adapter createXSDFeatureAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDFixedFacet <em>Fixed Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDFixedFacet
+ * @generated
+ */
+ public Adapter createXSDFixedFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDFractionDigitsFacet <em>Fraction Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDFractionDigitsFacet
+ * @generated
+ */
+ public Adapter createXSDFractionDigitsFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDFundamentalFacet <em>Fundamental Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDFundamentalFacet
+ * @generated
+ */
+ public Adapter createXSDFundamentalFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDIdentityConstraintDefinition <em>Identity Constraint Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDIdentityConstraintDefinition
+ * @generated
+ */
+ public Adapter createXSDIdentityConstraintDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDImport <em>Import</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDImport
+ * @generated
+ */
+ public Adapter createXSDImportAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDInclude <em>Include</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDInclude
+ * @generated
+ */
+ public Adapter createXSDIncludeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDLengthFacet <em>Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDLengthFacet
+ * @generated
+ */
+ public Adapter createXSDLengthFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMaxExclusiveFacet <em>Max Exclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMaxExclusiveFacet
+ * @generated
+ */
+ public Adapter createXSDMaxExclusiveFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMaxFacet <em>Max Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMaxFacet
+ * @generated
+ */
+ public Adapter createXSDMaxFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMaxInclusiveFacet <em>Max Inclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMaxInclusiveFacet
+ * @generated
+ */
+ public Adapter createXSDMaxInclusiveFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMaxLengthFacet <em>Max Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMaxLengthFacet
+ * @generated
+ */
+ public Adapter createXSDMaxLengthFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMinExclusiveFacet <em>Min Exclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMinExclusiveFacet
+ * @generated
+ */
+ public Adapter createXSDMinExclusiveFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMinFacet <em>Min Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMinFacet
+ * @generated
+ */
+ public Adapter createXSDMinFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMinInclusiveFacet <em>Min Inclusive Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMinInclusiveFacet
+ * @generated
+ */
+ public Adapter createXSDMinInclusiveFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDMinLengthFacet <em>Min Length Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDMinLengthFacet
+ * @generated
+ */
+ public Adapter createXSDMinLengthFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDModelGroup <em>Model Group</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDModelGroup
+ * @generated
+ */
+ public Adapter createXSDModelGroupAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDModelGroupDefinition <em>Model Group Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDModelGroupDefinition
+ * @generated
+ */
+ public Adapter createXSDModelGroupDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDNamedComponent <em>Named Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDNamedComponent
+ * @generated
+ */
+ public Adapter createXSDNamedComponentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDNotationDeclaration <em>Notation Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDNotationDeclaration
+ * @generated
+ */
+ public Adapter createXSDNotationDeclarationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDNumericFacet <em>Numeric Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDNumericFacet
+ * @generated
+ */
+ public Adapter createXSDNumericFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDOrderedFacet <em>Ordered Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDOrderedFacet
+ * @generated
+ */
+ public Adapter createXSDOrderedFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDParticle <em>Particle</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDParticle
+ * @generated
+ */
+ public Adapter createXSDParticleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDParticleContent <em>Particle Content</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDParticleContent
+ * @generated
+ */
+ public Adapter createXSDParticleContentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDPatternFacet <em>Pattern Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDPatternFacet
+ * @generated
+ */
+ public Adapter createXSDPatternFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDRedefinableComponent <em>Redefinable Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDRedefinableComponent
+ * @generated
+ */
+ public Adapter createXSDRedefinableComponentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDRedefineContent <em>Redefine Content</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDRedefineContent
+ * @generated
+ */
+ public Adapter createXSDRedefineContentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDRedefine <em>Redefine</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDRedefine
+ * @generated
+ */
+ public Adapter createXSDRedefineAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDRepeatableFacet <em>Repeatable Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDRepeatableFacet
+ * @generated
+ */
+ public Adapter createXSDRepeatableFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDSchema
+ * @generated
+ */
+ public Adapter createXSDSchemaAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDSchemaCompositor <em>Schema Compositor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDSchemaCompositor
+ * @generated
+ */
+ public Adapter createXSDSchemaCompositorAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDSchemaContent <em>Schema Content</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDSchemaContent
+ * @generated
+ */
+ public Adapter createXSDSchemaContentAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDSchemaDirective <em>Schema Directive</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDSchemaDirective
+ * @generated
+ */
+ public Adapter createXSDSchemaDirectiveAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDScope <em>Scope</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDScope
+ * @generated
+ */
+ public Adapter createXSDScopeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDSimpleTypeDefinition <em>Simple Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDSimpleTypeDefinition
+ * @generated
+ */
+ public Adapter createXSDSimpleTypeDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDTerm <em>Term</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDTerm
+ * @generated
+ */
+ public Adapter createXSDTermAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDTotalDigitsFacet <em>Total Digits Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDTotalDigitsFacet
+ * @generated
+ */
+ public Adapter createXSDTotalDigitsFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDTypeDefinition <em>Type Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDTypeDefinition
+ * @generated
+ */
+ public Adapter createXSDTypeDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDWhiteSpaceFacet <em>White Space Facet</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDWhiteSpaceFacet
+ * @generated
+ */
+ public Adapter createXSDWhiteSpaceFacetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDWildcard <em>Wildcard</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDWildcard
+ * @generated
+ */
+ public Adapter createXSDWildcardAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xsd.XSDXPathDefinition <em>XPath Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.xsd.XSDXPathDefinition
+ * @generated
+ */
+ public Adapter createXSDXPathDefinitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter()
+ {
+ return null;
+ }
+
+} //XSDAdapterFactory
+
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDConstants.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDConstants.java
new file mode 100644
index 0000000..9404ed7
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDConstants.java
@@ -0,0 +1,1620 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+
+/**
+ * The <b>Constants</b> for XML and XML Schema and related <b>DOM Utilities</b>.
+ */
+public class XSDConstants
+{
+ /**
+ * The value <code>"http://www.w3.org/TR/xmlschema-1/"</code>.
+ */
+ public static final String PART1 = "http://www.w3.org/TR/xmlschema-1/";
+
+ /**
+ * The value <code>"http://www.w3.org/TR/xmlschema-2/"</code>.
+ */
+ public static final String PART2 = "http://www.w3.org/TR/xmlschema-2/";
+
+ /**
+ * The value <code>"http://www.w3.org/XML/1998/namespace"</code>.
+ */
+ public static final String XML_NAMESPACE_URI_1998 = "http://www.w3.org/XML/1998/namespace";
+
+ /**
+ * The value <code>"http://www.w3.org/2000/xmlns/"</code>.
+ */
+ public static final String XMLNS_URI_2000 = "http://www.w3.org/2000/xmlns/";
+
+ /**
+ * The value <code>http://www.w3.org/1999/XMLSchema"</code>.
+ */
+ public static final String SCHEMA_FOR_SCHEMA_URI_1999 = "http://www.w3.org/1999/XMLSchema";
+
+ /**
+ * The value <code>"http://www.w3.org/2000/10/XMLSchema"</code>.
+ */
+ public static final String SCHEMA_FOR_SCHEMA_URI_2000_10 = "http://www.w3.org/2000/10/XMLSchema";
+
+ /**
+ * The value <code>"http://www.w3.org/2001/XMLSchema"</code>.
+ */
+ public static final String SCHEMA_FOR_SCHEMA_URI_2001 = "http://www.w3.org/2001/XMLSchema";
+
+ /**
+ * The value <code>"http://www.w3.org/2001/XMLSchema-instance"</code>.
+ */
+ public static final String SCHEMA_INSTANCE_URI_2001 = "http://www.w3.org/2001/XMLSchema-instance";
+
+ /**
+ * Returns whether the given namespace is (one of) the XML namespace(s).
+ * @param namespace a namespace.
+ * @return whether the given namespace is (one of) the XML namespace(s).
+ */
+ public static boolean isXMLNamespace(String namespace)
+ {
+ return
+ XML_NAMESPACE_URI_1998.equals(namespace);
+ }
+
+ /**
+ * Returns whether the given namespace is (one of) the XMLNS namespace(s).
+ * @param namespace a namespace.
+ * @return whether the given namespace is (one of) the XMLNS namespace(s).
+ */
+ public static boolean isXMLNSNamespace(String namespace)
+ {
+ return
+ XMLNS_URI_2000.equals(namespace);
+ }
+
+ /**
+ * Returns whether the given namespace is one of the XML Schema for Schema namespaces.
+ * @param namespace a namespace.
+ * @return whether the given namespace is one of the XML Schema for Schema namespaces.
+ */
+ public static boolean isSchemaForSchemaNamespace(String namespace)
+ {
+ return
+ SCHEMA_FOR_SCHEMA_URI_2001.equals(namespace) ||
+ SCHEMA_FOR_SCHEMA_URI_2000_10.equals(namespace) ||
+ SCHEMA_FOR_SCHEMA_URI_1999.equals(namespace);
+ }
+
+ /**
+ * Returns whether the given namespace is (one of) the XML Schema Instance namespace(s).
+ * @param namespace a namespace.
+ * @return whether the given namespace is (one of) the XML Schema Instance namespace(s).
+ */
+ public static boolean isSchemaInstanceNamespace(String namespace)
+ {
+ return
+ SCHEMA_INSTANCE_URI_2001.equals(namespace);
+ }
+
+ //
+ // all
+ // annotation
+ // any
+ // anyAttribute
+ // appinfo
+ // attribute
+ // attributeGroup
+ // choice
+ // complexContent
+ // complexType
+ // documentation
+ // element
+ // enumeration
+ // extension
+ // field
+ // fractionDigits
+ // group
+ // import
+ // include
+ // key
+ // keyref
+ // length
+ // list
+ // maxExclusive
+ // maxInclusive
+ // maxLength
+ // minExclusive
+ // minInclusive
+ // minLength
+ // notation
+ // pattern
+ // redefine
+ // restriction
+ // schema
+ // selector
+ // sequence
+ // simpleContent
+ // simpleType
+ // totalDigits
+ // union
+ // unique
+ // whiteSpace
+ // (
+ // for i in $(cat elements); do
+ // j=$(echo $i | tr '[:lower:]' '[:upper:]');
+ // echo ' /**';
+ // echo ' * The value <code>"'$i'"</code>.';
+ // echo ' * @see #'$j'_ELEMENT';
+ // echo ' * @see #ELEMENT_TAGS';
+ // echo ' * @see #nodeType(String)';
+ // echo ' */';
+ // echo ' public final static String '$j'_ELEMENT_TAG = "'$i'";';
+ // echo '';
+ // done;
+ // k=0;
+ // for i in $(cat elements); do
+ // j=$(echo $i | tr '[:lower:]' '[:upper:]');
+ // echo ' /**';
+ // echo ' * The value <code>'$k'</code>.';
+ // echo ' * @see #'$j'_ELEMENT_TAG';
+ // echo ' * @see #ELEMENT_TAGS';
+ // echo ' * @see #nodeType(String)';
+ // echo ' */';
+ // echo ' public final static int '$j'_ELEMENT = '$k';';
+ // echo '';
+ // k=$(($k+1));
+ // done;
+ // echo ' /**';
+ // echo ' * The sorted strings representing all XML Schema element tags.';
+ // echo ' * @see #nodeType(String)';
+ // echo ' * @see #nodeType(Node)';
+ // echo ' */';
+ // echo ' public static final String [] ELEMENT_TAGS =';
+ // echo ' new String []';
+ // echo ' {';
+ // for i in $(cat elements); do
+ // j=$(echo $i | tr '[:lower:]' '[:upper:]');
+ // echo ' '$j'_ELEMENT_TAG,';
+ // done;
+ // echo ' };';
+ // )
+
+ /**
+ * The value <code>"all"</code>.
+ * @see #ALL_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ALL_ELEMENT_TAG = "all";
+
+ /**
+ * The value <code>"annotation"</code>.
+ * @see #ANNOTATION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ANNOTATION_ELEMENT_TAG = "annotation";
+
+ /**
+ * The value <code>"any"</code>.
+ * @see #ANY_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ANY_ELEMENT_TAG = "any";
+
+ /**
+ * The value <code>"anyAttribute"</code>.
+ * @see #ANYATTRIBUTE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ANYATTRIBUTE_ELEMENT_TAG = "anyAttribute";
+
+ /**
+ * The value <code>"appinfo"</code>.
+ * @see #APPINFO_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String APPINFO_ELEMENT_TAG = "appinfo";
+
+ /**
+ * The value <code>"attribute"</code>.
+ * @see #ATTRIBUTE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ATTRIBUTE_ELEMENT_TAG = "attribute";
+
+ /**
+ * The value <code>"attributeGroup"</code>.
+ * @see #ATTRIBUTEGROUP_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ATTRIBUTEGROUP_ELEMENT_TAG = "attributeGroup";
+
+ /**
+ * The value <code>"choice"</code>.
+ * @see #CHOICE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String CHOICE_ELEMENT_TAG = "choice";
+
+ /**
+ * The value <code>"complexContent"</code>.
+ * @see #COMPLEXCONTENT_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String COMPLEXCONTENT_ELEMENT_TAG = "complexContent";
+
+ /**
+ * The value <code>"complexType"</code>.
+ * @see #COMPLEXTYPE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String COMPLEXTYPE_ELEMENT_TAG = "complexType";
+
+ /**
+ * The value <code>"documentation"</code>.
+ * @see #DOCUMENTATION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String DOCUMENTATION_ELEMENT_TAG = "documentation";
+
+ /**
+ * The value <code>"element"</code>.
+ * @see #ELEMENT_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ELEMENT_ELEMENT_TAG = "element";
+
+ /**
+ * The value <code>"enumeration"</code>.
+ * @see #ENUMERATION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String ENUMERATION_ELEMENT_TAG = "enumeration";
+
+ /**
+ * The value <code>"extension"</code>.
+ * @see #EXTENSION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String EXTENSION_ELEMENT_TAG = "extension";
+
+ /**
+ * The value <code>"field"</code>.
+ * @see #FIELD_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String FIELD_ELEMENT_TAG = "field";
+
+ /**
+ * The value <code>"fractionDigits"</code>.
+ * @see #FRACTIONDIGITS_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String FRACTIONDIGITS_ELEMENT_TAG = "fractionDigits";
+
+ /**
+ * The value <code>"group"</code>.
+ * @see #GROUP_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String GROUP_ELEMENT_TAG = "group";
+
+ /**
+ * The value <code>"import"</code>.
+ * @see #IMPORT_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String IMPORT_ELEMENT_TAG = "import";
+
+ /**
+ * The value <code>"include"</code>.
+ * @see #INCLUDE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String INCLUDE_ELEMENT_TAG = "include";
+
+ /**
+ * The value <code>"key"</code>.
+ * @see #KEY_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String KEY_ELEMENT_TAG = "key";
+
+ /**
+ * The value <code>"keyref"</code>.
+ * @see #KEYREF_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String KEYREF_ELEMENT_TAG = "keyref";
+
+ /**
+ * The value <code>"length"</code>.
+ * @see #LENGTH_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String LENGTH_ELEMENT_TAG = "length";
+
+ /**
+ * The value <code>"list"</code>.
+ * @see #LIST_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String LIST_ELEMENT_TAG = "list";
+
+ /**
+ * The value <code>"maxExclusive"</code>.
+ * @see #MAXEXCLUSIVE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String MAXEXCLUSIVE_ELEMENT_TAG = "maxExclusive";
+
+ /**
+ * The value <code>"maxInclusive"</code>.
+ * @see #MAXINCLUSIVE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String MAXINCLUSIVE_ELEMENT_TAG = "maxInclusive";
+
+ /**
+ * The value <code>"maxLength"</code>.
+ * @see #MAXLENGTH_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String MAXLENGTH_ELEMENT_TAG = "maxLength";
+
+ /**
+ * The value <code>"minExclusive"</code>.
+ * @see #MINEXCLUSIVE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String MINEXCLUSIVE_ELEMENT_TAG = "minExclusive";
+
+ /**
+ * The value <code>"minInclusive"</code>.
+ * @see #MININCLUSIVE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String MININCLUSIVE_ELEMENT_TAG = "minInclusive";
+
+ /**
+ * The value <code>"minLength"</code>.
+ * @see #MINLENGTH_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String MINLENGTH_ELEMENT_TAG = "minLength";
+
+ /**
+ * The value <code>"notation"</code>.
+ * @see #NOTATION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String NOTATION_ELEMENT_TAG = "notation";
+
+ /**
+ * The value <code>"pattern"</code>.
+ * @see #PATTERN_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String PATTERN_ELEMENT_TAG = "pattern";
+
+ /**
+ * The value <code>"redefine"</code>.
+ * @see #REDEFINE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String REDEFINE_ELEMENT_TAG = "redefine";
+
+ /**
+ * The value <code>"restriction"</code>.
+ * @see #RESTRICTION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String RESTRICTION_ELEMENT_TAG = "restriction";
+
+ /**
+ * The value <code>"schema"</code>.
+ * @see #SCHEMA_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String SCHEMA_ELEMENT_TAG = "schema";
+
+ /**
+ * The value <code>"selector"</code>.
+ * @see #SELECTOR_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String SELECTOR_ELEMENT_TAG = "selector";
+
+ /**
+ * The value <code>"sequence"</code>.
+ * @see #SEQUENCE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String SEQUENCE_ELEMENT_TAG = "sequence";
+
+ /**
+ * The value <code>"simpleContent"</code>.
+ * @see #SIMPLECONTENT_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String SIMPLECONTENT_ELEMENT_TAG = "simpleContent";
+
+ /**
+ * The value <code>"simpleType"</code>.
+ * @see #SIMPLETYPE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String SIMPLETYPE_ELEMENT_TAG = "simpleType";
+
+ /**
+ * The value <code>"totalDigits"</code>.
+ * @see #TOTALDIGITS_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String TOTALDIGITS_ELEMENT_TAG = "totalDigits";
+
+ /**
+ * The value <code>"union"</code>.
+ * @see #UNION_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String UNION_ELEMENT_TAG = "union";
+
+ /**
+ * The value <code>"unique"</code>.
+ * @see #UNIQUE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String UNIQUE_ELEMENT_TAG = "unique";
+
+ /**
+ * The value <code>"whiteSpace"</code>.
+ * @see #WHITESPACE_ELEMENT
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static String WHITESPACE_ELEMENT_TAG = "whiteSpace";
+
+ /**
+ * The value <code>0</code>.
+ * @see #ALL_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ALL_ELEMENT = 0;
+
+ /**
+ * The value <code>1</code>.
+ * @see #ANNOTATION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ANNOTATION_ELEMENT = 1;
+
+ /**
+ * The value <code>2</code>.
+ * @see #ANY_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ANY_ELEMENT = 2;
+
+ /**
+ * The value <code>3</code>.
+ * @see #ANYATTRIBUTE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ANYATTRIBUTE_ELEMENT = 3;
+
+ /**
+ * The value <code>4</code>.
+ * @see #APPINFO_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int APPINFO_ELEMENT = 4;
+
+ /**
+ * The value <code>5</code>.
+ * @see #ATTRIBUTE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ATTRIBUTE_ELEMENT = 5;
+
+ /**
+ * The value <code>6</code>.
+ * @see #ATTRIBUTEGROUP_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ATTRIBUTEGROUP_ELEMENT = 6;
+
+ /**
+ * The value <code>7</code>.
+ * @see #CHOICE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int CHOICE_ELEMENT = 7;
+
+ /**
+ * The value <code>8</code>.
+ * @see #COMPLEXCONTENT_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int COMPLEXCONTENT_ELEMENT = 8;
+
+ /**
+ * The value <code>9</code>.
+ * @see #COMPLEXTYPE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int COMPLEXTYPE_ELEMENT = 9;
+
+ /**
+ * The value <code>10</code>.
+ * @see #DOCUMENTATION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int DOCUMENTATION_ELEMENT = 10;
+
+ /**
+ * The value <code>11</code>.
+ * @see #ELEMENT_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ELEMENT_ELEMENT = 11;
+
+ /**
+ * The value <code>12</code>.
+ * @see #ENUMERATION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int ENUMERATION_ELEMENT = 12;
+
+ /**
+ * The value <code>13</code>.
+ * @see #EXTENSION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int EXTENSION_ELEMENT = 13;
+
+ /**
+ * The value <code>14</code>.
+ * @see #FIELD_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int FIELD_ELEMENT = 14;
+
+ /**
+ * The value <code>15</code>.
+ * @see #FRACTIONDIGITS_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int FRACTIONDIGITS_ELEMENT = 15;
+
+ /**
+ * The value <code>16</code>.
+ * @see #GROUP_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int GROUP_ELEMENT = 16;
+
+ /**
+ * The value <code>17</code>.
+ * @see #IMPORT_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int IMPORT_ELEMENT = 17;
+
+ /**
+ * The value <code>18</code>.
+ * @see #INCLUDE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int INCLUDE_ELEMENT = 18;
+
+ /**
+ * The value <code>19</code>.
+ * @see #KEY_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int KEY_ELEMENT = 19;
+
+ /**
+ * The value <code>20</code>.
+ * @see #KEYREF_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int KEYREF_ELEMENT = 20;
+
+ /**
+ * The value <code>21</code>.
+ * @see #LENGTH_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int LENGTH_ELEMENT = 21;
+
+ /**
+ * The value <code>22</code>.
+ * @see #LIST_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int LIST_ELEMENT = 22;
+
+ /**
+ * The value <code>23</code>.
+ * @see #MAXEXCLUSIVE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int MAXEXCLUSIVE_ELEMENT = 23;
+
+ /**
+ * The value <code>24</code>.
+ * @see #MAXINCLUSIVE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int MAXINCLUSIVE_ELEMENT = 24;
+
+ /**
+ * The value <code>25</code>.
+ * @see #MAXLENGTH_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int MAXLENGTH_ELEMENT = 25;
+
+ /**
+ * The value <code>26</code>.
+ * @see #MINEXCLUSIVE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int MINEXCLUSIVE_ELEMENT = 26;
+
+ /**
+ * The value <code>27</code>.
+ * @see #MININCLUSIVE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int MININCLUSIVE_ELEMENT = 27;
+
+ /**
+ * The value <code>28</code>.
+ * @see #MINLENGTH_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int MINLENGTH_ELEMENT = 28;
+
+ /**
+ * The value <code>29</code>.
+ * @see #NOTATION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int NOTATION_ELEMENT = 29;
+
+ /**
+ * The value <code>30</code>.
+ * @see #PATTERN_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int PATTERN_ELEMENT = 30;
+
+ /**
+ * The value <code>31</code>.
+ * @see #REDEFINE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int REDEFINE_ELEMENT = 31;
+
+ /**
+ * The value <code>32</code>.
+ * @see #RESTRICTION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int RESTRICTION_ELEMENT = 32;
+
+ /**
+ * The value <code>33</code>.
+ * @see #SCHEMA_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int SCHEMA_ELEMENT = 33;
+
+ /**
+ * The value <code>34</code>.
+ * @see #SELECTOR_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int SELECTOR_ELEMENT = 34;
+
+ /**
+ * The value <code>35</code>.
+ * @see #SEQUENCE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int SEQUENCE_ELEMENT = 35;
+
+ /**
+ * The value <code>36</code>.
+ * @see #SIMPLECONTENT_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int SIMPLECONTENT_ELEMENT = 36;
+
+ /**
+ * The value <code>37</code>.
+ * @see #SIMPLETYPE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int SIMPLETYPE_ELEMENT = 37;
+
+ /**
+ * The value <code>38</code>.
+ * @see #TOTALDIGITS_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int TOTALDIGITS_ELEMENT = 38;
+
+ /**
+ * The value <code>39</code>.
+ * @see #UNION_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int UNION_ELEMENT = 39;
+
+ /**
+ * The value <code>40</code>.
+ * @see #UNIQUE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int UNIQUE_ELEMENT = 40;
+
+ /**
+ * The value <code>41</code>.
+ * @see #WHITESPACE_ELEMENT_TAG
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public final static int WHITESPACE_ELEMENT = 41;
+
+ /**
+ * The sorted strings representing all
+ * <a href="http://www.w3.org/TR/xmlschema-2/#schema">XML Schema</a> element tags.
+ * @see #nodeType(String)
+ * @see #nodeType(Node)
+ */
+ public static final String [] ELEMENT_TAGS =
+ new String []
+ {
+ ALL_ELEMENT_TAG,
+ ANNOTATION_ELEMENT_TAG,
+ ANY_ELEMENT_TAG,
+ ANYATTRIBUTE_ELEMENT_TAG,
+ APPINFO_ELEMENT_TAG,
+ ATTRIBUTE_ELEMENT_TAG,
+ ATTRIBUTEGROUP_ELEMENT_TAG,
+ CHOICE_ELEMENT_TAG,
+ COMPLEXCONTENT_ELEMENT_TAG,
+ COMPLEXTYPE_ELEMENT_TAG,
+ DOCUMENTATION_ELEMENT_TAG,
+ ELEMENT_ELEMENT_TAG,
+ ENUMERATION_ELEMENT_TAG,
+ EXTENSION_ELEMENT_TAG,
+ FIELD_ELEMENT_TAG,
+ FRACTIONDIGITS_ELEMENT_TAG,
+ GROUP_ELEMENT_TAG,
+ IMPORT_ELEMENT_TAG,
+ INCLUDE_ELEMENT_TAG,
+ KEY_ELEMENT_TAG,
+ KEYREF_ELEMENT_TAG,
+ LENGTH_ELEMENT_TAG,
+ LIST_ELEMENT_TAG,
+ MAXEXCLUSIVE_ELEMENT_TAG,
+ MAXINCLUSIVE_ELEMENT_TAG,
+ MAXLENGTH_ELEMENT_TAG,
+ MINEXCLUSIVE_ELEMENT_TAG,
+ MININCLUSIVE_ELEMENT_TAG,
+ MINLENGTH_ELEMENT_TAG,
+ NOTATION_ELEMENT_TAG,
+ PATTERN_ELEMENT_TAG,
+ REDEFINE_ELEMENT_TAG,
+ RESTRICTION_ELEMENT_TAG,
+ SCHEMA_ELEMENT_TAG,
+ SELECTOR_ELEMENT_TAG,
+ SEQUENCE_ELEMENT_TAG,
+ SIMPLECONTENT_ELEMENT_TAG,
+ SIMPLETYPE_ELEMENT_TAG,
+ TOTALDIGITS_ELEMENT_TAG,
+ UNION_ELEMENT_TAG,
+ UNIQUE_ELEMENT_TAG,
+ WHITESPACE_ELEMENT_TAG
+ };
+
+ /**
+ * Returns the index of the element type,
+ * if it is an <a href="http://www.w3.org/TR/xmlschema-2/#schema">XML Schema</a> element tag, or -1.
+ * @return the index of the element type.
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(Node)
+ */
+ public static final int nodeType(String localName)
+ {
+ for (int i = 0; i < ELEMENT_TAGS.length; ++i)
+ {
+ if (localName.equals(ELEMENT_TAGS[i]))
+ {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Returns the index of the node's element type,
+ * if it is an <a href="http://www.w3.org/TR/xmlschema-2/#schema">XML Schema</a> element tag, or -1.
+ * @return the index of the node's element type.
+ * @see #ELEMENT_TAGS
+ * @see #nodeType(String)
+ */
+ public static final int nodeType(Node node)
+ {
+ return
+ isSchemaForSchemaNamespace(node.getNamespaceURI()) ?
+ nodeType(node.getLocalName()) :
+ -1;
+ }
+
+ /**
+ * Returns the URI representation of the node's namespace URI and local name,
+ * i.e., <code><namespace-uri>#<local-name></code>.
+ * @return the URI representation of the node's namespace URI and local name.
+ */
+ public static final String uri(Node node)
+ {
+ String namespaceURI = node.getNamespaceURI();
+ if (namespaceURI == null)
+ {
+ namespaceURI = "";
+ }
+ return namespaceURI + "#" + node.getLocalName();
+ }
+
+ // abstract
+ // attributeFormDefault
+ // base
+ // block
+ // blockDefault
+ // default
+ // elementFormDefault
+ // final
+ // finalDefault
+ // fixed
+ // form
+ // id
+ // itemType
+ // maxOccurs
+ // memberTypes
+ // minOccurs
+ // mixed
+ // name
+ // namespace
+ // nillable
+ // processContents
+ // public
+ // ref
+ // refer
+ // schemaLocation
+ // source
+ // substitutionGroup
+ // system
+ // targetNamespace
+ // type
+ // use
+ // value
+ // version
+ // xpath
+ // (
+ // for i in $(cat attributes); do
+ // j=$(echo $i | tr '[:lower:]' '[:upper:]');
+ // echo ' /**';
+ // echo ' * The value <code>"'$i'"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.';
+ // echo ' * @see #ELEMENT_TAGS';
+ // echo ' */';
+ // echo ' public final static String '$j'_ATTRIBUTE = "'$i'";';
+ // echo '';
+ // done;
+ // )
+
+ /**
+ * The value <code>"abstract"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String ABSTRACT_ATTRIBUTE = "abstract";
+
+ /**
+ * The value <code>"attributeFormDefault"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String ATTRIBUTEFORMDEFAULT_ATTRIBUTE = "attributeFormDefault";
+
+ /**
+ * The value <code>"base"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String BASE_ATTRIBUTE = "base";
+
+ /**
+ * The value <code>"block"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String BLOCK_ATTRIBUTE = "block";
+
+ /**
+ * The value <code>"blockDefault"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String BLOCKDEFAULT_ATTRIBUTE = "blockDefault";
+
+ /**
+ * The value <code>"defRef"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String DEFREF_ATTRIBUTE = "defRef";
+
+ /**
+ * The value <code>"default"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String DEFAULT_ATTRIBUTE = "default";
+
+ /**
+ * The value <code>"elementFormDefault"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String ELEMENTFORMDEFAULT_ATTRIBUTE = "elementFormDefault";
+
+ /**
+ * The value <code>"final"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String FINAL_ATTRIBUTE = "final";
+
+ /**
+ * The value <code>"finalDefault"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String FINALDEFAULT_ATTRIBUTE = "finalDefault";
+
+ /**
+ * The value <code>"fixed"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String FIXED_ATTRIBUTE = "fixed";
+
+ /**
+ * The value <code>"form"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String FORM_ATTRIBUTE = "form";
+
+ /**
+ * The value <code>"id"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String ID_ATTRIBUTE = "id";
+
+ /**
+ * The value <code>"itemType"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String ITEMTYPE_ATTRIBUTE = "itemType";
+
+ /**
+ * The value <code>"maxOccurs"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String MAXOCCURS_ATTRIBUTE = "maxOccurs";
+
+ /**
+ * The value <code>"memberTypes"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String MEMBERTYPES_ATTRIBUTE = "memberTypes";
+
+ /**
+ * The value <code>"minOccurs"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String MINOCCURS_ATTRIBUTE = "minOccurs";
+
+ /**
+ * The value <code>"mixed"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String MIXED_ATTRIBUTE = "mixed";
+
+ /**
+ * The value <code>"name"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String NAME_ATTRIBUTE = "name";
+
+ /**
+ * The value <code>"namespace"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String NAMESPACE_ATTRIBUTE = "namespace";
+
+ /**
+ * The value <code>"nillable"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String NILLABLE_ATTRIBUTE = "nillable";
+
+ /**
+ * The value <code>"occurs"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String OCCURS_ATTRIBUTE = "occurs";
+
+ /**
+ * The value <code>"processContents"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String PROCESSCONTENTS_ATTRIBUTE = "processContents";
+
+ /**
+ * The value <code>"public"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String PUBLIC_ATTRIBUTE = "public";
+
+ /**
+ * The value <code>"ref"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String REF_ATTRIBUTE = "ref";
+
+ /**
+ * The value <code>"refer"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String REFER_ATTRIBUTE = "refer";
+
+ /**
+ * The value <code>"schemaLocation"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String SCHEMALOCATION_ATTRIBUTE = "schemaLocation";
+
+ /**
+ * The value <code>"source"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String SOURCE_ATTRIBUTE = "source";
+
+ /**
+ * The value <code>"substitutionGroup"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String SUBSTITUTIONGROUP_ATTRIBUTE = "substitutionGroup";
+
+ /**
+ * The value <code>"system"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String SYSTEM_ATTRIBUTE = "system";
+
+ /**
+ * The value <code>"targetNamespace"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String TARGETNAMESPACE_ATTRIBUTE = "targetNamespace";
+
+ /**
+ * The value <code>"type"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String TYPE_ATTRIBUTE = "type";
+
+ /**
+ * The value <code>"use"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String USE_ATTRIBUTE = "use";
+
+ /**
+ * The value <code>"value"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String VALUE_ATTRIBUTE = "value";
+
+ /**
+ * The value <code>"version"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String VERSION_ATTRIBUTE = "version";
+
+ /**
+ * The value <code>"xpath"</code>; an attribute on an {@link #ELEMENT_TAGS XML Schema element}.
+ * @see #ELEMENT_TAGS
+ */
+ public final static String XPATH_ATTRIBUTE = "xpath";
+
+ /**
+ * The value <code>"http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"</code>.
+ */
+ public static final String SCHEMA_HAS_FACET_AND_PROPERTY_URI_2001 = "http://www.w3.org/2001/XMLSchema-hasFacetAndProperty";
+
+ /**
+ * Returns whether the give namespace is one of the XML Schema <a href="http://www.w3.org/TR/xmlschema-2/#schema">has facet and property</a> namespaces.
+ * @param namespace a namespace.
+ * @return whether the give namespace is one of the XML Schema has facet and property namespaces.
+ */
+ public static boolean isSchemaHasFacetAndPropertyNamespace(String namespace)
+ {
+ return
+ SCHEMA_HAS_FACET_AND_PROPERTY_URI_2001.equals(namespace);
+ }
+
+ /**
+ * The value <code>"hasFacet"</code>.
+ * @see #HFP_HASFACET_ELEMENT
+ * @see #HFP_ELEMENT_TAGS
+ * @see #hfpNodeType(String)
+ */
+ public final static String HFP_HASFACET_ELEMENT_TAG = "hasFacet";
+
+ /**
+ * The value <code>"hasProperty"</code>.
+ * @see #HFP_HASPROPERTY_ELEMENT
+ * @see #HFP_ELEMENT_TAGS
+ * @see #hfpNodeType(String)
+ */
+ public final static String HFP_HASPROPERTY_ELEMENT_TAG = "hasProperty";
+
+ /**
+ * The value <code>0</code>.
+ * @see #HFP_HASFACET_ELEMENT_TAG
+ * @see #HFP_ELEMENT_TAGS
+ * @see #hfpNodeType(String)
+ */
+ public final static int HFP_HASFACET_ELEMENT = 0;
+
+ /**
+ * The value <code>1</code>.
+ * @see #HFP_HASPROPERTY_ELEMENT_TAG
+ * @see #HFP_ELEMENT_TAGS
+ * @see #hfpNodeType(String)
+ */
+ public final static int HFP_HASPROPERTY_ELEMENT = 1;
+
+ /**
+ * The sorted strings representing all XML Schema
+ * <a href="http://www.w3.org/TR/xmlschema-2/#schema">has facet and property</a> element tags.
+ * @see #hfpNodeType(String)
+ */
+ public static final String [] HFP_ELEMENT_TAGS =
+ new String []
+ {
+ HFP_HASFACET_ELEMENT_TAG,
+ HFP_HASPROPERTY_ELEMENT_TAG
+ };
+
+ /**
+ * Returns the index of the element type,
+ * if it is an XML Schema <a href="http://www.w3.org/TR/xmlschema-2/#schema">has facet and property</a> element tag, or -1.
+ * @see #HFP_ELEMENT_TAGS
+ * @see #hfpNodeType(Node)
+ * @return the index of the element type.
+ */
+ public static final int hfpNodeType(String localName)
+ {
+ for (int i = 0; i < HFP_ELEMENT_TAGS.length; ++i)
+ {
+ if (localName.equals(HFP_ELEMENT_TAGS[i]))
+ {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Returns the index of the node's element type,
+ * if it is an XML Schema <a href="http://www.w3.org/TR/xmlschema-2/#schema">has facet and property</a> element tag, or -1.
+ * @see #isSchemaHasFacetAndPropertyNamespace
+ * @see #HFP_ELEMENT_TAGS
+ * @see #hfpNodeType(String)
+ * @return the index of the node's element type,
+ */
+ public static int hfpNodeType(Node node)
+ {
+ return
+ isSchemaHasFacetAndPropertyNamespace(node.getNamespaceURI()) ?
+ hfpNodeType(node.getLocalName()) :
+ -1;
+ }
+
+ /**
+ * The value <code>"name"</code>; an attribute on an XML Schema {@link #HFP_ELEMENT_TAGS has facet and property element}.
+ * @see #HFP_ELEMENT_TAGS
+ */
+ public final static String HFP_NAME_ATTRIBUTE = "name";
+
+ /**
+ * The value <code>"value"</code>; an attribute on an XML Schema {@link #HFP_ELEMENT_TAGS has facet and property element}.
+ * @see #HFP_ELEMENT_TAGS
+ */
+ public final static String HFP_VALUE_ATTRIBUTE = "value";
+
+
+ /**
+ * Returns the URI corresponding to the resolved QName of the value of the attribute of the element.
+ * @param element an element.
+ * @param localNameOfAttribute the name of the attribute whose value to use.
+ * @return the URI corresponding to the resolved QName of the value of the attribute of the element.
+ * @see #lookupQName(Element, String)
+ * @see Element#getAttribute(String)
+ */
+ public static String lookupQNameForAttribute(Element element, String localNameOfAttribute)
+ {
+ if (element != null && element.hasAttribute(localNameOfAttribute))
+ {
+ // Some DOM implementations return a null here.
+ //
+ String qName = XMLTypeUtil.normalize(element.getAttribute(localNameOfAttribute), true);
+ return lookupQName(element, qName);
+ }
+ else
+ {
+ return "";
+ }
+ }
+
+ /**
+ * Returns the URI corresponding to the resolved QName.
+ * @param element an element.
+ * @param qName the QName to resolve in the context of the given element.
+ * @return the URI corresponding to the resolved QName.
+ */
+
+ public static String lookupQName(Element element, String qName)
+ {
+ // Some DOM implementations return a null here.
+ //
+ int index = qName == null ? -1 : qName.lastIndexOf(':');
+ String namespaceAttribute = "xmlns";
+ if (index != -1)
+ {
+ String prefix = qName.substring(0, index);
+ if (prefix.equals("xml"))
+ {
+ return XSDConstants.XML_NAMESPACE_URI_1998 + "#" + qName.substring(index + 1);
+ }
+ namespaceAttribute = "xmlns:" + qName.substring(0, index);
+ }
+ for (Node node = element; node instanceof Element; node = node.getParentNode())
+ {
+ Element elementNode = (Element)node;
+ if (elementNode.hasAttribute(namespaceAttribute))
+ {
+ String namespace = elementNode.getAttribute(namespaceAttribute);
+ if ("".equals(namespace))
+ {
+ break;
+ }
+ String localName = qName == null ? "" : qName.substring(index + 1);
+ return namespace + "#" + localName;
+ }
+ }
+
+ return qName == null ? "" : index == -1 ? qName : qName.substring(0, index) + "#" + qName.substring(index + 1);
+ }
+
+ /**
+ * Returns the QName qualifier than is available at the given node to access the given namespace URI.
+ * A null string, indicates that no qualifier is to be used;
+ * a null value indicates that no qualifier is available.
+ * @param node the context node at which to lookup a qualifier.
+ * @param namespaceURI the namespace to be referenced.
+ * @return the QName qualifier than is available at the given node to access the given namespace URI.
+ */
+ public static String lookupQualifier(Node node, String namespaceURI)
+ {
+ if (XSDConstants.XML_NAMESPACE_URI_1998.equals(namespaceURI))
+ {
+ return "xml";
+ }
+
+ Element leaf = null;
+ for (; node != null && node.getNodeType() == Node.ELEMENT_NODE; node = node.getParentNode())
+ {
+ Element elementNode = (Element)node;
+ if (leaf == null)
+ {
+ leaf = elementNode;
+ }
+ NamedNodeMap attributes = elementNode.getAttributes();
+ LOOP:
+ for (int i = 0, size = attributes.getLength(); i < size; ++i)
+ {
+ Attr attr = (Attr)attributes.item(i);
+ String name = attr.getNodeName();
+ if (name.startsWith("xmlns"))
+ {
+ String candidateNamespaceURI = attr.getNodeValue();
+ if (candidateNamespaceURI == null || candidateNamespaceURI.length() == 0 ?
+ namespaceURI == null || namespaceURI.length() == 0 :
+ candidateNamespaceURI.equals(namespaceURI))
+ {
+ int index = name.indexOf(':');
+ String result = index == -1 ? "" : name.substring(index + 1);
+ // Verify that there isn't another prefix declaration hiding the one we've found.
+ //
+ for (Element element = leaf; element != elementNode; element = (Element)element.getParentNode())
+ {
+ if (element.hasAttribute(name))
+ {
+ continue LOOP;
+ }
+ }
+ return result;
+ }
+ }
+ }
+ }
+
+ return namespaceURI == null || namespaceURI.length() == 0 ? "" : null;
+ }
+
+ /**
+ * Resolve the namespace and schema location relative to the base schema location.
+ * For example, the expression
+ *<pre>
+ * resolveSchemaLocation
+ * ("http://www.example.com/A/a.xsd",
+ * "http://www.example.com/B",
+ * "../B/b.xsd");
+ *</pre>
+ * would yield
+ *<pre>
+ * "http://www.example.com/B/b.xsd"
+ *</pre>
+ * When no namespace schema location is provided, the namespace itself will be used.
+ * @param baseSchemaLocationURI the location of the schema containing the reference, i.e., {@link org.eclipse.xsd.XSDSchema#getSchemaLocation}.
+ * @param namespaceURI the namespace being resolved, i.e., {@link org.eclipse.xsd.XSDImport#getNamespace}.
+ * @param schemaLocationURI the suggested location of the namespace being resolved, i.e., {@link org.eclipse.xsd.XSDImport#getSchemaLocation}.
+ * @return the resolved schema location.
+ */
+ public static String resolveSchemaLocation(String baseSchemaLocationURI, String namespaceURI, String schemaLocationURI)
+ {
+ try
+ {
+ if (schemaLocationURI == null)
+ {
+ schemaLocationURI = namespaceURI;
+ }
+ if (schemaLocationURI != null)
+ {
+ URI baseSchemaLocation = URI.createURI(baseSchemaLocationURI);
+ URI schemaLocation = URI.createURI(schemaLocationURI);
+ if (baseSchemaLocation.isHierarchical() && !baseSchemaLocation.isRelative() && schemaLocation.isRelative())
+ {
+ schemaLocation = schemaLocation.resolve(baseSchemaLocation);
+ }
+
+ return schemaLocation.toString();
+ }
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+
+ return schemaLocationURI;
+ }
+
+ /**
+ * Returns whether the type definition is one of the flavours of the ur-type, i.e.,
+ * complex <a href="http://www.w3.org/TR/xmlschema-1/#ur-type-itself">anyType</a>,
+ * simple <a href="http://www.w3.org/TR/xmlschema-2/#built-in-datatypes">anyType</a>, or
+ * <a href="http://www.w3.org/TR/xmlschema-2/#dt-anySimpleType">anySimpleType</a>.
+ * @param xsdTypeDefinition a simple or complex type definition.
+ * @return whether the type definition is one of the flavours of the ur-type.
+ */
+ public static boolean isURType(XSDTypeDefinition xsdTypeDefinition)
+ {
+ String name = xsdTypeDefinition.getName();
+ return
+ isSchemaForSchemaNamespace(xsdTypeDefinition.getTargetNamespace()) &&
+ ("anyType".equals(name) || "anySimpleType".equals(name));
+ }
+
+ /**
+ * Returns whether the type definition is one of the flavours of the anyType, i.e.,
+ * complex <a href="http://www.w3.org/TR/xmlschema-1/#ur-type-itself">anyType</a> or
+ * simple <a href="http://www.w3.org/TR/xmlschema-2/#built-in-datatypes">anyType</a>.
+ * @param xsdTypeDefinition a simple or complex type definition.
+ * @return whether the type definition is one of the flavours of the anyType.
+ */
+ public static boolean isAnyType(XSDTypeDefinition xsdTypeDefinition)
+ {
+ return
+ isSchemaForSchemaNamespace(xsdTypeDefinition.getTargetNamespace()) &&
+ "anyType".equals(xsdTypeDefinition.getName());
+ }
+
+ /**
+ * Returns whether the type definition is the
+ * <a href="http://www.w3.org/TR/xmlschema-2/#dt-anySimpleType">anySimpleType</a>.
+ * @param xsdTypeDefinition a simple or complex type definition.
+ * @return whether the type definition is the anySimpleType.
+ */
+ public static boolean isAnySimpleType(XSDTypeDefinition xsdTypeDefinition)
+ {
+ return
+ isSchemaForSchemaNamespace(xsdTypeDefinition.getTargetNamespace()) &&
+ "anySimpleType".equals(xsdTypeDefinition.getName());
+ }
+
+ /**
+ * Returns whether the type definition has the given namespace and name
+ * or is derived from a type with that namespace and name.
+ * @param xsdTypeDefinition a type definition.
+ * @return whether the type definition has the given namespace and name or is derived from a type with that namespace and name.
+ * @since 2.4
+ */
+ public static boolean isOrIsDerivedFrom(XSDTypeDefinition xsdTypeDefinition, String name, String namespace)
+ {
+ Set<XSDTypeDefinition> visited = new HashSet<XSDTypeDefinition>();
+ while (xsdTypeDefinition != null)
+ {
+ if (xsdTypeDefinition.hasNameAndTargetNamespace(name, namespace))
+ {
+ return true;
+ }
+
+ if (!visited.add(xsdTypeDefinition = xsdTypeDefinition.getBaseType()))
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns whether the type definition is a built-in type with the given name
+ * or is derived from a built-in type with that name.
+ * @param xsdSimpleTypeDefinition a type definition.
+ * @return whether the type definition is a built-in type with the given name
+ * or is derived from a built-in type with that name.
+ * @since 2.4
+ */
+ public static boolean isOrIsDerivedFrom(XSDSimpleTypeDefinition xsdSimpleTypeDefinition, String name)
+ {
+ Set<XSDTypeDefinition> visited = new HashSet<XSDTypeDefinition>();
+ while (xsdSimpleTypeDefinition != null)
+ {
+ if (isSchemaForSchemaNamespace(xsdSimpleTypeDefinition.getTargetNamespace()) &&
+ name.equals(xsdSimpleTypeDefinition.getName()))
+ {
+ return true;
+ }
+
+ if (!visited.add(xsdSimpleTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition()))
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns whether the simple type definition is
+ * <a href="http://www.w3.org/TR/xmlschema-2/#dt-ID">ID</a> or a type derived from it.
+ * @param xsdSimpleTypeDefinition a simple type definition.
+ * @return whether the simple type definition is ID or a type derived from it.
+ */
+ public static boolean isOrIsDerivedFromID(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ return isOrIsDerivedFrom(xsdSimpleTypeDefinition, "ID");
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDParser.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDParser.java
new file mode 100644
index 0000000..162cc9f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDParser.java
@@ -0,0 +1,881 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
+import java.util.WeakHashMap;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.w3c.dom.CDATASection;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.ext.Locator2;
+import org.xml.sax.helpers.DefaultHandler;
+
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+
+
+/**
+ * The <b>SAX Parser</b> for the model.
+ * This handles the conversion of SAX parse exceptions to {@link XSDDiagnostic}s.
+ * It also computes line column information,
+ * which is stored in a map of each node to its user data.
+ * This class is not intended for reuse outside of the model implementation and is subject to change.
+ */
+public class XSDParser extends DefaultHandler implements LexicalHandler
+{
+ protected static final Map<Node, Map<Object, Object>> userDataMap = Collections.synchronizedMap(new WeakHashMap<Node, Map<Object, Object>>());
+
+ private static class Flusher
+ {
+ @Override
+ protected void finalize() throws Throwable
+ {
+ userDataMap.size();
+ new Flusher();
+ }
+ }
+
+ static
+ {
+ new Flusher();
+ }
+
+ private static final class LocationMap extends AbstractMap<Object,Object>
+ {
+ protected static final int UNSET = Integer.MAX_VALUE;
+ protected Map<Object, Object> delegateMap;
+ private int startLine = UNSET;
+ private int startColumn = UNSET;
+ private int endLine = UNSET;
+ private int endColumn = UNSET;
+
+ @Override
+ public Set<java.util.Map.Entry<Object, Object>> entrySet()
+ {
+ return getDelegateMap().entrySet();
+ }
+
+ protected Map<Object, Object> getDelegateMap()
+ {
+ if (delegateMap == null)
+ {
+ delegateMap = new HashMap<Object, Object>();
+ if (startLine != UNSET)
+ {
+ delegateMap.put("startLine", startLine);
+ }
+ if (startColumn != UNSET)
+ {
+ delegateMap.put("startColumn", startColumn);
+ }
+ if (endLine != UNSET)
+ {
+ delegateMap.put("endLine", endLine);
+ }
+ if (endColumn != UNSET)
+ {
+ delegateMap.put("endColumn", endColumn);
+ }
+ }
+ return delegateMap;
+ }
+
+ protected int objectToInt(Object value)
+ {
+ return value == null ? UNSET : (Integer)value;
+ }
+
+ protected Object intToObject(int value)
+ {
+ return value == UNSET ? null : value;
+ }
+
+ @Override
+ public Object put(Object key, Object value)
+ {
+ Object result;
+ if (delegateMap == null)
+ {
+ if ("startLine".equals(key))
+ {
+ result = intToObject(startLine);
+ startLine = objectToInt(value);
+ }
+ else if ("endLine".equals(key))
+ {
+ result = intToObject(endLine);
+ endLine = objectToInt(value);
+ }
+ else if ("startColumn".equals(key))
+ {
+ result = intToObject(startColumn);
+ startColumn = objectToInt(value);
+ }
+ else if ("endColumn".equals(key))
+ {
+ result = intToObject(endColumn);
+ endColumn = objectToInt(value);
+ }
+ else
+ {
+ result = getDelegateMap().put(key, value);
+ }
+ }
+ else
+ {
+ result = getDelegateMap().put(key, value);
+ }
+ return result;
+ }
+
+ public int getStartLine()
+ {
+ return delegateMap == null ? startLine : objectToInt(delegateMap.get("startLine"));
+ }
+
+ public void setStartLine(int startLine)
+ {
+ if (delegateMap == null)
+ {
+ this.startLine = startLine;
+ }
+ else
+ {
+ delegateMap.put("startLine", startLine);
+ }
+ }
+
+ public int getStartColumn()
+ {
+ return delegateMap == null ? startColumn : objectToInt(delegateMap.get("startColumn"));
+ }
+
+ public void setStartColumn(int startColumn)
+ {
+ if (delegateMap == null)
+ {
+ this.startColumn = startColumn;
+ }
+ else
+ {
+ delegateMap.put("startColumn", startColumn);
+ }
+ }
+
+ public int getEndLine()
+ {
+ return delegateMap == null ? endLine : objectToInt(delegateMap.get("endLine"));
+ }
+
+ public void setEndLine(int endLine)
+ {
+ if (delegateMap == null)
+ {
+ this.endLine = endLine;
+ }
+ else
+ {
+ delegateMap.put("endLine", endLine);
+ }
+ }
+
+ public int getEndColumn()
+ {
+ return delegateMap == null ? endColumn : objectToInt(delegateMap.get("endColumn"));
+ }
+
+ public void setEndColumn(int endColumn)
+ {
+ if (delegateMap == null)
+ {
+ this.endColumn = endColumn;
+ }
+ else
+ {
+ delegateMap.put("endColumn", endColumn);
+ }
+ }
+ }
+
+ /**
+ * Returns the user data associated with the node.
+ * If the node has no user data, a new empty map is created.
+ * @param node the node to query.
+ * @return the user data associated with the node.
+ */
+ public static Map<Object, Object> getUserData(Node node)
+ {
+ return getLocationMap(node);
+ }
+
+ private static LocationMap getLocationMap(Node node)
+ {
+ LocationMap result = (LocationMap)userDataMap.get(node);
+ if (result == null)
+ {
+ result = new LocationMap();
+ userDataMap.put(node, result);
+ }
+ return result;
+ }
+
+ /**
+ * Returns the line at which the given node starts.
+ * @param node the node to query.
+ * @return the line at which the given node starts.
+ */
+ public static int getStartLine(Node node)
+ {
+ int result = getLocationMap(node).getStartLine();
+ return result == LocationMap.UNSET ? 1 : result;
+ }
+
+ /**
+ * Sets the line at which the given node starts.
+ * @param node the node to set.
+ * @param value the line at which the given node starts.
+ */
+ public static void setStartLine(Node node, int value)
+ {
+ getLocationMap(node).setStartLine(value);
+ }
+
+ /**
+ * Returns the column at which the given node starts.
+ * @param node the node to query.
+ * @return the column at which the given node starts.
+ */
+ public static int getStartColumn(Node node)
+ {
+ int result = getLocationMap(node).getStartColumn();
+ return result == LocationMap.UNSET ? 1 : result;
+ }
+
+ /**
+ * Sets the column at which the given node starts.
+ * @param node the node to set.
+ * @param value the column at which the given node starts.
+ */
+ public static void setStartColumn(Node node, int value)
+ {
+ getLocationMap(node).setStartColumn(value);
+ }
+
+ /**
+ * Returns the line at which the given node ends.
+ * @param node the node to query.
+ * @return the line at which the given node ends.
+ */
+ public static int getEndLine(Node node)
+ {
+ int result = getLocationMap(node).getEndLine();
+ return result == LocationMap.UNSET ? 1 : result;
+ }
+
+ /**
+ * Sets the line at which the given node ends.
+ * @param node the node to set.
+ * @param value the line at which the given node ends.
+ */
+ public static void setEndLine(Node node, int value)
+ {
+ getLocationMap(node).setEndLine(value);
+ }
+
+ /**
+ * Returns the column at which the given node ends.
+ * @param node the node to query.
+ * @return the column at which the given node ends.
+ */
+ public static int getEndColumn(Node node)
+ {
+ int result = getLocationMap(node).getEndColumn();
+ return result == LocationMap.UNSET ? 1 : result;
+ }
+
+ /**
+ * Sets the column at which the given node ends.
+ * @param node the node to set.
+ * @param value the column at which the given node ends.
+ */
+ public static void setEndColumn(Node node, int value)
+ {
+ getLocationMap(node).setEndColumn(value);
+ }
+
+ protected XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+ protected XSDSchema xsdSchema;
+ protected List<XSDDiagnostic> xsdDiagnostics = new ArrayList<XSDDiagnostic>();
+ protected SAXParser saxParser;
+ protected JAXPPool jaxpPool;
+ protected Document document;
+ protected Stack<Element> stack = new Stack<Element>();
+ protected Element element;
+ protected Locator locator;
+ protected int line;
+ protected int column;
+ protected String encoding;
+ protected StringBuilder cdata;
+ protected CDATASection cdataSection;
+
+ /**
+ * @deprecated since 2.2
+ *
+ */
+ @Deprecated
+ public XSDParser()
+ {
+ try
+ {
+ SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+ saxParserFactory.setNamespaceAware(true);
+ saxParserFactory.setValidating(false);
+
+ saxParserFactory.setFeature("http://xml.org/sax/features/validation", false);
+ saxParserFactory.setFeature("http://xml.org/sax/features/namespaces", true);
+ saxParserFactory.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+
+ saxParser = saxParserFactory.newSAXParser();
+
+ saxParser.setProperty("http://xml.org/sax/properties/lexical-handler", this);
+ }
+ catch (SAXException exception)
+ {
+ fatalError(exception);
+ }
+ catch (ParserConfigurationException exception)
+ {
+ fatalError(exception);
+ }
+ }
+
+ public XSDParser(Map<?, ?> options)
+ {
+ JAXPConfiguration config = null;
+ if (options != null)
+ {
+ jaxpPool = (JAXPPool)options.get(XSDResourceImpl.XSD_JAXP_POOL);
+ config = (JAXPConfiguration)options.get(XSDResourceImpl.XSD_JAXP_CONFIG);
+ }
+ try
+ {
+ if (jaxpPool == null)
+ {
+ if (config != null)
+ {
+ saxParser = config.createSAXParser(this);
+ }
+ else
+ {
+ saxParser = new DefaultJAXPConfiguration().createSAXParser(this);
+ }
+ }
+ else
+ {
+ saxParser = jaxpPool.getSAXParser(this);
+ }
+ }
+ catch (SAXException exception)
+ {
+ fatalError(exception);
+ }
+ catch (ParserConfigurationException exception)
+ {
+ fatalError(exception);
+ }
+ }
+
+ public void parse(String uri)
+ {
+ try
+ {
+ saxParser.parse(new InputSource(uri), this);
+ }
+ catch (IOException exception)
+ {
+ fatalError(exception);
+ }
+ catch (SAXException exception)
+ {
+ if (xsdDiagnostics.isEmpty())
+ {
+ fatalError(exception);
+ }
+ }
+ finally
+ {
+ if (jaxpPool != null)
+ {
+ jaxpPool.releaseSAXParser(saxParser);
+ }
+ }
+ }
+
+ public void parseString(String input)
+ {
+ parse(new InputSource(new StringReader(input)));
+ }
+
+ public void parse(InputSource inputSource)
+ {
+ try
+ {
+ saxParser.parse(inputSource, this);
+ }
+ catch (IOException exception)
+ {
+ fatalError(exception);
+ }
+ catch (SAXException exception)
+ {
+ if (xsdDiagnostics.isEmpty())
+ {
+ fatalError(exception);
+ }
+ }
+ finally
+ {
+ if (jaxpPool != null)
+ {
+ jaxpPool.releaseSAXParser(saxParser);
+ }
+ }
+ }
+
+ public void parse(InputStream inputStream)
+ {
+ try
+ {
+ saxParser.parse(new InputSource(inputStream), this);
+ }
+ catch (IOException exception)
+ {
+ fatalError(exception);
+ }
+ catch (SAXException exception)
+ {
+ if (xsdDiagnostics.isEmpty())
+ {
+ fatalError(exception);
+ }
+ }
+ finally
+ {
+ if (jaxpPool != null)
+ {
+ jaxpPool.releaseSAXParser(saxParser);
+ }
+ }
+ }
+
+ public String getEncoding()
+ {
+ if (locator instanceof Locator2)
+ {
+ encoding = ((Locator2)locator).getEncoding();
+ }
+
+ return encoding;
+ }
+
+ public Document getDocument()
+ {
+ return document;
+ }
+
+ public void setSchema(XSDSchema xsdSchema)
+ {
+ if (document != null)
+ {
+ this.xsdSchema = xsdSchema;
+ Element element = document.getDocumentElement();
+ if (element != null)
+ {
+ xsdSchema.setElement(element);
+ }
+ xsdSchema.clearDiagnostics();
+ XSDResourceImpl.assignDiagnostics(xsdSchema, xsdDiagnostics);
+ XSDResourceImpl resource = (XSDResourceImpl)xsdSchema.eResource();
+ if (resource != null && getEncoding() != null)
+ {
+ resource.getDefaultSaveOptions().put(XSDResourceImpl.XSD_ENCODING, getEncoding());
+ }
+ }
+ }
+
+ public XSDSchema getSchema()
+ {
+ if (xsdSchema == null && document != null)
+ {
+ Element element = document.getDocumentElement();
+ xsdSchema = element == null ? xsdFactory.createXSDSchema() : XSDSchemaImpl.createSchema(element);
+ XSDResourceImpl.assignDiagnostics(xsdSchema, xsdDiagnostics);
+ }
+ return xsdSchema;
+ }
+
+ public Collection<XSDDiagnostic> getDiagnostics()
+ {
+ return xsdDiagnostics;
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
+ {
+ Element newElement = document.createElementNS(uri, qName);
+ for (int i = 0, length = attributes.getLength(); i < length; ++i)
+ {
+ String attributeURI = attributes.getURI(i);
+ String attributeQName = attributes.getQName(i);
+ String attributeValue = attributes.getValue(i);
+ if (attributeQName.equals("xmlns") || attributeQName.startsWith("xmlns:"))
+ {
+ attributeURI = XSDConstants.XMLNS_URI_2000;
+ }
+ else if ("".equals(attributeURI))
+ {
+ attributeURI = null;
+ }
+ newElement.setAttributeNS(attributeURI, attributeQName, attributeValue);
+ }
+
+ if (stack.isEmpty())
+ {
+ document.appendChild(newElement);
+ }
+ else
+ {
+ element.appendChild(newElement);
+ }
+
+ stack.push(element);
+ element = newElement;
+
+ LocationMap extendedAttributes = getLocationMap(element);
+ extendedAttributes.setStartLine(line);
+ extendedAttributes.setStartColumn(column);
+
+ saveLocation();
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException
+ {
+ saveLocation();
+
+ LocationMap extendedAttributes = getLocationMap(element);
+ extendedAttributes.setEndLine(line);
+ extendedAttributes.setEndColumn(column);
+
+ element = stack.pop();
+ }
+
+ @Override
+ public void setDocumentLocator(Locator locator)
+ {
+ this.locator = locator;
+ super.setDocumentLocator(locator);
+ }
+
+ @Override
+ public void startDocument()
+ {
+ saveLocation();
+ document = createDocument();
+ xsdSchema = null;
+ stack.clear();
+
+ getEncoding();
+ }
+
+ public static Document createDocument()
+ {
+ try
+ {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ documentBuilderFactory.setNamespaceAware(true);
+ documentBuilderFactory.setValidating(false);
+ DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ return documentBuilder.newDocument();
+ }
+ catch (ParserConfigurationException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ return null;
+ }
+ }
+
+ @Override
+ public void endDocument()
+ {
+ element = null;
+ saveLocation();
+ this.locator = null;
+ }
+
+ @Override
+ public void characters(char [] characters, int start, int length) throws SAXException
+ {
+ if (cdata != null)
+ {
+ cdata.append(characters, start, length);
+ }
+ else
+ {
+ int lineFeed = 0;
+ int carriageReturn = 0;
+ for (int i = 0; i < length; ++i)
+ {
+ char character = characters[start + i];
+ if (character == '\n')
+ {
+ ++lineFeed;
+ column = 1;
+ }
+ else if (character == '\r')
+ {
+ ++carriageReturn;
+ column = 1;
+ }
+ else if (character == ' ' && character == '\t')
+ {
+ ++column;
+ }
+ else
+ {
+ // Put the leading whitespace in its own text node.
+ if (i != 0)
+ {
+ Text textNode = document.createTextNode(new String(characters, start, i));
+ element.appendChild(textNode);
+ }
+
+ // Create a next node that starts with the non-whitespace.
+ //
+ line += Math.max(lineFeed, carriageReturn);
+ Text textNode = document.createTextNode(new String(characters, start + i, length - i));
+ element.appendChild(textNode);
+ LocationMap extendedAttributes = getLocationMap(textNode);
+ extendedAttributes.setStartLine(line);
+ extendedAttributes.setStartColumn(column);
+ saveLocation();
+ extendedAttributes.setEndLine(line);
+ extendedAttributes.setEndColumn(column);
+ return;
+ }
+ }
+ Text textNode = document.createTextNode(new String(characters, start, length));
+ element.appendChild(textNode);
+ saveLocation();
+ }
+ }
+
+ public void comment(char [] characters, int start, int length) throws SAXException
+ {
+ Comment commentNode = document.createComment(new String(characters, start, length));
+ if (element == null)
+ {
+ document.appendChild(commentNode);
+ }
+ else
+ {
+ element.appendChild(commentNode);
+ }
+ saveLocation();
+ }
+
+ public void startCDATA()
+ {
+ cdata = new StringBuilder();
+ cdataSection = document.createCDATASection("");
+ LocationMap extendedAttributes = getLocationMap(cdataSection);
+ extendedAttributes.setStartLine(line);
+ extendedAttributes.setStartColumn(column);
+ }
+
+ public void endCDATA()
+ {
+ cdataSection.setData(cdata.toString());
+ element.appendChild(cdataSection);
+ LocationMap extendedAttributes = getLocationMap(cdataSection);
+ cdata = null;
+ saveLocation();
+ extendedAttributes.setEndLine(line);
+ extendedAttributes.setEndColumn(column);
+ }
+
+ public void startDTD(String name, String publicId, String systemId)
+ {
+ // Ignore
+ }
+
+ public void endDTD()
+ {
+ // Ignore
+ }
+
+ public void startEntity(String name)
+ {
+ // Ignore
+ }
+
+ public void endEntity(String name)
+ {
+ // Ignore
+ }
+
+ @Override
+ public void processingInstruction(String target, String data)
+ {
+ Node processingInstruction = document.createProcessingInstruction(target, data);
+ if (stack.isEmpty())
+ {
+ document.appendChild(processingInstruction);
+ }
+ else
+ {
+ element.appendChild(processingInstruction);
+ }
+ }
+
+ protected void fatalError(IOException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.FATAL_LITERAL);
+ xsdDiagnostic.setMessage(XSDPlugin.INSTANCE.getString("_UI_IOError_message", new Object [] { exception.getLocalizedMessage() }));
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ protected void fatalError(ParserConfigurationException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.FATAL_LITERAL);
+ xsdDiagnostic.setMessage(XSDPlugin.INSTANCE.getString("_UI_ParserError_message", new Object [] { exception.getLocalizedMessage() }));
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ public void fatalError(SAXException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.FATAL_LITERAL);
+ xsdDiagnostic.setMessage(XSDPlugin.INSTANCE.getString("_UI_ParserError_message", new Object [] { exception.getMessage() }));
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ @Override
+ public void fatalError(SAXParseException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.FATAL_LITERAL);
+ xsdDiagnostic.setMessage(XSDPlugin.INSTANCE.getString("_UI_ParserError_message", new Object [] { exception.getMessage() }));
+ xsdDiagnostic.setLine(exception.getLineNumber());
+ xsdDiagnostic.setColumn(exception.getColumnNumber());
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ @Override
+ public void error(SAXParseException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage("DOM:" + exception.getMessage());
+ xsdDiagnostic.setLine(exception.getLineNumber());
+ xsdDiagnostic.setColumn(exception.getColumnNumber());
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ @Override
+ public void warning(SAXParseException exception)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.WARNING_LITERAL);
+ xsdDiagnostic.setMessage("DOM:" + exception.getMessage());
+ xsdDiagnostic.setLine(exception.getLineNumber());
+ xsdDiagnostic.setColumn(exception.getColumnNumber());
+ xsdDiagnostics.add(xsdDiagnostic);
+ }
+
+ protected void saveLocation()
+ {
+ if (locator != null)
+ {
+ line = locator.getLineNumber();
+ column = locator.getColumnNumber();
+ // The crimson parser seems to give poor coodinates and is 0-based for line count.
+ //
+ if (column == -1)
+ {
+ column = 1;
+ }
+ }
+ }
+
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException
+ {
+ InputSource inputSource;
+ if ("-//W3C//DTD XMLSCHEMA 200102//EN".equalsIgnoreCase(publicId))
+ {
+ inputSource = new InputSource( XSDPlugin.INSTANCE.getBaseURL() + "cache/www.w3.org/2001/XMLSchema.dtd");
+ inputSource.setPublicId(publicId);
+ }
+ else if (systemId != null && systemId.startsWith("file://bundleentry:"))
+ {
+ inputSource = new InputSource(systemId.substring(7));
+ inputSource.setPublicId(publicId);
+ }
+ else
+ {
+ try
+ {
+ inputSource = super.resolveEntity(publicId, systemId);
+ }
+ catch (IOException exception)
+ {
+ throw new SAXException(exception);
+ }
+ }
+
+ return inputSource;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDPrototypicalSchema.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDPrototypicalSchema.java
new file mode 100644
index 0000000..b93f1c3
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDPrototypicalSchema.java
@@ -0,0 +1,3320 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComplexFinal;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDFractionDigitsFacet;
+import org.eclipse.xsd.XSDIdentityConstraintCategory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDProcessContents;
+import org.eclipse.xsd.XSDProhibitedSubstitutions;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.XSDXPathVariety;
+
+
+/**
+ * The <b>Sample Code</b> to construct
+ * the {@link #initializePurchaseOrderSchema Purchase Order Schema}
+ * and the {@link #initializePrototypeSchema Prototype Schema}
+ * using the concrete APIs.
+ * <p>
+ * Additional examples include:
+ * <ol>
+ * <li>
+ * {@link #savePurchaseOrderSchema saving} the Purchase Order Schema to a URI,
+ * </li>
+ * <li>
+ * {@link #printSchema printing a schema} loaded from a URI,
+ * </li>
+ * <li>
+ * {@link #printComponent printing a component's element} using Xerces,
+ * </li>
+ * <li>
+ * {@link #createSchema creating} a schema from an element,
+ * </li>
+ * <li>
+ * {@link #traceLoading tracing} a resource set's loading behavior when loading a URI
+ * </li>
+ * <li>
+ * {@link #cloneComponent cloning} a component.
+ * </li>
+ * <li>
+ * and {@link #crossReferenceTest cross referencing}.
+ * </li>
+ * </ol>
+ * </p>
+ */
+public class XSDPrototypicalSchema
+{
+ /**
+ * The one static instance.
+ */
+ protected static XSDPrototypicalSchema instance;
+
+ /**
+ * Return the one static instance.
+ * @return the one static instance.
+ */
+ public static XSDPrototypicalSchema getInstance()
+ {
+ // This is the script that will copy and encode the body of each method into the javadoc of each method.
+ // It uses bash and sed.
+ //
+ // cp XSDPrototypicalSchema.java .XSDPrototypicalSchema.java.$$.bak;
+ // for snippet in $(sed '{ /insert-begin[-]/!d; s/.*insert-begin[-]\([-a-z]*\).*/\1/; }' < XSDPrototypicalSchema.java); do
+ // (
+ // echo $snippet;
+ // sed '{ 1,/insert-begin[-]'$snippet'/!d; }' < XSDPrototypicalSchema.java > result;
+ // sed '{ 1,/<[!]-- begin-'$snippet' -->/d;
+ // /<!-- end-'$snippet' -->/,$d;
+ // s/<" + "!--/\<!--/;
+ // s/<\([^A-Za-z!/]\)/\<\1/g;
+ // s/\/\*//g;
+ // s/\*\///g;
+ // /\/\/\//s/</\</g;
+ // s/\/\/\/\(.*\)/\/\/<b>\1<\/b>/;
+ // s/ / */;
+ // s/^$/ */; }' < XSDPrototypicalSchema.java | tee junk.$$ >> result;
+ // sed '{ /insert-end[-]'$snippet'/,$!d; }' < XSDPrototypicalSchema.java >> result;
+ // cp result XSDPrototypicalSchema.java;
+ // );
+ // done
+ //
+ if (instance == null)
+ {
+ instance = new XSDPrototypicalSchema();
+ }
+ return instance;
+ }
+
+ /**
+ * Returns the {@link #initializePrototypeSchema Prototype Schema} instance.
+ * @return the Prototype Schema instance.
+ */
+ public static XSDSchema getPrototypicalSchema()
+ {
+ return getInstance().prototypeSchema;
+ }
+
+ /**
+ * Returns the {@link #initializePurchaseOrderSchema Purchase Order Schema} instance.
+ * @return the Purchase Order Schema instance.
+ */
+ public static XSDSchema getPurchaseOrderSchema()
+ {
+ return getInstance().purchaseOrderSchema;
+ }
+
+ /**
+ * A cached XSDPackage.
+ */
+
+ /**
+ * A cached XSDFactory.
+ */
+ public XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+ /**
+ * The {@link #initializePrototypeSchema Prototype Schema}.
+ */
+ public XSDSchema prototypeSchema;
+
+ /**
+ * The {@link #initializePurchaseOrderSchema Purchase Order Schema}.
+ */
+ public XSDSchema purchaseOrderSchema;
+
+ /**
+ * The value <code>"http://www.example.com/SomeOtherSchema"</code>.
+ */
+ protected String someOtherSchemaURI = "http://www.example.com/SomeOtherSchema";
+
+ /**
+ * Create the {@link #initializePrototypeSchema Prototype Schema} and the {@link #initializePurchaseOrderSchema Purchase Order Schema}.
+ */
+ public XSDPrototypicalSchema()
+ {
+ purchaseOrderSchema = initializePurchaseOrderSchema();
+
+ initializePrototypeSchema();
+
+/*
+ // These test whether DOM event notifications work.
+ //
+ for (Iterator components = prototypeSchema.getComponentsWithApplicationInformation("http://www.example.com/appinfo").iterator();
+ components.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)components.next();
+ System.out.println("# " + xsdConcreteComponent);
+ }
+
+ simpleTypeDefinition.getElement().setAttribute("name", "abc");
+ System.out.println("---??? " + simpleTypeDefinition.getName());
+
+
+ simpleRecursiveModelGroupDefinition.getElement().setAttribute("name", "xyz");
+*/
+ }
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-prototype-schema -->
+ *{
+ * // Create the schema, give it a target namespace, and set its form defaults.
+ * //
+ * prototypeSchema = xsdFactory.{@link XSDFactory#createXSDSchema createXSDSchema}();
+ *
+ * prototypeSchema.{@link XSDSchema#setTargetNamespace setTargetNamespace}("http://www.example.com/PrototypicalSchema");
+ * prototypeSchema.{@link XSDSchema#setElementFormDefault setElementFormDefault}(XSDForm.QUALIFIED_LITERAL);
+ * prototypeSchema.{@link XSDSchema#setAttributeFormDefault setAttributeFormDefault}(XSDForm.QUALIFIED_LITERAL);
+ *
+ * // If you want schema tags and references to schema types to be qualified,
+ * // which is recommend, this is the recommended qualifier.
+ * //
+ * prototypeSchema.{@link XSDSchema#setSchemaForSchemaQNamePrefix setSchemaForSchemaQNamePrefix}("xsd");
+ *
+ * // Choose the prefix used for this schema's namespace,
+ * // the {@link XSDSchema#getSchemaForSchema schema for schema}'s namespace,
+ * // and some other imported namespace.
+ * //
+ * Map qNamePrefixToNamespaceMap = prototypeSchema.{@link XSDSchema#getQNamePrefixToNamespaceMap getQNamePrefixToNamespaceMap}();
+ * qNamePrefixToNamespaceMap.put("PTS", prototypeSchema.getTargetNamespace());
+ * qNamePrefixToNamespaceMap.put(prototypeSchema.getSchemaForSchemaQNamePrefix(), {@link XSDConstants}.SCHEMA_FOR_SCHEMA_URI_2001);
+ * qNamePrefixToNamespaceMap.put("EXT", {@link #someOtherSchemaURI});
+ *
+ * // Initialize the other parts of this examples.
+ * //
+ * {@link #initializeSomeOtherImport()};
+ * {@link #initializeSimpleAttributeGroupDefinition()};
+ * {@link #initializeSimpleRecursiveModelGroupDefinition()};
+ * {@link #initializeSimpleRecursiveComplexTypeDefinition()};
+ * {@link #initializeSimpleRecursiveElementDeclaration()};
+ * {@link #initializeSimpleAttributeDeclaration()};
+ * {@link #initializeSimpleElementDeclarationWithAnonymousType()};
+ * {@link #initializeSimpleTypeDefinition()};
+ * {@link #initializeSimpleListTypeDefinition()};
+ * {@link #initializeSimpleUnionTypeDefinition()};
+ * {@link #initializeFancyListTypeDefinition()};
+ * {@link #initializeSimpleContentComplexTypeDefinition()};
+ *
+ * // This is the <!-- SAMPLE --> <a name="prototype-end">result</a> that is produced.
+ * //
+ * //<b> <?xml version="1.0" encoding="UTF-8"?></b>
+ * //<b> <xsd:schema attributeFormDefault="qualified"</b>
+ * //<b> elementFormDefault="qualified"</b>
+ * //<b> targetNamespace="http://www.example.com/PrototypicalSchema"</b>
+ * //<b> xmlns:EXT="http://www.example.com/SomeOtherSchema"</b>
+ * //<b> xmlns:PTS="http://www.example.com/PrototypicalSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema"></b>
+ * //<b> <xsd:import namespace="http://www.example.com/SomeOtherSchema" schemaLocation="http://www.example.com/SomeOtherSchema"/></b>
+ * //<b> <xsd:attributeGroup name="simpleAttributeGroupDefinition"></b>
+ * //<b> <xsd:attribute default="defaultValue"</b>
+ * //<b> name="simpleAttributeDeclarationGroupMember" type="EXT:someOtherTypeDefinition"/></b>
+ * //<b> </xsd:attributeGroup></b>
+ * //<b> <xsd:group name="simpleRecursiveModelGroupDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:sequence></b>
+ * //<b> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="PTS:simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:any namespace="##other" processContents="lax"/></b>
+ * //<b> </xsd:sequence></b>
+ * //<b> </xsd:group></b>
+ * //<b> <xsd:complexType abstract="false" block="#all" final="#all"</b>
+ * //<b> mixed="true" name="SimpleRecursiveComplexTypeDefinition"></b>
+ * //<b> <xsd:annotation></b>
+ * //<b> <xsd:appinfo source="http://www.example.com/appinfo"/></b>
+ * //<b> <xsd:documentation</b>
+ * //<b> source="http://www.example.com/documentation">A simple</b>
+ * //<b> recursive complex type definition.</xsd:documentation></b>
+ * //<b> </xsd:annotation></b>
+ * //<b> <xsd:group ref="PTS:simpleRecursiveModelGroupDefinition"/></b>
+ * //<b> <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/></b>
+ * //<b> <xsd:attributeGroup ref="PTS:simpleAttributeGroupDefinition"/></b>
+ * //<b> <xsd:anyAttribute namespace="##other"/></b>
+ * //<b> </xsd:complexType></b>
+ * //<b> <xsd:element name="simpleRecursiveElementDeclaration" type="PTS:SimpleRecursiveComplexTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:unique name="unique"></b>
+ * //<b> <xsd:selector xpath="simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:field xpath="simpleAttributeDeclarationGroupMember"/></b>
+ * //<b> </xsd:unique></b>
+ * //<b> <xsd:key name="key"></b>
+ * //<b> <xsd:selector xpath="simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:field xpath="simpleAttributeDeclarationGroupMember"/></b>
+ * //<b> </xsd:key></b>
+ * //<b> <xsd:keyref name="keyref" refer="PTS:key"></b>
+ * //<b> <xsd:selector xpath="simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:field xpath="simpleAttributeDeclaration"/></b>
+ * //<b> </xsd:keyref></b>
+ * //<b> </xsd:element></b>
+ * //<b> <xsd:attribute default="defaultValue"</b>
+ * //<b> name="simpleAttributeDeclaration" type="EXT:someOtherTypeDefinition"/></b>
+ * //<b> <xsd:element fixed="12ab" name="simpleElementWithAnonymousType"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:string"></b>
+ * //<b> <xsd:pattern value="\d\d.."/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:element></b>
+ * //<b> <xsd:simpleType name="SimpleTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:restriction base="xsd:positiveInteger"></b>
+ * //<b> <xsd:maxInclusive value="100"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:simpleType name="SimpleListTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:list itemType="xsd:integer"/></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:simpleType name="SimpleUnionTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:union memberTypes="xsd:integer"/></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:simpleType name="FancyListTypeDefinition"></b>
+ * //<b> <xsd:restriction></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:list></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:union></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:string"></b>
+ * //<b> <xsd:enumeration value="unknown"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:decimal"></b>
+ * //<b> <xsd:fractionDigits value="2"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:union></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:list></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:maxLength value="4"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:complexType name="SimpleContentComplexTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:simpleContent></b>
+ * //<b> <xsd:extension base="xsd:string"></b>
+ * //<b> <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/></b>
+ * //<b> </xsd:extension></b>
+ * //<b> </xsd:simpleContent></b>
+ * //<b> </xsd:complexType></b>
+ * //<b> </xsd:schema></b>
+ *
+ * return prototypeSchema;
+ *}
+ *<!-- insert-end-initialize-prototype-schema -->
+ *</pre>
+ */
+ public XSDSchema initializePrototypeSchema()
+ // <!-- begin-initialize-prototype-schema -->
+ {
+ // Create the schema, give it a target namespace, and set its form defaults.
+ //
+ prototypeSchema = xsdFactory./*{@link XSDFactory#createXSDSchema */createXSDSchema/*}*/();
+
+ prototypeSchema./*{@link XSDSchema#setTargetNamespace */setTargetNamespace/*}*/("http://www.example.com/PrototypicalSchema");
+ prototypeSchema./*{@link XSDSchema#setElementFormDefault */setElementFormDefault/*}*/(XSDForm.QUALIFIED_LITERAL);
+ prototypeSchema./*{@link XSDSchema#setAttributeFormDefault */setAttributeFormDefault/*}*/(XSDForm.QUALIFIED_LITERAL);
+
+ // If you want schema tags and references to schema types to be qualified,
+ // which is recommend, this is the recommended qualifier.
+ //
+ prototypeSchema./*{@link XSDSchema#setSchemaForSchemaQNamePrefix */setSchemaForSchemaQNamePrefix/*}*/("xsd");
+
+ // Choose the prefix used for this schema's namespace,
+ // the {@link XSDSchema#getSchemaForSchema schema for schema}'s namespace,
+ // and some other imported namespace.
+ //
+ Map<String, String> qNamePrefixToNamespaceMap = prototypeSchema./*{@link XSDSchema#getQNamePrefixToNamespaceMap */getQNamePrefixToNamespaceMap/*}*/();
+ qNamePrefixToNamespaceMap.put("PTS", prototypeSchema.getTargetNamespace());
+ qNamePrefixToNamespaceMap.put(prototypeSchema.getSchemaForSchemaQNamePrefix(), /*{@link */XSDConstants/*}*/.SCHEMA_FOR_SCHEMA_URI_2001);
+ qNamePrefixToNamespaceMap.put("EXT", /*{@link #*/someOtherSchemaURI/*}*/);
+
+ // Initialize the other parts of this examples.
+ //
+ /*{@link #*/initializeSomeOtherImport()/*}*/;
+ /*{@link #*/initializeSimpleAttributeGroupDefinition()/*}*/;
+ /*{@link #*/initializeSimpleRecursiveModelGroupDefinition()/*}*/;
+ /*{@link #*/initializeSimpleRecursiveComplexTypeDefinition()/*}*/;
+ /*{@link #*/initializeSimpleRecursiveElementDeclaration()/*}*/;
+ /*{@link #*/initializeSimpleAttributeDeclaration()/*}*/;
+ /*{@link #*/initializeSimpleElementDeclarationWithAnonymousType()/*}*/;
+ /*{@link #*/initializeSimpleTypeDefinition()/*}*/;
+ /*{@link #*/initializeSimpleListTypeDefinition()/*}*/;
+ /*{@link #*/initializeSimpleUnionTypeDefinition()/*}*/;
+ /*{@link #*/initializeFancyListTypeDefinition()/*}*/;
+ /*{@link #*/initializeSimpleContentComplexTypeDefinition()/*}*/;
+
+ // This is the <!-- SAMPLE --> <a name="prototype-end">result</a> that is produced.
+ //
+ /// <?xml version="1.0" encoding="UTF-8"?>
+ /// <xsd:schema attributeFormDefault="qualified"
+ /// elementFormDefault="qualified"
+ /// targetNamespace="http://www.example.com/PrototypicalSchema"
+ /// xmlns:EXT="http://www.example.com/SomeOtherSchema"
+ /// xmlns:PTS="http://www.example.com/PrototypicalSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ /// <xsd:import namespace="http://www.example.com/SomeOtherSchema" schemaLocation="http://www.example.com/SomeOtherSchema"/>
+ /// <xsd:attributeGroup name="simpleAttributeGroupDefinition">
+ /// <xsd:attribute default="defaultValue"
+ /// name="simpleAttributeDeclarationGroupMember" type="EXT:someOtherTypeDefinition"/>
+ /// </xsd:attributeGroup>
+ /// <xsd:group name="simpleRecursiveModelGroupDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:sequence>
+ /// <xsd:element maxOccurs="unbounded" minOccurs="0" ref="PTS:simpleRecursiveElementDeclaration"/>
+ /// <xsd:any namespace="##other" processContents="lax"/>
+ /// </xsd:sequence>
+ /// </xsd:group>
+ /// <xsd:complexType abstract="false" block="#all" final="#all"
+ /// mixed="true" name="SimpleRecursiveComplexTypeDefinition">
+ /// <xsd:annotation>
+ /// <xsd:appinfo source="http://www.example.com/appinfo"/>
+ /// <xsd:documentation
+ /// source="http://www.example.com/documentation">A simple
+ /// recursive complex type definition.</xsd:documentation>
+ /// </xsd:annotation>
+ /// <xsd:group ref="PTS:simpleRecursiveModelGroupDefinition"/>
+ /// <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/>
+ /// <xsd:attributeGroup ref="PTS:simpleAttributeGroupDefinition"/>
+ /// <xsd:anyAttribute namespace="##other"/>
+ /// </xsd:complexType>
+ /// <xsd:element name="simpleRecursiveElementDeclaration" type="PTS:SimpleRecursiveComplexTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:unique name="unique">
+ /// <xsd:selector xpath="simpleRecursiveElementDeclaration"/>
+ /// <xsd:field xpath="simpleAttributeDeclarationGroupMember"/>
+ /// </xsd:unique>
+ /// <xsd:key name="key">
+ /// <xsd:selector xpath="simpleRecursiveElementDeclaration"/>
+ /// <xsd:field xpath="simpleAttributeDeclarationGroupMember"/>
+ /// </xsd:key>
+ /// <xsd:keyref name="keyref" refer="PTS:key">
+ /// <xsd:selector xpath="simpleRecursiveElementDeclaration"/>
+ /// <xsd:field xpath="simpleAttributeDeclaration"/>
+ /// </xsd:keyref>
+ /// </xsd:element>
+ /// <xsd:attribute default="defaultValue"
+ /// name="simpleAttributeDeclaration" type="EXT:someOtherTypeDefinition"/>
+ /// <xsd:element fixed="12ab" name="simpleElementWithAnonymousType">
+ /// <xsd:annotation/>
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:string">
+ /// <xsd:pattern value="\d\d.."/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// </xsd:element>
+ /// <xsd:simpleType name="SimpleTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:restriction base="xsd:positiveInteger">
+ /// <xsd:maxInclusive value="100"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// <xsd:simpleType name="SimpleListTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:list itemType="xsd:integer"/>
+ /// </xsd:simpleType>
+ /// <xsd:simpleType name="SimpleUnionTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:union memberTypes="xsd:integer"/>
+ /// </xsd:simpleType>
+ /// <xsd:simpleType name="FancyListTypeDefinition">
+ /// <xsd:restriction>
+ /// <xsd:simpleType>
+ /// <xsd:list>
+ /// <xsd:simpleType>
+ /// <xsd:union>
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:string">
+ /// <xsd:enumeration value="unknown"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:decimal">
+ /// <xsd:fractionDigits value="2"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// </xsd:union>
+ /// </xsd:simpleType>
+ /// </xsd:list>
+ /// </xsd:simpleType>
+ /// <xsd:maxLength value="4"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// <xsd:complexType name="SimpleContentComplexTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:simpleContent>
+ /// <xsd:extension base="xsd:string">
+ /// <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/>
+ /// </xsd:extension>
+ /// </xsd:simpleContent>
+ /// </xsd:complexType>
+ /// </xsd:schema>
+
+ return prototypeSchema;
+ }
+ // <!-- end-initialize-prototype-schema -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-some-other-import -->
+ *{
+ * // Create an import and set its namespace and schema location.
+ * //
+ * XSDImport someOtherImport = xsdFactory.{@link XSDFactory#createXSDImport createXSDImport}();
+ * someOtherImport.{@link XSDImport#setNamespace setNamespace}({@link #someOtherSchemaURI});
+ * someOtherImport.{@link XSDImport#setSchemaLocation setSchemaLocation}(someOtherSchemaURI);
+ *
+ * // Add the import to the schema contents.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(someOtherImport);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:import namespace="http://www.example.com/SomeOtherSchema" schemaLocation="http://www.example.com/SomeOtherSchema"/></b>
+ *}
+ *<!-- insert-end-initialize-some-other-import -->
+ *</pre>
+ */
+ public void initializeSomeOtherImport()
+ // <!-- begin-initialize-some-other-import -->
+ {
+ // Create an import and set its namespace and schema location.
+ //
+ XSDImport someOtherImport = xsdFactory./*{@link XSDFactory#createXSDImport */createXSDImport/*}*/();
+ someOtherImport./*{@link XSDImport#setNamespace */setNamespace/*}*/(/*{@link #*/someOtherSchemaURI/*}*/);
+ someOtherImport./*{@link XSDImport#setSchemaLocation */setSchemaLocation/*}*/(someOtherSchemaURI);
+
+ // Add the import to the schema contents.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(someOtherImport);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:import namespace="http://www.example.com/SomeOtherSchema" schemaLocation="http://www.example.com/SomeOtherSchema"/>
+ }
+ // <!-- end-initialize-some-other-import -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-attribute-group-definition -->
+ *{
+ * // Create an attribute group definition and set it's name to simpleAttributeGroupDefinition.
+ * //
+ * {@link XSDAttributeGroupDefinition} simpleAttributeGroupDefinition = xsdFactory.createXSDAttributeGroupDefinition();
+ * simpleAttributeGroupDefinition.{@link org.eclipse.xsd.XSDNamedComponent#getName setName}("simpleAttributeGroupDefinition");
+ *
+ * // Create an attribute, name it simpleAttributeDeclarationGroupMember,
+ * // set it's type to someOtherTypeDefinition in some other schema.
+ * // set its constraints to be default, set the lexical value of the constraint to be "defaultValue".
+ * //
+ * {@link XSDAttributeDeclaration} simpleAttributeDeclarationGroupMember = xsdFactory.createXSDAttributeDeclaration();
+ * simpleAttributeDeclarationGroupMember.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("simpleAttributeDeclarationGroupMember");
+ * simpleAttributeDeclarationGroupMember.{@link org.eclipse.xsd.XSDAttributeDeclaration#setTypeDefinition setTypeDefinition}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveSimpleTypeDefinition(String, String) resolveSimpleTypeDefinition}({@link #someOtherSchemaURI}, "someOtherTypeDefinition"));
+ *
+ * // Create an attribute use to contain the attribute and add it the attribute group.
+ * //
+ * {@link XSDAttributeUse} simpleAttributeUseGroupMember = xsdFactory.createXSDAttributeUse();
+ * simpleAttributeUseGroupMember.{@link XSDAttributeUse#setContent setContent}(simpleAttributeDeclarationGroupMember);
+ * simpleAttributeUseGroupMember.{@link XSDAttributeDeclaration#setConstraint setConstraint}({@link XSDConstraint}.DEFAULT_LITERAL);
+ * simpleAttributeUseGroupMember.{@link XSDAttributeDeclaration#setLexicalValue setLexicalValue}("defaultValue");
+ * simpleAttributeGroupDefinition.{@link XSDAttributeGroupDefinition#getContents getContents}().add(simpleAttributeUseGroupMember);
+ *
+ * // Add the attribute group to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleAttributeGroupDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:attributeGroup name="simpleAttributeGroupDefinition"></b>
+ * //<b> <xsd:attribute default="defaultValue"</b>
+ * //<b> name="simpleAttributeDeclarationGroupMember" type="EXT:someOtherTypeDefinition"/></b>
+ * //<b> </xsd:attributeGroup></b>
+ *}
+ *<!-- insert-end-initialize-simple-attribute-group-definition -->
+ *</pre>
+ */
+ public void initializeSimpleAttributeGroupDefinition()
+ // <!-- begin-initialize-simple-attribute-group-definition -->
+ {
+ // Create an attribute group definition and set it's name to simpleAttributeGroupDefinition.
+ //
+ /*{@link */XSDAttributeGroupDefinition/*}*/ simpleAttributeGroupDefinition = xsdFactory.createXSDAttributeGroupDefinition();
+ simpleAttributeGroupDefinition./*{@link XSDNamedComponent#getName */setName/*}*/("simpleAttributeGroupDefinition");
+
+ // Create an attribute, name it simpleAttributeDeclarationGroupMember,
+ // set it's type to someOtherTypeDefinition in some other schema.
+ // set its constraints to be default, set the lexical value of the constraint to be "defaultValue".
+ //
+ /*{@link */XSDAttributeDeclaration/*}*/ simpleAttributeDeclarationGroupMember = xsdFactory.createXSDAttributeDeclaration();
+ simpleAttributeDeclarationGroupMember./*{@link XSDNamedComponent#setName */setName/*}*/("simpleAttributeDeclarationGroupMember");
+ simpleAttributeDeclarationGroupMember./*{@link XSDAttributeDeclaration#setTypeDefinition */setTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition(String, String) */resolveSimpleTypeDefinition/*}*/(/*{@link #*/someOtherSchemaURI/*}*/, "someOtherTypeDefinition"));
+
+ // Create an attribute use to contain the attribute and add it the attribute group.
+ //
+ /*{@link */XSDAttributeUse/*}*/ simpleAttributeUseGroupMember = xsdFactory.createXSDAttributeUse();
+ simpleAttributeUseGroupMember./*{@link XSDAttributeUse#setContent */setContent/*}*/(simpleAttributeDeclarationGroupMember);
+ simpleAttributeUseGroupMember./*{@link XSDAttributeDeclaration#setConstraint */setConstraint/*}*/(/*{@link */XSDConstraint/*}*/.DEFAULT_LITERAL);
+ simpleAttributeUseGroupMember./*{@link XSDAttributeDeclaration#setLexicalValue */setLexicalValue/*}*/("defaultValue");
+ simpleAttributeGroupDefinition./*{@link XSDAttributeGroupDefinition#getContents */getContents/*}*/().add(simpleAttributeUseGroupMember);
+
+ // Add the attribute group to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleAttributeGroupDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:attributeGroup name="simpleAttributeGroupDefinition">
+ /// <xsd:attribute default="defaultValue"
+ /// name="simpleAttributeDeclarationGroupMember" type="EXT:someOtherTypeDefinition"/>
+ /// </xsd:attributeGroup>
+ }
+ // <!-- end-initialize-simple-attribute-group-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-recursive-model-group-definition -->
+ *{
+ * // Create a model group definition and name it simpleRecursiveModelGroupDefinition.
+ * //
+ * {@link XSDModelGroupDefinition} simpleRecursiveModelGroupDefinition = xsdFactory.createXSDModelGroupDefinition();
+ * simpleRecursiveModelGroupDefinition.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("simpleRecursiveModelGroupDefinition");
+ *
+ * // Create an annotation placeholder and add it to the model group definition.
+ * //
+ * XSDAnnotation annotation = xsdFactory.createXSDAnnotation();
+ * simpleRecursiveModelGroupDefinition.setAnnotation(annotation);
+ *
+ * // Create a sequence model group.
+ * //
+ * {@link XSDModelGroup} modelGroup = xsdFactory.createXSDModelGroup();
+ * modelGroup.{@link XSDModelGroup#setCompositor(XSDCompositor) setCompositor}(XSDCompositor.SEQUENCE_LITERAL);
+ *
+ * // Create an element reference to the simpleRecursiveElementDeclaration of this schema.
+ * //
+ * {@link XSDElementDeclaration} simpleRecursiveElementDeclarationReference = xsdFactory.createXSDElementDeclaration();
+ * simpleRecursiveElementDeclarationReference.{@link XSDElementDeclaration#setResolvedElementDeclaration setResolvedElementDeclaration}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveElementDeclaration(String) resolveElementDeclaration}("simpleRecursiveElementDeclaration"));
+ *
+ * // Create a particle to hold the element and set it to be optional and unbounded.
+ * //
+ * {@link XSDParticle} simpleRecursiveElementParticle = xsdFactory.createXSDParticle();
+ * simpleRecursiveElementParticle.{@link XSDParticle#setContent setContent}(simpleRecursiveElementDeclarationReference);
+ * simpleRecursiveElementParticle.{@link XSDParticle#setMinOccurs(int) setMinOccurs}(0);
+ * simpleRecursiveElementParticle.{@link XSDParticle#setMaxOccurs(int) setMaxOccurs}(-1);
+ *
+ * // Add the element particle to the model group.
+ * //
+ * modelGroup.{@link XSDModelGroup#getContents getContents}().add(simpleRecursiveElementParticle);
+ *
+ * // Create an element wildcard, set the namespace constraint to be other, and the processing to be lax.
+ * //
+ * {@link XSDWildcard} elementWildcard = xsdFactory.createXSDWildcard();
+ * elementWildcard.{@link XSDWildcard#getLexicalNamespaceConstraint getLexicalNamespaceConstraint}().add("##other");
+ * elementWildcard.{@link XSDWildcard#setProcessContents setProcessContents}(XSDProcessContents.LAX_LITERAL);
+ *
+ * // Create a particle to hold the wildcard.
+ * //
+ * XSDParticle wildcardParticle = xsdFactory.createXSDParticle();
+ * wildcardParticle.setContent(elementWildcard);
+ *
+ * // Add the wildcard particle to the model group.
+ * //
+ * modelGroup.getContents().add(wildcardParticle);
+ *
+ * // Set the model group to be that of the simpleRecursiveModelGroupDefinition.
+ * //
+ * simpleRecursiveModelGroupDefinition.{@link XSDModelGroupDefinition#setModelGroup setModelGroup}(modelGroup);
+ *
+ * // Add simpleRecursiveModelGroupDefinition to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleRecursiveModelGroupDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:group name="simpleRecursiveModelGroupDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:sequence></b>
+ * //<b> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="PTS:simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:any namespace="##other" processContents="lax"/></b>
+ * //<b> </xsd:sequence></b>
+ * //<b> </xsd:group></b>
+ *}
+ *<!-- insert-end-initialize-simple-recursive-model-group-definition -->
+ *</pre>
+ */
+ public void initializeSimpleRecursiveModelGroupDefinition()
+ // <!-- begin-initialize-simple-recursive-model-group-definition -->
+ {
+ // Create a model group definition and name it simpleRecursiveModelGroupDefinition.
+ //
+ /*{@link */XSDModelGroupDefinition/*}*/ simpleRecursiveModelGroupDefinition = xsdFactory.createXSDModelGroupDefinition();
+ simpleRecursiveModelGroupDefinition./*{@link XSDNamedComponent#setName */setName/*}*/("simpleRecursiveModelGroupDefinition");
+
+ // Create an annotation placeholder and add it to the model group definition.
+ //
+ XSDAnnotation annotation = xsdFactory.createXSDAnnotation();
+ simpleRecursiveModelGroupDefinition.setAnnotation(annotation);
+
+ // Create a sequence model group.
+ //
+ /*{@link */XSDModelGroup/*}*/ modelGroup = xsdFactory.createXSDModelGroup();
+ modelGroup./*{@link XSDModelGroup#setCompositor(XSDCompositor) */setCompositor/*}*/(XSDCompositor.SEQUENCE_LITERAL);
+
+ // Create an element reference to the simpleRecursiveElementDeclaration of this schema.
+ //
+ /*{@link */XSDElementDeclaration/*}*/ simpleRecursiveElementDeclarationReference = xsdFactory.createXSDElementDeclaration();
+ simpleRecursiveElementDeclarationReference./*{@link XSDElementDeclaration#setResolvedElementDeclaration */setResolvedElementDeclaration/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveElementDeclaration(String) */resolveElementDeclaration/*}*/("simpleRecursiveElementDeclaration"));
+
+ // Create a particle to hold the element and set it to be optional and unbounded.
+ //
+ /*{@link */XSDParticle/*}*/ simpleRecursiveElementParticle = xsdFactory.createXSDParticle();
+ simpleRecursiveElementParticle./*{@link XSDParticle#setContent */setContent/*}*/(simpleRecursiveElementDeclarationReference);
+ simpleRecursiveElementParticle./*{@link XSDParticle#setMinOccurs(int) */setMinOccurs/*}*/(0);
+ simpleRecursiveElementParticle./*{@link XSDParticle#setMaxOccurs(int) */setMaxOccurs/*}*/(-1);
+
+ // Add the element particle to the model group.
+ //
+ modelGroup./*{@link XSDModelGroup#getContents */getContents/*}*/().add(simpleRecursiveElementParticle);
+
+ // Create an element wildcard, set the namespace constraint to be other, and the processing to be lax.
+ //
+ /*{@link */XSDWildcard/*}*/ elementWildcard = xsdFactory.createXSDWildcard();
+ elementWildcard./*{@link XSDWildcard#getLexicalNamespaceConstraint */getLexicalNamespaceConstraint/*}*/().add("##other");
+ elementWildcard./*{@link XSDWildcard#setProcessContents */setProcessContents/*}*/(XSDProcessContents.LAX_LITERAL);
+
+ // Create a particle to hold the wildcard.
+ //
+ XSDParticle wildcardParticle = xsdFactory.createXSDParticle();
+ wildcardParticle.setContent(elementWildcard);
+
+ // Add the wildcard particle to the model group.
+ //
+ modelGroup.getContents().add(wildcardParticle);
+
+ // Set the model group to be that of the simpleRecursiveModelGroupDefinition.
+ //
+ simpleRecursiveModelGroupDefinition./*{@link XSDModelGroupDefinition#setModelGroup */setModelGroup/*}*/(modelGroup);
+
+ // Add simpleRecursiveModelGroupDefinition to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleRecursiveModelGroupDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:group name="simpleRecursiveModelGroupDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:sequence>
+ /// <xsd:element maxOccurs="unbounded" minOccurs="0" ref="PTS:simpleRecursiveElementDeclaration"/>
+ /// <xsd:any namespace="##other" processContents="lax"/>
+ /// </xsd:sequence>
+ /// </xsd:group>
+ }
+ // <!-- end-initialize-simple-recursive-model-group-definition -->
+
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-recursive-complex-type-definition -->
+ *{
+ * // Create a complex type definition and set its name to SimpleRecursiveComplexTypeDefinition.
+ * // Set the complex type to be abstract, block all substitution, make it final in all regards,
+ * // set it to be a restriction, and set it's content type to be mixed.
+ * //
+ * {@link XSDComplexTypeDefinition} simpleRecursiveComplexTypeDefinition = xsdFactory.createXSDComplexTypeDefinition();
+ * simpleRecursiveComplexTypeDefinition.{@link org.eclipse.xsd.XSDNamedComponent#getName setName}("SimpleRecursiveComplexTypeDefinition");
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#setAbstract setAbstract}(false);
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#getBlock getBlock}().add({@link XSDProhibitedSubstitutions}.ALL_LITERAL);
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#getLexicalFinal getLexicalFinal}().add({@link XSDComplexFinal}.ALL_LITERAL);
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#setDerivationMethod setDerivationMethod}({@link XSDDerivationMethod}.RESTRICTION_LITERAL);
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#setMixed setMixed}(true);
+ *
+ * // Create an annotation placeholder and add it to the complex type
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#setAnnotation setAnnotation}(annotation);
+ *
+ * // Create a model group definition reference to simpleRecursiveModelGroupDefinition.
+ * // Also create particle to hold it and set the particle to be the content of the complex type.
+ * //
+ * {@link XSDModelGroupDefinition} simpleRecursiveModelGroupDefinitionReference = xsdFactory.createXSDModelGroupDefinition();
+ * simpleRecursiveModelGroupDefinitionReference.{@link XSDModelGroupDefinition#setResolvedModelGroupDefinition setResolvedModelGroupDefinition}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveModelGroupDefinition(String) resolveModelGroupDefinition}("simpleRecursiveModelGroupDefinition"));
+ * {@link XSDParticle} modelGroupParticle = xsdFactory.createXSDParticle();
+ * modelGroupParticle.{@link XSDParticle#setContent setContent}(simpleRecursiveModelGroupDefinitionReference);
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#setContent setContent}(modelGroupParticle);
+ *
+ * // Create an attribute reference to simpleAttributeDeclaration.
+ * // Also create an attribute use to hold it, set the use to be optional,
+ * // and add it to the complex type's attribute contents.
+ * //
+ * {@link XSDAttributeDeclaration} simpleAttributeDeclarationReference = xsdFactory.createXSDAttributeDeclaration();
+ * simpleAttributeDeclarationReference.{@link XSDAttributeDeclaration#setResolvedAttributeDeclaration setResolvedAttributeDeclaration}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveAttributeDeclaration resolveAttributeDeclaration}("simpleAttributeDeclaration"));
+ * {@link XSDAttributeUse} simpleAttributeUse = xsdFactory.createXSDAttributeUse();
+ * simpleAttributeUse.{@link XSDAttributeUse#setContent setContent}(simpleAttributeDeclarationReference);
+ * simpleAttributeUse.{@link XSDAttributeUse#setUse setUse}({@link XSDAttributeUseCategory}.OPTIONAL_LITERAL);
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#getAttributeContents getAttributeContents}().add(simpleAttributeUse);
+ *
+ * // Create an attribute group reference to simpleAttributeGroupDefinition.
+ * // And add it to the complex type's attribute contents.
+ * //
+ * {@link XSDAttributeGroupDefinition} simpleAttributeGroupDefinitionReference = xsdFactory.createXSDAttributeGroupDefinition();
+ * simpleAttributeGroupDefinitionReference.{@link XSDAttributeGroupDefinition#setResolvedAttributeGroupDefinition setResolvedAttributeGroupDefinition}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveAttributeGroupDefinition(String) resolveAttributeGroupDefinition}("simpleAttributeGroupDefinition"));
+ * simpleRecursiveComplexTypeDefinition.getAttributeContents().add(simpleAttributeGroupDefinitionReference);
+ *
+ * // Create an attribute wildcard and set its constraint to other.
+ * // Also add it as the complex type's attribute wildcard.
+ * //
+ * {@link XSDWildcard} attributeWildcard = xsdFactory.createXSDWildcard();
+ * attributeWildcard.{@link XSDWildcard#getLexicalNamespaceConstraint getLexicalNamespaceConstraint}().add("##other");
+ * simpleRecursiveComplexTypeDefinition.{@link XSDComplexTypeDefinition#getAttributeWildcardContent setAttributeWildcardContent}(attributeWildcard);
+ *
+ * prototypeSchema.getContents().add(simpleRecursiveComplexTypeDefinition);
+ *
+ * // Create an appinfo DOM element with the given sourceURI attribute.
+ * // Also add the element as the annotation's child.
+ * // <b>NOTE</b>
+ * // Working with the contents of an annotation requires dropping down into the DOM model.
+ * // This imposes the additional requirement that the annotation must be {@link XSDSchema#getSchema attached} to a schema.
+ * // It also has the effect of calling {@link XSDSchema#updateElement()},
+ * // if the schema does not have an {@link XSDConcreteComponent#getElement element} or {@link XSDSchema#getDocument document} yet.
+ * //
+ * {@link Element <em>Element</em>} appinfo = annotation.{@link XSDAnnotation#createApplicationInformation createApplicationInformation}("http://www.example.com/appinfo");
+ * annotation.{@link XSDConcreteComponent#getElement getElement}().{@link org.w3c.dom.Node#appendChild <em>appendChild</em>}(appinfo);
+ *
+ * // Create a documentation DOM element with the given sourceURI attribute.
+ * // Also add the element as the annotation's child.
+ * //
+ * Element documentation = annotation.{@link XSDAnnotation#createUserInformation createUserInformation}("http://www.example.com/documentation");
+ * annotation.getElement().appendChild(documentation);
+ * documentation.{@link org.w3c.dom.Node#appendChild <em>appendChild</em>}
+ * (documentation.getOwnerDocument().createTextNode
+ * ("A simple recursive complex type definition."));
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:complexType abstract="false" block="#all" final="#all"</b>
+ * //<b> mixed="true" name="SimpleRecursiveComplexTypeDefinition"></b>
+ * //<b> <xsd:annotation></b>
+ * //<b> <xsd:appinfo source="http://www.example.com/appinfo"/></b>
+ * //<b> <xsd:documentation</b>
+ * //<b> source="http://www.example.com/documentation">A simple</b>
+ * //<b> recursive complex type definition.</xsd:documentation></b>
+ * //<b> </xsd:annotation></b>
+ * //<b> <xsd:group ref="PTS:simpleRecursiveModelGroupDefinition"/></b>
+ * //<b> <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/></b>
+ * //<b> <xsd:attributeGroup ref="PTS:simpleAttributeGroupDefinition"/></b>
+ * //<b> <xsd:anyAttribute namespace="##other"/></b>
+ * //<b> </xsd:complexType></b>
+ *}
+ *<!-- insert-end-initialize-simple-recursive-complex-type-definition -->
+ *</pre>
+ */
+ public void initializeSimpleRecursiveComplexTypeDefinition()
+ // <!-- begin-initialize-simple-recursive-complex-type-definition -->
+ {
+ // Create a complex type definition and set its name to SimpleRecursiveComplexTypeDefinition.
+ // Set the complex type to be abstract, block all substitution, make it final in all regards,
+ // set it to be a restriction, and set it's content type to be mixed.
+ //
+ /*{@link */XSDComplexTypeDefinition/*}*/ simpleRecursiveComplexTypeDefinition = xsdFactory.createXSDComplexTypeDefinition();
+ simpleRecursiveComplexTypeDefinition./*{@link XSDNamedComponent#getName */setName/*}*/("SimpleRecursiveComplexTypeDefinition");
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setAbstract */setAbstract/*}*/(false);
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#getBlock */getBlock/*}*/().add(/*{@link */XSDProhibitedSubstitutions/*}*/.ALL_LITERAL);
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#getLexicalFinal */getLexicalFinal/*}*/().add(/*{@link */XSDComplexFinal/*}*/.ALL_LITERAL);
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setDerivationMethod */setDerivationMethod/*}*/(/*{@link */XSDDerivationMethod/*}*/.RESTRICTION_LITERAL);
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setMixed */setMixed/*}*/(true);
+
+ // Create an annotation placeholder and add it to the complex type
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Create a model group definition reference to simpleRecursiveModelGroupDefinition.
+ // Also create particle to hold it and set the particle to be the content of the complex type.
+ //
+ /*{@link */XSDModelGroupDefinition/*}*/ simpleRecursiveModelGroupDefinitionReference = xsdFactory.createXSDModelGroupDefinition();
+ simpleRecursiveModelGroupDefinitionReference./*{@link XSDModelGroupDefinition#setResolvedModelGroupDefinition */setResolvedModelGroupDefinition/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveModelGroupDefinition(String) */resolveModelGroupDefinition/*}*/("simpleRecursiveModelGroupDefinition"));
+ /*{@link */XSDParticle/*}*/ modelGroupParticle = xsdFactory.createXSDParticle();
+ modelGroupParticle./*{@link XSDParticle#setContent */setContent/*}*/(simpleRecursiveModelGroupDefinitionReference);
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setContent */setContent/*}*/(modelGroupParticle);
+
+ // Create an attribute reference to simpleAttributeDeclaration.
+ // Also create an attribute use to hold it, set the use to be optional,
+ // and add it to the complex type's attribute contents.
+ //
+ /*{@link */XSDAttributeDeclaration/*}*/ simpleAttributeDeclarationReference = xsdFactory.createXSDAttributeDeclaration();
+ simpleAttributeDeclarationReference./*{@link XSDAttributeDeclaration#setResolvedAttributeDeclaration */setResolvedAttributeDeclaration/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveAttributeDeclaration */resolveAttributeDeclaration/*}*/("simpleAttributeDeclaration"));
+ /*{@link */XSDAttributeUse/*}*/ simpleAttributeUse = xsdFactory.createXSDAttributeUse();
+ simpleAttributeUse./*{@link XSDAttributeUse#setContent */setContent/*}*/(simpleAttributeDeclarationReference);
+ simpleAttributeUse./*{@link XSDAttributeUse#setUse */setUse/*}*/(/*{@link */XSDAttributeUseCategory/*}*/.OPTIONAL_LITERAL);
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#getAttributeContents */getAttributeContents/*}*/().add(simpleAttributeUse);
+
+ // Create an attribute group reference to simpleAttributeGroupDefinition.
+ // And add it to the complex type's attribute contents.
+ //
+ /*{@link */XSDAttributeGroupDefinition/*}*/ simpleAttributeGroupDefinitionReference = xsdFactory.createXSDAttributeGroupDefinition();
+ simpleAttributeGroupDefinitionReference./*{@link XSDAttributeGroupDefinition#setResolvedAttributeGroupDefinition */setResolvedAttributeGroupDefinition/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveAttributeGroupDefinition(String) */resolveAttributeGroupDefinition/*}*/("simpleAttributeGroupDefinition"));
+ simpleRecursiveComplexTypeDefinition.getAttributeContents().add(simpleAttributeGroupDefinitionReference);
+
+ // Create an attribute wildcard and set its constraint to other.
+ // Also add it as the complex type's attribute wildcard.
+ //
+ /*{@link */XSDWildcard/*}*/ attributeWildcard = xsdFactory.createXSDWildcard();
+ attributeWildcard./*{@link XSDWildcard#getLexicalNamespaceConstraint */getLexicalNamespaceConstraint/*}*/().add("##other");
+ simpleRecursiveComplexTypeDefinition./*{@link XSDComplexTypeDefinition#getAttributeWildcardContent */setAttributeWildcardContent/*}*/(attributeWildcard);
+
+ prototypeSchema.getContents().add(simpleRecursiveComplexTypeDefinition);
+
+ // Create an appinfo DOM element with the given sourceURI attribute.
+ // Also add the element as the annotation's child.
+ // <b>NOTE</b>
+ // Working with the contents of an annotation requires dropping down into the DOM model.
+ // This imposes the additional requirement that the annotation must be {@link XSDSchema#getSchema attached} to a schema.
+ // It also has the effect of calling {@link XSDSchema#updateElement()},
+ // if the schema does not have an {@link XSDConcreteComponent#getElement element} or {@link XSDSchema#getDocument document} yet.
+ //
+ /*{@link */Element/* <em>Element</em>}*/ appinfo = annotation./*{@link XSDAnnotation#createApplicationInformation */createApplicationInformation/*}*/("http://www.example.com/appinfo");
+ annotation./*{@link XSDConcreteComponent#getElement */getElement/*}*/()./*{@link Element#appendChild <em>*/appendChild/*</em>}*/(appinfo);
+
+ // Create a documentation DOM element with the given sourceURI attribute.
+ // Also add the element as the annotation's child.
+ //
+ Element documentation = annotation./*{@link XSDAnnotation#createUserInformation */createUserInformation/*}*/("http://www.example.com/documentation");
+ annotation.getElement().appendChild(documentation);
+ documentation./*{@link Element#appendChild <em>*/appendChild/*</em>}*/
+ (documentation.getOwnerDocument().createTextNode
+ ("A simple recursive complex type definition."));
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:complexType abstract="false" block="#all" final="#all"
+ /// mixed="true" name="SimpleRecursiveComplexTypeDefinition">
+ /// <xsd:annotation>
+ /// <xsd:appinfo source="http://www.example.com/appinfo"/>
+ /// <xsd:documentation
+ /// source="http://www.example.com/documentation">A simple
+ /// recursive complex type definition.</xsd:documentation>
+ /// </xsd:annotation>
+ /// <xsd:group ref="PTS:simpleRecursiveModelGroupDefinition"/>
+ /// <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/>
+ /// <xsd:attributeGroup ref="PTS:simpleAttributeGroupDefinition"/>
+ /// <xsd:anyAttribute namespace="##other"/>
+ /// </xsd:complexType>
+ }
+ // <!-- end-initialize-simple-recursive-complex-type-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-recursive-element-declaration -->
+ *{
+ * // Create an element declaration and name it simpleRecursiveElementDeclaration.
+ * //
+ * {@link XSDElementDeclaration} simpleRecursiveElementDeclaration = xsdFactory.createXSDElementDeclaration();
+ * simpleRecursiveElementDeclaration.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("simpleRecursiveElementDeclaration");
+ *
+ * // Create an annotation placeholder and set it to the element.
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleRecursiveElementDeclaration.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ *
+ * // Set the element type definition to complex SimpleRecursiveComplexTypeDefinition from this schema.
+ * //
+ * simpleRecursiveElementDeclaration.{@link XSDElementDeclaration#setTypeDefinition setTypeDefinition}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveComplexTypeDefinition(String) resolveComplexTypeDefinition}("SimpleRecursiveComplexTypeDefinition"));
+ *
+ * // Create a unique identity constraint called unique.
+ * //
+ * XSDIdentityConstraintDefinition unique = xsdFactory.{@link XSDFactory#createXSDIdentityConstraintDefinition createXSDIdentityConstraintDefinition}();
+ * unique.{@link XSDIdentityConstraintDefinition#setIdentityConstraintCategory setIdentityConstraintCategory}({@link XSDIdentityConstraintCategory}.UNIQUE_LITERAL);
+ * unique.setName("unique");
+ * XSDXPathDefinition uniqueSelector = xsdFactory.{@link XSDFactory#createXSDXPathDefinition createXSDXPathDefinition}();
+ * uniqueSelector.{@link XSDXPathDefinition#setVariety setVariety}({@link XSDXPathVariety}.SELECTOR_LITERAL);
+ * uniqueSelector.{@link XSDXPathDefinition#setValue setValue}("simpleRecursiveElementDeclaration");
+ * unique.{@link XSDIdentityConstraintDefinition#setSelector setSelector}(uniqueSelector);
+ * XSDXPathDefinition uniqueField = xsdFactory.createXSDXPathDefinition();
+ * uniqueField.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ * uniqueField.setValue("simpleAttributeDeclarationGroupMember");
+ * unique.{@link XSDIdentityConstraintDefinition#getFields getFields}().add(uniqueField);
+ * simpleRecursiveElementDeclaration.{@link XSDElementDeclaration#getIdentityConstraintDefinitions getIdentityConstraintDefinitions}().add(unique);
+ *
+ * // Create a key identity constraint called key.
+ * //
+ * XSDIdentityConstraintDefinition key = xsdFactory.createXSDIdentityConstraintDefinition();
+ * key.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEY_LITERAL);
+ * key.setName("key");
+ * XSDXPathDefinition keySelector = xsdFactory.createXSDXPathDefinition();
+ * keySelector.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
+ * keySelector.setValue("simpleRecursiveElementDeclaration");
+ * key.setSelector(keySelector);
+ * XSDXPathDefinition keyField = xsdFactory.createXSDXPathDefinition();
+ * keyField.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ * keyField.setValue("simpleAttributeDeclarationGroupMember");
+ * key.getFields().add(keyField);
+ * simpleRecursiveElementDeclaration.getIdentityConstraintDefinitions().add(key);
+ *
+ * // Create a keyref identity constraint called keyref that references key.
+ * //
+ * XSDIdentityConstraintDefinition keyref = xsdFactory.createXSDIdentityConstraintDefinition();
+ * keyref.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEYREF_LITERAL);
+ * keyref.setName("keyref");
+ * XSDXPathDefinition keyrefSelector = xsdFactory.createXSDXPathDefinition();
+ * keyrefSelector.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
+ * keyrefSelector.setValue("simpleRecursiveElementDeclaration");
+ * keyref.setSelector(keyrefSelector);
+ * XSDXPathDefinition keyrefField = xsdFactory.createXSDXPathDefinition();
+ * keyrefField.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ * keyrefField.setValue("simpleAttributeDeclaration");
+ * keyref.{@link XSDIdentityConstraintDefinition#setReferencedKey setReferencedKey}(key);
+ * keyref.getFields().add(keyrefField);
+ * simpleRecursiveElementDeclaration.getIdentityConstraintDefinitions().add(keyref);
+ *
+ * // Add the element to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleRecursiveElementDeclaration);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:element name="simpleRecursiveElementDeclaration" type="PTS:SimpleRecursiveComplexTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:unique name="unique"></b>
+ * //<b> <xsd:selector xpath="simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:field xpath="simpleAttributeDeclarationGroupMember"/></b>
+ * //<b> </xsd:unique></b>
+ * //<b> <xsd:key name="key"></b>
+ * //<b> <xsd:selector xpath="simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:field xpath="simpleAttributeDeclarationGroupMember"/></b>
+ * //<b> </xsd:key></b>
+ * //<b> <xsd:keyref name="keyref" refer="PTS:key"></b>
+ * //<b> <xsd:selector xpath="simpleRecursiveElementDeclaration"/></b>
+ * //<b> <xsd:field xpath="simpleAttributeDeclaration"/></b>
+ * //<b> </xsd:keyref></b>
+ * //<b> </xsd:element></b>
+ *}
+ *<!-- insert-end-initialize-simple-recursive-element-declaration -->
+ *</pre>
+ */
+ public void initializeSimpleRecursiveElementDeclaration()
+ // <!-- begin-initialize-simple-recursive-element-declaration -->
+ {
+ // Create an element declaration and name it simpleRecursiveElementDeclaration.
+ //
+ /*{@link */XSDElementDeclaration/*}*/ simpleRecursiveElementDeclaration = xsdFactory.createXSDElementDeclaration();
+ simpleRecursiveElementDeclaration./*{@link XSDNamedComponent#setName */setName/*}*/("simpleRecursiveElementDeclaration");
+
+ // Create an annotation placeholder and set it to the element.
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleRecursiveElementDeclaration./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Set the element type definition to complex SimpleRecursiveComplexTypeDefinition from this schema.
+ //
+ simpleRecursiveElementDeclaration./*{@link XSDElementDeclaration#setTypeDefinition */setTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveComplexTypeDefinition(String) */resolveComplexTypeDefinition/*}*/("SimpleRecursiveComplexTypeDefinition"));
+
+ // Create a unique identity constraint called unique.
+ //
+ XSDIdentityConstraintDefinition unique = xsdFactory./*{@link XSDFactory#createXSDIdentityConstraintDefinition */createXSDIdentityConstraintDefinition/*}*/();
+ unique./*{@link XSDIdentityConstraintDefinition#setIdentityConstraintCategory */setIdentityConstraintCategory/*}*/(/*{@link */XSDIdentityConstraintCategory/*}*/.UNIQUE_LITERAL);
+ unique.setName("unique");
+ XSDXPathDefinition uniqueSelector = xsdFactory./*{@link XSDFactory#createXSDXPathDefinition */createXSDXPathDefinition/*}*/();
+ uniqueSelector./*{@link XSDXPathDefinition#setVariety */setVariety/*}*/(/*{@link */XSDXPathVariety/*}*/.SELECTOR_LITERAL);
+ uniqueSelector./*{@link XSDXPathDefinition#setValue */setValue/*}*/("simpleRecursiveElementDeclaration");
+ unique./*{@link XSDIdentityConstraintDefinition#setSelector */setSelector/*}*/(uniqueSelector);
+ XSDXPathDefinition uniqueField = xsdFactory.createXSDXPathDefinition();
+ uniqueField.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ uniqueField.setValue("simpleAttributeDeclarationGroupMember");
+ unique./*{@link XSDIdentityConstraintDefinition#getFields */getFields/*}*/().add(uniqueField);
+ simpleRecursiveElementDeclaration./*{@link XSDElementDeclaration#getIdentityConstraintDefinitions */getIdentityConstraintDefinitions/*}*/().add(unique);
+
+ // Create a key identity constraint called key.
+ //
+ XSDIdentityConstraintDefinition key = xsdFactory.createXSDIdentityConstraintDefinition();
+ key.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEY_LITERAL);
+ key.setName("key");
+ XSDXPathDefinition keySelector = xsdFactory.createXSDXPathDefinition();
+ keySelector.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
+ keySelector.setValue("simpleRecursiveElementDeclaration");
+ key.setSelector(keySelector);
+ XSDXPathDefinition keyField = xsdFactory.createXSDXPathDefinition();
+ keyField.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ keyField.setValue("simpleAttributeDeclarationGroupMember");
+ key.getFields().add(keyField);
+ simpleRecursiveElementDeclaration.getIdentityConstraintDefinitions().add(key);
+
+ // Create a keyref identity constraint called keyref that references key.
+ //
+ XSDIdentityConstraintDefinition keyref = xsdFactory.createXSDIdentityConstraintDefinition();
+ keyref.setIdentityConstraintCategory(XSDIdentityConstraintCategory.KEYREF_LITERAL);
+ keyref.setName("keyref");
+ XSDXPathDefinition keyrefSelector = xsdFactory.createXSDXPathDefinition();
+ keyrefSelector.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
+ keyrefSelector.setValue("simpleRecursiveElementDeclaration");
+ keyref.setSelector(keyrefSelector);
+ XSDXPathDefinition keyrefField = xsdFactory.createXSDXPathDefinition();
+ keyrefField.setVariety(XSDXPathVariety.FIELD_LITERAL);
+ keyrefField.setValue("simpleAttributeDeclaration");
+ keyref./*{@link XSDIdentityConstraintDefinition#setReferencedKey */setReferencedKey/*}*/(key);
+ keyref.getFields().add(keyrefField);
+ simpleRecursiveElementDeclaration.getIdentityConstraintDefinitions().add(keyref);
+
+ // Add the element to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleRecursiveElementDeclaration);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:element name="simpleRecursiveElementDeclaration" type="PTS:SimpleRecursiveComplexTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:unique name="unique">
+ /// <xsd:selector xpath="simpleRecursiveElementDeclaration"/>
+ /// <xsd:field xpath="simpleAttributeDeclarationGroupMember"/>
+ /// </xsd:unique>
+ /// <xsd:key name="key">
+ /// <xsd:selector xpath="simpleRecursiveElementDeclaration"/>
+ /// <xsd:field xpath="simpleAttributeDeclarationGroupMember"/>
+ /// </xsd:key>
+ /// <xsd:keyref name="keyref" refer="PTS:key">
+ /// <xsd:selector xpath="simpleRecursiveElementDeclaration"/>
+ /// <xsd:field xpath="simpleAttributeDeclaration"/>
+ /// </xsd:keyref>
+ /// </xsd:element>
+ }
+ // <!-- end-initialize-simple-recursive-element-declaration -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-attribute-declaration -->
+ *{
+ * // Create an attribute declaration and set it's name to simpleAttributeDeclaration.
+ * // Set it's type definition to be someOtherTypeDefinition in someOtherSchemaURI,
+ * // and set the default constraint to "defaultValue".
+ * //
+ * {@link XSDAttributeDeclaration} simpleAttributeDeclaration = xsdFactory.createXSDAttributeDeclaration();
+ * simpleAttributeDeclaration.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("simpleAttributeDeclaration");
+ * simpleAttributeDeclaration.{@link XSDAttributeDeclaration#setTypeDefinition setTypeDefinition}
+ * (prototypeSchema.resolveSimpleTypeDefinition({@link #someOtherSchemaURI}, "someOtherTypeDefinition"));
+ * simpleAttributeDeclaration.{@link XSDAttributeDeclaration#setConstraint setConstraint}({@link XSDConstraint}.DEFAULT_LITERAL);
+ * simpleAttributeDeclaration.{@link XSDAttributeDeclaration#setLexicalValue setLexicalValue}("defaultValue");
+ *
+ * // Add the attribute to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleAttributeDeclaration);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:attribute default="defaultValue"</b>
+ * //<b> name="simpleAttributeDeclaration" type="EXT:someOtherTypeDefinition"/></b>
+ *}
+ *<!-- insert-end-initialize-simple-attribute-declaration -->
+ *</pre>
+ */
+ public void initializeSimpleAttributeDeclaration()
+ // <!-- begin-initialize-simple-attribute-declaration -->
+ {
+ // Create an attribute declaration and set it's name to simpleAttributeDeclaration.
+ // Set it's type definition to be someOtherTypeDefinition in someOtherSchemaURI,
+ // and set the default constraint to "defaultValue".
+ //
+ /*{@link */XSDAttributeDeclaration/*}*/ simpleAttributeDeclaration = xsdFactory.createXSDAttributeDeclaration();
+ simpleAttributeDeclaration./*{@link XSDNamedComponent#setName */setName/*}*/("simpleAttributeDeclaration");
+ simpleAttributeDeclaration./*{@link XSDAttributeDeclaration#setTypeDefinition */setTypeDefinition/*}*/
+ (prototypeSchema.resolveSimpleTypeDefinition(/*{@link #*/someOtherSchemaURI/*}*/, "someOtherTypeDefinition"));
+ simpleAttributeDeclaration./*{@link XSDAttributeDeclaration#setConstraint */setConstraint/*}*/(/*{@link */XSDConstraint/*}*/.DEFAULT_LITERAL);
+ simpleAttributeDeclaration./*{@link XSDAttributeDeclaration#setLexicalValue */setLexicalValue/*}*/("defaultValue");
+
+ // Add the attribute to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleAttributeDeclaration);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:attribute default="defaultValue"
+ /// name="simpleAttributeDeclaration" type="EXT:someOtherTypeDefinition"/>
+ }
+ // <!-- end-initialize-simple-attribute-declaration -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-element-declaration-with-anonymous-type -->
+ *{
+ * // Create an element declaration and set it's name to simpleElementWithAnonymousType.
+ * //
+ * {@link XSDElementDeclaration} simpleElementDeclarationWithAnonymousType = xsdFactory.createXSDElementDeclaration();
+ * simpleElementDeclarationWithAnonymousType.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("simpleElementWithAnonymousType");
+ *
+ * // Create an annotation placeholder and add it to the element.
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleElementDeclarationWithAnonymousType.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ *
+ * // Create an anonymous simple type definition and set it's base type to the built-in string.
+ * //
+ * {@link XSDSimpleTypeDefinition} anonymousSimpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * anonymousSimpleTypeDefinition.{@link XSDSimpleTypeDefinition#setBaseTypeDefinition setBaseTypeDefinition}
+ * (prototypeSchema.{@link XSDSchema#getSchemaForSchema getSchemaForSchema}().{@link XSDConcreteComponent#resolveSimpleTypeDefinition resolveSimpleTypeDefinition}("string"));
+ *
+ * // Create pattern facet.
+ * // Set it to match two digits followed by any two characters.
+ * // And add it to the anonymous type.
+ * //
+ * {@link XSDPatternFacet} xsdPatternFacet = xsdFactory.createXSDPatternFacet();
+ * xsdPatternFacet.{@link XSDPatternFacet#setLexicalValue setLexicalValue}("\\d\\d..");
+ * anonymousSimpleTypeDefinition.{@link XSDSimpleTypeDefinition#getFacetContents getFacetContents}().add(xsdPatternFacet);
+ *
+ * // Set the element's annotation and anonymous type,
+ * // and set the fixed constraint to "12ab".
+ * //
+ * simpleElementDeclarationWithAnonymousType.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ * simpleElementDeclarationWithAnonymousType.{@link XSDElementDeclaration#setAnonymousTypeDefinition setAnonymousTypeDefinition}(anonymousSimpleTypeDefinition);
+ * simpleElementDeclarationWithAnonymousType.{@link XSDElementDeclaration#setConstraint setConstraint}({@link XSDConstraint}.FIXED_LITERAL);
+ * simpleElementDeclarationWithAnonymousType.{@link XSDElementDeclaration#setLexicalValue setLexicalValue}("12ab");
+ *
+ * // Add the element to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleElementDeclarationWithAnonymousType);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:element fixed="12ab" name="simpleElementWithAnonymousType"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:string"></b>
+ * //<b> <xsd:pattern value="\d\d.."/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:element></b>
+ *}
+ *<!-- insert-end-initialize-simple-element-declaration-with-anonymous-type -->
+ *</pre>
+ */
+ public void initializeSimpleElementDeclarationWithAnonymousType()
+ // <!-- begin-initialize-simple-element-declaration-with-anonymous-type -->
+ {
+ // Create an element declaration and set it's name to simpleElementWithAnonymousType.
+ //
+ /*{@link */XSDElementDeclaration/*}*/ simpleElementDeclarationWithAnonymousType = xsdFactory.createXSDElementDeclaration();
+ simpleElementDeclarationWithAnonymousType./*{@link XSDNamedComponent#setName */setName/*}*/("simpleElementWithAnonymousType");
+
+ // Create an annotation placeholder and add it to the element.
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleElementDeclarationWithAnonymousType./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Create an anonymous simple type definition and set it's base type to the built-in string.
+ //
+ /*{@link */XSDSimpleTypeDefinition/*}*/ anonymousSimpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ anonymousSimpleTypeDefinition./*{@link XSDSimpleTypeDefinition#setBaseTypeDefinition */setBaseTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDSchema#getSchemaForSchema */getSchemaForSchema/*}*/()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition */resolveSimpleTypeDefinition/*}*/("string"));
+
+ // Create pattern facet.
+ // Set it to match two digits followed by any two characters.
+ // And add it to the anonymous type.
+ //
+ /*{@link */XSDPatternFacet/*}*/ xsdPatternFacet = xsdFactory.createXSDPatternFacet();
+ xsdPatternFacet./*{@link XSDPatternFacet#setLexicalValue */setLexicalValue/*}*/("\\d\\d..");
+ anonymousSimpleTypeDefinition./*{@link XSDSimpleTypeDefinition#getFacetContents */getFacetContents/*}*/().add(xsdPatternFacet);
+
+ // Set the element's annotation and anonymous type,
+ // and set the fixed constraint to "12ab".
+ //
+ simpleElementDeclarationWithAnonymousType./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+ simpleElementDeclarationWithAnonymousType./*{@link XSDElementDeclaration#setAnonymousTypeDefinition */setAnonymousTypeDefinition/*}*/(anonymousSimpleTypeDefinition);
+ simpleElementDeclarationWithAnonymousType./*{@link XSDElementDeclaration#setConstraint */setConstraint/*}*/(/*{@link */XSDConstraint/*}*/.FIXED_LITERAL);
+ simpleElementDeclarationWithAnonymousType./*{@link XSDElementDeclaration#setLexicalValue */setLexicalValue/*}*/("12ab");
+
+ // Add the element to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleElementDeclarationWithAnonymousType);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:element fixed="12ab" name="simpleElementWithAnonymousType">
+ /// <xsd:annotation/>
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:string">
+ /// <xsd:pattern value="\d\d.."/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// </xsd:element>
+ }
+ // <!-- end-initialize-simple-element-declaration-with-anonymous-type -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-type-definition -->
+ *{
+ * // Create a simple type definition and set it's name to SimpleTypeDefinition.
+ * // Also set it's base type to be the built-in positiveInteger.
+ * //
+ * {@link XSDSimpleTypeDefinition} simpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * simpleTypeDefinition.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("SimpleTypeDefinition");
+ * simpleTypeDefinition.{@link XSDSimpleTypeDefinition#setBaseTypeDefinition setBaseTypeDefinition}
+ * (prototypeSchema.{@link XSDSchema#getSchemaForSchema getSchemaForSchema}().{@link XSDConcreteComponent#resolveSimpleTypeDefinition resolveSimpleTypeDefinition}("positiveInteger"));
+ *
+ * // Create an annotation placeholder and add it to the type.
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleTypeDefinition.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ *
+ * // Create max inclusive facet, set it to 100, and add it to the simple type's facet contents.
+ * //
+ * {@link XSDMaxInclusiveFacet} xsdMaxInclusiveFacet = xsdFactory.createXSDMaxInclusiveFacet();
+ * xsdMaxInclusiveFacet.{@link XSDMaxInclusiveFacet#setLexicalValue setLexicalValue}("100");
+ * simpleTypeDefinition.{@link XSDSimpleTypeDefinition#getFacetContents getFacetContents}().add(xsdMaxInclusiveFacet);
+ *
+ * // Add the simple type to the schema
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleTypeDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:simpleType name="SimpleTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:restriction base="xsd:positiveInteger"></b>
+ * //<b> <xsd:maxInclusive value="100"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ *}
+ *<!-- insert-end-initialize-simple-type-definition -->
+ *</pre>
+ */
+ public void initializeSimpleTypeDefinition()
+ // <!-- begin-initialize-simple-type-definition -->
+ {
+ // Create a simple type definition and set it's name to SimpleTypeDefinition.
+ // Also set it's base type to be the built-in positiveInteger.
+ //
+ /*{@link */XSDSimpleTypeDefinition/*}*/ simpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ simpleTypeDefinition./*{@link XSDNamedComponent#setName */setName/*}*/("SimpleTypeDefinition");
+ simpleTypeDefinition./*{@link XSDSimpleTypeDefinition#setBaseTypeDefinition */setBaseTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDSchema#getSchemaForSchema */getSchemaForSchema/*}*/()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition */resolveSimpleTypeDefinition/*}*/("positiveInteger"));
+
+ // Create an annotation placeholder and add it to the type.
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleTypeDefinition./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Create max inclusive facet, set it to 100, and add it to the simple type's facet contents.
+ //
+ /*{@link */XSDMaxInclusiveFacet/*}*/ xsdMaxInclusiveFacet = xsdFactory.createXSDMaxInclusiveFacet();
+ xsdMaxInclusiveFacet./*{@link XSDMaxInclusiveFacet#setLexicalValue */setLexicalValue/*}*/("100");
+ simpleTypeDefinition./*{@link XSDSimpleTypeDefinition#getFacetContents */getFacetContents/*}*/().add(xsdMaxInclusiveFacet);
+
+ // Add the simple type to the schema
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleTypeDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:simpleType name="SimpleTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:restriction base="xsd:positiveInteger">
+ /// <xsd:maxInclusive value="100"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ }
+ // <!-- end-initialize-simple-type-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-list-type-definition -->
+ *{
+ * // Create a simple list type definition and set it's name to SimpleListTypeDefinition.
+ * // Also set its item type to the built-in integer.
+ * //
+ * {@link XSDSimpleTypeDefinition} simpleListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * simpleListTypeDefinition.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("SimpleListTypeDefinition");
+ * simpleListTypeDefinition.{@link XSDSimpleTypeDefinition#setItemTypeDefinition setItemTypeDefinition}
+ * (prototypeSchema.{@link XSDSchema#getSchemaForSchema getSchemaForSchema}().{@link XSDConcreteComponent#resolveSimpleTypeDefinition resolveSimpleTypeDefinition}("integer"));
+ *
+ * // Create an annotation placeholder and add it to the type.
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleListTypeDefinition.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ *
+ * // Add the simple list type to the schema
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleListTypeDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:simpleType name="SimpleListTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:list itemType="xsd:integer"/></b>
+ * //<b> </xsd:simpleType></b>
+ *}
+ *<!-- insert-end-initialize-simple-list-type-definition -->
+ *</pre>
+ */
+ public void initializeSimpleListTypeDefinition()
+ // <!-- begin-initialize-simple-list-type-definition -->
+ {
+ // Create a simple list type definition and set it's name to SimpleListTypeDefinition.
+ // Also set its item type to the built-in integer.
+ //
+ /*{@link */XSDSimpleTypeDefinition/*}*/ simpleListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ simpleListTypeDefinition./*{@link XSDNamedComponent#setName */setName/*}*/("SimpleListTypeDefinition");
+ simpleListTypeDefinition./*{@link XSDSimpleTypeDefinition#setItemTypeDefinition */setItemTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDSchema#getSchemaForSchema */getSchemaForSchema/*}*/()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition */resolveSimpleTypeDefinition/*}*/("integer"));
+
+ // Create an annotation placeholder and add it to the type.
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleListTypeDefinition./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Add the simple list type to the schema
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleListTypeDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:simpleType name="SimpleListTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:list itemType="xsd:integer"/>
+ /// </xsd:simpleType>
+ }
+ // <!-- end-initialize-simple-list-type-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-union-type-definition -->
+ *{
+ * // Create a simple list type definition and set it's name to SimpleUnionTypeDefinition.
+ * // Also set its item type to the built-in integer.
+ * //
+ * {@link XSDSimpleTypeDefinition} simpleUnionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * simpleUnionTypeDefinition.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("SimpleUnionTypeDefinition");
+ * simpleUnionTypeDefinition.{@link XSDSimpleTypeDefinition#getMemberTypeDefinitions getMemberTypeDefinitions}().add
+ * (prototypeSchema.{@link XSDSchema#getSchemaForSchema getSchemaForSchema}().{@link XSDConcreteComponent#resolveSimpleTypeDefinition resolveSimpleTypeDefinition}("integer"));
+ *
+ * // Create an annotation placeholder and add it to the type.
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleUnionTypeDefinition.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ *
+ * // Add the simple list type to the schema
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleUnionTypeDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:simpleType name="SimpleUnionTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:union memberTypes="xsd:integer"/></b>
+ * //<b> </xsd:simpleType></b>
+ *}
+ *<!-- insert-end-initialize-simple-union-type-definition -->
+ *</pre>
+ */
+ public void initializeSimpleUnionTypeDefinition()
+ // <!-- begin-initialize-simple-union-type-definition -->
+ {
+ // Create a simple list type definition and set it's name to SimpleUnionTypeDefinition.
+ // Also set its item type to the built-in integer.
+ //
+ /*{@link */XSDSimpleTypeDefinition/*}*/ simpleUnionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ simpleUnionTypeDefinition./*{@link XSDNamedComponent#setName */setName/*}*/("SimpleUnionTypeDefinition");
+ simpleUnionTypeDefinition./*{@link XSDSimpleTypeDefinition#getMemberTypeDefinitions */getMemberTypeDefinitions/*}*/().add
+ (prototypeSchema./*{@link XSDSchema#getSchemaForSchema */getSchemaForSchema/*}*/()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition */resolveSimpleTypeDefinition/*}*/("integer"));
+
+ // Create an annotation placeholder and add it to the type.
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleUnionTypeDefinition./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Add the simple list type to the schema
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleUnionTypeDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:simpleType name="SimpleUnionTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:union memberTypes="xsd:integer"/>
+ /// </xsd:simpleType>
+ }
+ // <!-- end-initialize-simple-union-type-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-fancy-list-type-definition -->
+ *{
+ * // Create a fancy list type definition and set it's name to FancyListTypeDefinition.
+ * //
+ * {@link XSDSimpleTypeDefinition} fancyListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * fancyListTypeDefinition.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("FancyListTypeDefinition");
+ *
+ * // Create an anonymous list type definition for fancyListTypeDefinition to restrict.
+ * //
+ * XSDSimpleTypeDefinition listTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ *
+ * // Create an anonymous union type definition for the item type of the listTypeDefiniton.
+ * //
+ * XSDSimpleTypeDefinition unionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ *
+ * // Create an anonymous "member" type definition for the unionTypeDefinition,
+ * // and set it to restrict the built-in string.
+ * //
+ * XSDSimpleTypeDefinition firstMemberTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * firstMemberTypeDefinition.{@link XSDSimpleTypeDefinition#setBaseTypeDefinition setBaseTypeDefinition}
+ * (prototypeSchema.{@link XSDSchema#getSchemaForSchema getSchemaForSchema}().{@link XSDConcreteComponent#resolveSimpleTypeDefinition resolveSimpleTypeDefinition}("string"));
+ *
+ * // Create an enumeration facet to specify the value "unknown" and add it to the member.
+ * //
+ * {@link XSDEnumerationFacet} xsdEnumerationFacet = xsdFactory.createXSDEnumerationFacet();
+ * xsdEnumerationFacet.{@link org.eclipse.xsd.XSDConstrainingFacet#setLexicalValue setLexicalValue}("unknown");
+ * firstMemberTypeDefinition.{@link XSDSimpleTypeDefinition#getFacetContents getFacetContents}().add(xsdEnumerationFacet);
+ *
+ * // Add the anonymous member to the contents <b>and</b> the member type definitions of unionTypeDefinition.
+ * //
+ * unionTypeDefinition.{@link XSDSimpleTypeDefinition#getContents getContents}().add(firstMemberTypeDefinition);
+ * unionTypeDefinition.{@link XSDSimpleTypeDefinition#getMemberTypeDefinitions getMemberTypeDefinitions}().add(firstMemberTypeDefinition);
+ *
+ * // Create another anonymous "member" type definition for the unionTypeDefinition,
+ * // and set it to restrict the built-in decimal.
+ * //
+ * XSDSimpleTypeDefinition secondMemberTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * secondMemberTypeDefinition.setBaseTypeDefinition
+ * (prototypeSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal"));
+ *
+ * // Create a fraction digits facet to specify the value "2" and add it to the member.
+ * //
+ * {@link XSDFractionDigitsFacet} xsdFractionDigitsFacet = xsdFactory.createXSDFractionDigitsFacet();
+ * xsdFractionDigitsFacet.setLexicalValue("2");
+ * secondMemberTypeDefinition.getFacetContents().add(xsdFractionDigitsFacet);
+ *
+ * // Add the anonymous member to the contents <b>and</b> the member type definitions of unionTypeDefinition.
+ * //
+ * unionTypeDefinition.getContents().add(secondMemberTypeDefinition);
+ * unionTypeDefinition.getMemberTypeDefinitions().add(secondMemberTypeDefinition);
+ *
+ * // Add the anonymous item to the contents <b>and</b> set the item type definition.
+ * //
+ * listTypeDefinition.getContents().add(unionTypeDefinition);
+ * listTypeDefinition.setItemTypeDefinition(unionTypeDefinition);
+ *
+ * // Add the anonymous restriction to the contents <b>and</b> set the base type definition.
+ * //
+ * fancyListTypeDefinition.getContents().add(listTypeDefinition);
+ * fancyListTypeDefinition.setBaseTypeDefinition(listTypeDefinition);
+ *
+ * // Create a max length facet to specify the value "4" and add it to the fancy list.
+ * //
+ * XSDMaxLengthFacet xsdMaxLengthFacet = xsdFactory.createXSDMaxLengthFacet();
+ * xsdMaxLengthFacet.setLexicalValue("4");
+ * fancyListTypeDefinition.getFacetContents().add(xsdMaxLengthFacet);
+ *
+ * // Add the fancy list type to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(fancyListTypeDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:simpleType name="FancyListTypeDefinition"></b>
+ * //<b> <xsd:restriction></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:list></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:union></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:string"></b>
+ * //<b> <xsd:enumeration value="unknown"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:decimal"></b>
+ * //<b> <xsd:fractionDigits value="2"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:union></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:list></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> <xsd:maxLength value="4"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ *}
+ *<!-- insert-end-initialize-fancy-list-type-definition -->
+ *</pre>
+ */
+ public void initializeFancyListTypeDefinition()
+ // <!-- begin-initialize-fancy-list-type-definition -->
+ {
+ // Create a fancy list type definition and set it's name to FancyListTypeDefinition.
+ //
+ /*{@link */XSDSimpleTypeDefinition/*}*/ fancyListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ fancyListTypeDefinition./*{@link XSDNamedComponent#setName */setName/*}*/("FancyListTypeDefinition");
+
+ // Create an anonymous list type definition for fancyListTypeDefinition to restrict.
+ //
+ XSDSimpleTypeDefinition listTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+
+ // Create an anonymous union type definition for the item type of the listTypeDefiniton.
+ //
+ XSDSimpleTypeDefinition unionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+
+ // Create an anonymous "member" type definition for the unionTypeDefinition,
+ // and set it to restrict the built-in string.
+ //
+ XSDSimpleTypeDefinition firstMemberTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ firstMemberTypeDefinition./*{@link XSDSimpleTypeDefinition#setBaseTypeDefinition */setBaseTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDSchema#getSchemaForSchema */getSchemaForSchema/*}*/()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition */resolveSimpleTypeDefinition/*}*/("string"));
+
+ // Create an enumeration facet to specify the value "unknown" and add it to the member.
+ //
+ /*{@link */XSDEnumerationFacet/*}*/ xsdEnumerationFacet = xsdFactory.createXSDEnumerationFacet();
+ xsdEnumerationFacet./*{@link XSDConstrainingFacet#setLexicalValue */setLexicalValue/*}*/("unknown");
+ firstMemberTypeDefinition./*{@link XSDSimpleTypeDefinition#getFacetContents */getFacetContents/*}*/().add(xsdEnumerationFacet);
+
+ // Add the anonymous member to the contents <b>and</b> the member type definitions of unionTypeDefinition.
+ //
+ unionTypeDefinition./*{@link XSDSimpleTypeDefinition#getContents */getContents/*}*/().add(firstMemberTypeDefinition);
+ unionTypeDefinition./*{@link XSDSimpleTypeDefinition#getMemberTypeDefinitions */getMemberTypeDefinitions/*}*/().add(firstMemberTypeDefinition);
+
+ // Create another anonymous "member" type definition for the unionTypeDefinition,
+ // and set it to restrict the built-in decimal.
+ //
+ XSDSimpleTypeDefinition secondMemberTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ secondMemberTypeDefinition.setBaseTypeDefinition
+ (prototypeSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal"));
+
+ // Create a fraction digits facet to specify the value "2" and add it to the member.
+ //
+ /*{@link */XSDFractionDigitsFacet/*}*/ xsdFractionDigitsFacet = xsdFactory.createXSDFractionDigitsFacet();
+ xsdFractionDigitsFacet.setLexicalValue("2");
+ secondMemberTypeDefinition.getFacetContents().add(xsdFractionDigitsFacet);
+
+ // Add the anonymous member to the contents <b>and</b> the member type definitions of unionTypeDefinition.
+ //
+ unionTypeDefinition.getContents().add(secondMemberTypeDefinition);
+ unionTypeDefinition.getMemberTypeDefinitions().add(secondMemberTypeDefinition);
+
+ // Add the anonymous item to the contents <b>and</b> set the item type definition.
+ //
+ listTypeDefinition.getContents().add(unionTypeDefinition);
+ listTypeDefinition.setItemTypeDefinition(unionTypeDefinition);
+
+ // Add the anonymous restriction to the contents <b>and</b> set the base type definition.
+ //
+ fancyListTypeDefinition.getContents().add(listTypeDefinition);
+ fancyListTypeDefinition.setBaseTypeDefinition(listTypeDefinition);
+
+ // Create a max length facet to specify the value "4" and add it to the fancy list.
+ //
+ XSDMaxLengthFacet xsdMaxLengthFacet = xsdFactory.createXSDMaxLengthFacet();
+ xsdMaxLengthFacet.setLexicalValue("4");
+ fancyListTypeDefinition.getFacetContents().add(xsdMaxLengthFacet);
+
+ // Add the fancy list type to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(fancyListTypeDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:simpleType name="FancyListTypeDefinition">
+ /// <xsd:restriction>
+ /// <xsd:simpleType>
+ /// <xsd:list>
+ /// <xsd:simpleType>
+ /// <xsd:union>
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:string">
+ /// <xsd:enumeration value="unknown"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:decimal">
+ /// <xsd:fractionDigits value="2"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// </xsd:union>
+ /// </xsd:simpleType>
+ /// </xsd:list>
+ /// </xsd:simpleType>
+ /// <xsd:maxLength value="4"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ }
+ // <!-- end-initialize-fancy-list-type-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-initialize-simple-content-complex-type-definition -->
+ *{
+ * // Create a complex type definition and set its name to SimpleContentComplexTypeDefinition.
+ * // Set it to be an extension
+ * //
+ * {@link XSDComplexTypeDefinition} simpleContentComplexTypeDefinition = xsdFactory.createXSDComplexTypeDefinition();
+ * simpleContentComplexTypeDefinition.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("SimpleContentComplexTypeDefinition");
+ * simpleContentComplexTypeDefinition.{@link XSDComplexTypeDefinition#setDerivationMethod setDerivationMethod}({@link XSDDerivationMethod}.EXTENSION_LITERAL);
+ *
+ * // Create an annotation placeholder and add it to the complex type.
+ * //
+ * {@link XSDAnnotation} annotation = xsdFactory.createXSDAnnotation();
+ * simpleContentComplexTypeDefinition.{@link XSDElementDeclaration#setAnnotation setAnnotation}(annotation);
+ *
+ * // Create an anonymous simple type definition, set its base type to be the built-in string,
+ * // and set it to be the content type of the complex type.
+ * //
+ * XSDSimpleTypeDefinition anonymousSimpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * simpleContentComplexTypeDefinition.{@link XSDSimpleTypeDefinition#setBaseTypeDefinition setBaseTypeDefinition}
+ * (prototypeSchema.{@link XSDSchema#getSchemaForSchema getSchemaForSchema}().{@link XSDConcreteComponent#resolveSimpleTypeDefinition resolveSimpleTypeDefinition}("string"));
+ * simpleContentComplexTypeDefinition.{@link XSDComplexTypeDefinition#setContent setContent}(anonymousSimpleTypeDefinition);
+ *
+ * // Create an attribute reference to simpleAttributeDeclaration in this schema.
+ * //
+ * {@link XSDAttributeDeclaration} simpleAttributeDeclarationReference = xsdFactory.createXSDAttributeDeclaration();
+ * simpleAttributeDeclarationReference.{@link XSDAttributeDeclaration#setResolvedAttributeDeclaration setResolvedAttributeDeclaration}
+ * (prototypeSchema.{@link XSDConcreteComponent#resolveAttributeDeclaration(String) resolveAttributeDeclaration}("simpleAttributeDeclaration"));
+ *
+ * // Create an attribute use to hold the reference, set its use to be optional,
+ * // and add it to the complex type's attribute contents
+ * //
+ * {@link XSDAttributeUse} simpleAttributeUse = xsdFactory.createXSDAttributeUse();
+ * simpleAttributeUse.{@link XSDAttributeUse#setContent setContent}(simpleAttributeDeclarationReference);
+ * simpleAttributeUse.setUse({@link XSDAttributeUseCategory}.OPTIONAL_LITERAL);
+ * simpleContentComplexTypeDefinition.{@link XSDComplexTypeDefinition#getAttributeContents getAttributeContents}().add(simpleAttributeUse);
+ *
+ * // Add the complex type to the schema.
+ * //
+ * prototypeSchema.{@link XSDSchema#getContents getContents}().add(simpleContentComplexTypeDefinition);
+ *
+ * // This is the <!-- SAMPLE --> result that is produced.
+ * //
+ * //<b> <xsd:complexType name="SimpleContentComplexTypeDefinition"></b>
+ * //<b> <xsd:annotation/></b>
+ * //<b> <xsd:simpleContent></b>
+ * //<b> <xsd:extension base="xsd:string"></b>
+ * //<b> <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/></b>
+ * //<b> </xsd:extension></b>
+ * //<b> </xsd:simpleContent></b>
+ * //<b> </xsd:complexType></b>
+ *}
+ *<!-- insert-end-initialize-simple-content-complex-type-definition -->
+ *</pre>
+ */
+ public void initializeSimpleContentComplexTypeDefinition()
+ // <!-- begin-initialize-simple-content-complex-type-definition -->
+ {
+ // Create a complex type definition and set its name to SimpleContentComplexTypeDefinition.
+ // Set it to be an extension
+ //
+ /*{@link */XSDComplexTypeDefinition/*}*/ simpleContentComplexTypeDefinition = xsdFactory.createXSDComplexTypeDefinition();
+ simpleContentComplexTypeDefinition./*{@link XSDNamedComponent#setName */setName/*}*/("SimpleContentComplexTypeDefinition");
+ simpleContentComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setDerivationMethod */setDerivationMethod/*}*/(/*{@link */XSDDerivationMethod/*}*/.EXTENSION_LITERAL);
+
+ // Create an annotation placeholder and add it to the complex type.
+ //
+ /*{@link */XSDAnnotation/*}*/ annotation = xsdFactory.createXSDAnnotation();
+ simpleContentComplexTypeDefinition./*{@link XSDElementDeclaration#setAnnotation */setAnnotation/*}*/(annotation);
+
+ // Create an anonymous simple type definition, set its base type to be the built-in string,
+ // and set it to be the content type of the complex type.
+ //
+ XSDSimpleTypeDefinition anonymousSimpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ simpleContentComplexTypeDefinition./*{@link XSDSimpleTypeDefinition#setBaseTypeDefinition */setBaseTypeDefinition/*}*/
+ (prototypeSchema./*{@link XSDSchema#getSchemaForSchema */getSchemaForSchema/*}*/()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition */resolveSimpleTypeDefinition/*}*/("string"));
+ simpleContentComplexTypeDefinition./*{@link XSDComplexTypeDefinition#setContent */setContent/*}*/(anonymousSimpleTypeDefinition);
+
+ // Create an attribute reference to simpleAttributeDeclaration in this schema.
+ //
+ /*{@link */XSDAttributeDeclaration/*}*/ simpleAttributeDeclarationReference = xsdFactory.createXSDAttributeDeclaration();
+ simpleAttributeDeclarationReference./*{@link XSDAttributeDeclaration#setResolvedAttributeDeclaration */setResolvedAttributeDeclaration/*}*/
+ (prototypeSchema./*{@link XSDConcreteComponent#resolveAttributeDeclaration(String) */resolveAttributeDeclaration/*}*/("simpleAttributeDeclaration"));
+
+ // Create an attribute use to hold the reference, set its use to be optional,
+ // and add it to the complex type's attribute contents
+ //
+ /*{@link */XSDAttributeUse/*}*/ simpleAttributeUse = xsdFactory.createXSDAttributeUse();
+ simpleAttributeUse./*{@link XSDAttributeUse#setContent */setContent/*}*/(simpleAttributeDeclarationReference);
+ simpleAttributeUse.setUse(/*{@link */XSDAttributeUseCategory/*}*/.OPTIONAL_LITERAL);
+ simpleContentComplexTypeDefinition./*{@link XSDComplexTypeDefinition#getAttributeContents */getAttributeContents/*}*/().add(simpleAttributeUse);
+
+ // Add the complex type to the schema.
+ //
+ prototypeSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(simpleContentComplexTypeDefinition);
+
+ // This is the <!-- SAMPLE --> result that is produced.
+ //
+ /// <xsd:complexType name="SimpleContentComplexTypeDefinition">
+ /// <xsd:annotation/>
+ /// <xsd:simpleContent>
+ /// <xsd:extension base="xsd:string">
+ /// <xsd:attribute ref="PTS:simpleAttributeDeclaration" use="optional"/>
+ /// </xsd:extension>
+ /// </xsd:simpleContent>
+ /// </xsd:complexType>
+ }
+ // <!-- end-initialize-simple-content-complex-type-definition -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-purchase-order -->
+ *{
+ * // Build the <a href="http://www.w3.org/TR/xmlschema-0/#POSchema">Purchase Order Schema</a> from Primer 0.
+ * // The general approach, for efficiency, is to attach objects as late as possible.
+ * // The XML serialization is at the <a href="#purchase-order-end">end</a>.
+ *
+ * // Create the schema.
+ * //
+ * {@link XSDSchema} xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+ *
+ * // If you want schema tags and references to schema types to be qualified,
+ * // which is recommend, this is the recommended qualifier.
+ * //
+ * xsdSchema.{@link XSDSchema#setSchemaForSchemaQNamePrefix setSchemaForSchemaQNamePrefix}("xsd");
+ *
+ * // Set the target namespace.
+ * //
+ * xsdSchema.{@link XSDSchema#setTargetNamespace setTargetNamespace}("http://nist.gov/po.xsd");
+ *
+ * // Choose the prefix used for this schema's namespace and the {@link XSDSchema#getSchemaForSchema schema for schema}'s namespace.
+ * //
+ * Map qNamePrefixToNamespaceMap = xsdSchema.{@link XSDSchema#getQNamePrefixToNamespaceMap getQNamePrefixToNamespaceMap}();
+ * qNamePrefixToNamespaceMap.put("po", xsdSchema.getTargetNamespace());
+ * qNamePrefixToNamespaceMap.put(xsdSchema.getSchemaForSchemaQNamePrefix(), {@link XSDConstants}.SCHEMA_FOR_SCHEMA_URI_2001);
+ *
+ * // Create an annotation and add it to the schema.
+ * //
+ * {@link XSDAnnotation} xsdAnnotation = xsdFactory.createXSDAnnotation();
+ * xsdSchema.{@link XSDSchema#getContents getContents}().add(xsdAnnotation);
+ *
+ * // Create a documentation DOM element with no sourceURI attribute.
+ * // <b>NOTE</b>
+ * // Working with the contents of an annotation requires dropping down into the DOM model.
+ * // This imposes the additional requirement that the annotation must be {@link XSDSchema#getSchema attached} to a schema.
+ * // It also has the effect of calling {@link XSDSchema#updateElement()},
+ * // if the schema does not have an {@link XSDConcreteComponent#getElement element} or {@link XSDSchema#getDocument document} yet.
+ * //
+ * {@link Element <em>Element</em>} documentation = xsdAnnotation.{@link XSDAnnotation#createUserInformation createUserInformation}(null);
+ *
+ * // Use the DOM API to set the lang attribute and content of the documentation.
+ * //
+ * documentation.{@link Element#setAttributeNS <em>setAttributeNS</em>}(XSDConstants.XML_NAMESPACE_URI_1998, "xml:lang", "en");
+ * String text = "Purchase order schema for Example.com.\nCopyright 2000 Example.com. All rights reserved.";
+ * documentation.{@link Element#appendChild <em>appendChild</em>}(documentation.getOwnerDocument().createTextNode(text));
+ *
+ * // Use the DOM API to add the documentation to the element of the annotation.
+ * //
+ * xsdAnnotation.{@link XSDAnnotation#getElement getElement}().appendChild(documentation);
+ *
+ * // Create an element, name it purchaseOrder,
+ * // and set it's type to the purchaseOrderType of this schema.
+ * // Add the purchaseOrder element to the schema.
+ * //
+ * {@link XSDElementDeclaration} purchaseOrder = xsdFactory.createXSDElementDeclaration();
+ * purchaseOrder.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("purchaseOrder");
+ * purchaseOrder.{@link XSDElementDeclaration#setTypeDefinition setTypeDefinition}(xsdSchema.{@link XSDConcreteComponent#resolveComplexTypeDefinition(String) resolveComplexTypeDefinition}("PurchaseOrderType"));
+ * xsdSchema.getContents().add(purchaseOrder);
+ *
+ * // Create an element named command of the build-in type string.
+ * //
+ * XSDElementDeclaration comment = xsdFactory.createXSDElementDeclaration();
+ * comment.setName("comment");
+ * comment.setTypeDefinition(xsdSchema.getSchemaForSchema().{@link XSDConcreteComponent#resolveSimpleTypeDefinition(String) resolveSimpleTypeDefinition}("string"));
+ * xsdSchema.getContents().add(comment);
+ *
+ * // Create a complex type and name it PurchaseOrderType.
+ * //
+ * {@link XSDComplexTypeDefinition} purchaseOrderType = xsdFactory.createXSDComplexTypeDefinition();
+ * purchaseOrderType.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("PurchaseOrderType");
+ *
+ * // Create a sequence model group, and a particle to contain it.
+ * //
+ * {@link XSDModelGroup} purchaseOrderTypeSequence = xsdFactory.createXSDModelGroup();
+ * purchaseOrderTypeSequence.{@link XSDModelGroup#setCompositor setCompositor}(XSDCompositor.SEQUENCE_LITERAL);
+ * {@link XSDParticle} purchaseOrderTypeParticle = xsdFactory.createXSDParticle();
+ * purchaseOrderTypeParticle.{@link XSDParticle#setContent setContent}(purchaseOrderTypeSequence);
+ *
+ * // Create an element named shipTo of complex type USAddress, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration shipTo = xsdFactory.createXSDElementDeclaration();
+ * shipTo.setName("shipTo");
+ * shipTo.setTypeDefinition(xsdSchema.resolveComplexTypeDefinition("USAddress"));
+ * XSDParticle shipToParticle = xsdFactory.createXSDParticle();
+ * shipToParticle.setContent(shipTo);
+ * purchaseOrderTypeSequence.{@link XSDModelGroup#getContents getContents}().add(shipToParticle);
+ *
+ * // Create an element named billTo of complex type USAddress, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration billTo = xsdFactory.createXSDElementDeclaration();
+ * billTo.setName("billTo");
+ * billTo.setTypeDefinition(xsdSchema.resolveComplexTypeDefinition("USAddress"));
+ * XSDParticle billToParticle = xsdFactory.createXSDParticle();
+ * billToParticle.setContent(billTo);
+ * purchaseOrderTypeSequence.getContents().add(billToParticle);
+ *
+ * // Create an element reference to comment, a particle to contain it,
+ * // set the particle to be optional, and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration commentRef = xsdFactory.createXSDElementDeclaration();
+ * commentRef.{@link XSDElementDeclaration#setResolvedElementDeclaration setResolvedElementDeclaration}(xsdSchema.{@link XSDConcreteComponent#resolveElementDeclaration(String) resolveElementDeclaration}("comment"));
+ * XSDParticle commentRefParticle = xsdFactory.createXSDParticle();
+ * commentRefParticle.{@link XSDParticle#setMinOccurs(int) setMinOccurs}(0);
+ * commentRefParticle.setContent(commentRef);
+ * purchaseOrderTypeSequence.getContents().add(commentRefParticle);
+ *
+ * // Create an element named items of complex type Items, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration items = xsdFactory.createXSDElementDeclaration();
+ * items.setName("items");
+ * items.setTypeDefinition(xsdSchema.resolveComplexTypeDefinition("Items"));
+ * XSDParticle itemsParticle = xsdFactory.createXSDParticle();
+ * itemsParticle.setContent(items);
+ * purchaseOrderTypeSequence.getContents().add(billToParticle);
+ *
+ * // Set the completed content particle to be the content of the PurchaseOrderType.
+ * //
+ * purchaseOrderType.{@link XSDComplexTypeDefinition#setContent setContent}(purchaseOrderTypeParticle);
+ *
+ * // Create an attribute, name it orderDate, and set it's type to the built-in Date type.
+ * // Also create an attribute use to contain the attribute and add it to PurchaseOrderType's attribute contents.
+ * //
+ * {@link XSDAttributeDeclaration} orderDate = xsdFactory.createXSDAttributeDeclaration();
+ * orderDate.{@link org.eclipse.xsd.XSDNamedComponent#setName setName}("orderDate");
+ * orderDate.{@link XSDAttributeDeclaration#setTypeDefinition setTypeDefinition}(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("date"));
+ * {@link XSDAttributeUse} orderDateAttributeUse = xsdFactory.createXSDAttributeUse();
+ * orderDateAttributeUse.{@link XSDAttributeUse#setContent setContent}(orderDate);
+ * purchaseOrderType.{@link XSDComplexTypeDefinition#getAttributeContents getAttributeContents}().add(orderDateAttributeUse);
+ *
+ * // Add the completed complex PurchaseOrderType to the schema.
+ * //
+ * xsdSchema.getContents().add(purchaseOrderType);
+ *
+ * // Create a complex type named USAddress.
+ * //
+ * XSDComplexTypeDefinition usAddress = xsdFactory.createXSDComplexTypeDefinition();
+ * usAddress.setName("USAddress");
+ *
+ * // Create a sequence model group, and a particle to contain it.
+ * //
+ * XSDModelGroup usAddressSequence = xsdFactory.createXSDModelGroup();
+ * usAddressSequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ * XSDParticle usAddressParticle = xsdFactory.createXSDParticle();
+ * usAddressParticle.setContent(usAddressSequence);
+ *
+ * // Create an element named name of built-in type string, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration name = xsdFactory.createXSDElementDeclaration();
+ * name.setName("name");
+ * name.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ * XSDParticle nameParticle = xsdFactory.createXSDParticle();
+ * nameParticle.setContent(name);
+ * usAddressSequence.getContents().add(nameParticle);
+ *
+ * // Create an element named street of built-in type string, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration street = xsdFactory.createXSDElementDeclaration();
+ * street.setName("street");
+ * street.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ * XSDParticle streeParticle = xsdFactory.createXSDParticle();
+ * streeParticle.setContent(street);
+ * usAddressSequence.getContents().add(streeParticle);
+ *
+ * // Create an element named city of built-in type string, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration city = xsdFactory.createXSDElementDeclaration();
+ * city.setName("city");
+ * city.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ * XSDParticle cityParticle = xsdFactory.createXSDParticle();
+ * cityParticle.setContent(city);
+ * usAddressSequence.getContents().add(cityParticle);
+ *
+ * // Create an element named state of built-in type string, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration state = xsdFactory.createXSDElementDeclaration();
+ * state.setName("state");
+ * state.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ * XSDParticle stateParticle = xsdFactory.createXSDParticle();
+ * stateParticle.setContent(state);
+ * usAddressSequence.getContents().add(stateParticle);
+ *
+ * // Create an element named zip of built-in type string, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration zip = xsdFactory.createXSDElementDeclaration();
+ * zip.setName("zip");
+ * zip.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ * XSDParticle zipParticle = xsdFactory.createXSDParticle();
+ * zipParticle.setContent(zip);
+ * usAddressSequence.getContents().add(zipParticle);
+ *
+ * // Set the completed content particle to be the content of USAddress.
+ * //
+ * usAddress.setContent(usAddressParticle);
+ *
+ * // Create an attribute, name it country, set it's type to the built-in NMTOKEN type,
+ * // set its constraints to be fixed, set the lexical value of the constraint to be "US".
+ * // Also create an attribute use to contain the attribute and add it to USAddress' attribute contents.
+ * //
+ * XSDAttributeDeclaration country = xsdFactory.createXSDAttributeDeclaration();
+ * country.setName("country");
+ * country.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("NMTOKEN"));
+ * XSDAttributeUse countryAttributeUse = xsdFactory.createXSDAttributeUse();
+ * countryAttributeUse.setContent(country);
+ * countryAttributeUse.{@link XSDAttributeDeclaration#setConstraint(XSDConstraint) setConstraint}({@link XSDConstraint}.FIXED_LITERAL);
+ * countryAttributeUse.{@link XSDAttributeDeclaration#setLexicalValue setLexicalValue}("US");
+ * usAddress.getAttributeContents().add(countryAttributeUse);
+ *
+ * // Add the completed complex USAddress to the schema.
+ * //
+ * xsdSchema.getContents().add(usAddress);
+ *
+ * // Create a complex type named Items.
+ * //
+ * XSDComplexTypeDefinition itemsType = xsdFactory.createXSDComplexTypeDefinition();
+ * itemsType.setName("Items");
+ *
+ * // Create a sequence model group, and a particle to contain it.
+ * //
+ * XSDModelGroup itemsTypeSequence = xsdFactory.createXSDModelGroup();
+ * itemsTypeSequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ * XSDParticle itemsTypeParticle = xsdFactory.createXSDParticle();
+ * itemsTypeParticle.setContent(itemsTypeSequence);
+ *
+ * // Create an element and name it item.
+ * //
+ * XSDElementDeclaration item = xsdFactory.createXSDElementDeclaration();
+ * item.setName("item");
+ *
+ * // Create an anonymous complex type.
+ * //
+ * XSDComplexTypeDefinition anonymousComplexTypeDefinition = xsdFactory.createXSDComplexTypeDefinition();
+ *
+ * // Create a sequence model group, and a particle to contain it.
+ * //
+ * XSDModelGroup anonymousComplexTypeDefinitionSequence = xsdFactory.createXSDModelGroup();
+ * anonymousComplexTypeDefinitionSequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ * XSDParticle anonymousTypeDefinitionParticle = xsdFactory.createXSDParticle();
+ * anonymousTypeDefinitionParticle.setContent(anonymousComplexTypeDefinitionSequence);
+ *
+ * // Create an element productName of built-in type string, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration productName = xsdFactory.createXSDElementDeclaration();
+ * productName.setName("productName");
+ * productName.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ * XSDParticle productNameParticle = xsdFactory.createXSDParticle();
+ * productNameParticle.setContent(productName);
+ * anonymousComplexTypeDefinitionSequence.getContents().add(productNameParticle);
+ *
+ * // Create a particle to contain the item declaration and add it to the sequence.
+ * //
+ * XSDParticle itemParticle = xsdFactory.createXSDParticle();
+ * itemParticle.setContent(item);
+ * itemsTypeSequence.getContents().add(itemParticle);
+ *
+ * // Create an attribute, name it partNum, set its type to the SKU type,
+ * // Also create an attribute use to contain the attribute, set it to be required,
+ * // and add it to Items' attribute contents.
+ * //
+ * XSDAttributeDeclaration partNum = xsdFactory.createXSDAttributeDeclaration();
+ * partNum.setName("partNum");
+ * partNum.setTypeDefinition(xsdSchema.resolveSimpleTypeDefinition("SKU"));
+ * XSDAttributeUse partNumAttributeUse = xsdFactory.createXSDAttributeUse();
+ * partNumAttributeUse.setContent(partNum);
+ * partNumAttributeUse.setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ * itemsType.getAttributeContents().add(partNumAttributeUse);
+ *
+ * // Set the completed content particle to be the content of the anonymous complex type.
+ * //
+ * anonymousComplexTypeDefinition.setContent(anonymousTypeDefinitionParticle);
+ *
+ * // Create an element and name it quantity.
+ * //
+ * XSDElementDeclaration quantity = xsdFactory.createXSDElementDeclaration();
+ * quantity.setName("quantity");
+ *
+ * // Create an anonymous simple type and set it to restrict the built-in positiveInteger type.
+ * //
+ * {@link XSDSimpleTypeDefinition} anonymousSimpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ * anonymousSimpleTypeDefinition.{@link XSDSimpleTypeDefinition#setBaseTypeDefinition setBaseTypeDefinition}
+ * (xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("positiveInteger"));
+ *
+ * // Create max exclusive facet, set its lexical value to be 100, and add it to the facet contents of the anonymous simple type.
+ * //
+ * XSDMaxExclusiveFacet quantityMaxExclusiveFacet = xsdFactory.createXSDMaxExclusiveFacet();
+ * quantityMaxExclusiveFacet.setLexicalValue("100");
+ * anonymousSimpleTypeDefinition.getFacetContents().add(quantityMaxExclusiveFacet);
+ *
+ * // Set the completed anonymous type of the quantity element.
+ * //
+ * quantity.setAnonymousTypeDefinition(anonymousSimpleTypeDefinition);
+ *
+ * // Create a particle to hold the quantity element and add it to the sequence.
+ * //
+ * XSDParticle quantityParticle = xsdFactory.createXSDParticle();
+ * quantityParticle.setContent(quantity);
+ * anonymousComplexTypeDefinitionSequence.getContents().add(quantityParticle);
+ *
+ * // Create an element USPrice of built-in type decimal, a particle to contain it,
+ * // and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration usPrice = xsdFactory.createXSDElementDeclaration();
+ * usPrice.setName("USPrice");
+ * usPrice.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal"));
+ * XSDParticle usPriceParticle = xsdFactory.createXSDParticle();
+ * usPriceParticle.setContent(usPrice);
+ * anonymousComplexTypeDefinitionSequence.getContents().add(usPriceParticle);
+ *
+ * // Create an element reference to comment, a particle to contain it,
+ * // set the particle to be optional, and add the particle to the sequence.
+ * //
+ * XSDElementDeclaration anotherCommentRef = xsdFactory.createXSDElementDeclaration();
+ * anotherCommentRef.setResolvedElementDeclaration(xsdSchema.resolveElementDeclaration("comment"));
+ * XSDParticle anotherCommentRefParticle = xsdFactory.createXSDParticle();
+ * anotherCommentRefParticle.setMinOccurs(0);
+ * anotherCommentRefParticle.setContent(anotherCommentRef);
+ * anonymousComplexTypeDefinitionSequence.getContents().add(anotherCommentRefParticle);
+ *
+ * // Create an element USPrice of built-in type Date, a particle to contain it,
+ * // set the particle to be optional, and add it to the sequence.
+ * //
+ * XSDElementDeclaration shipDate = xsdFactory.createXSDElementDeclaration();
+ * shipDate.setName("shipDate");
+ * shipDate.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal"));
+ * XSDParticle shipDateParticle = xsdFactory.createXSDParticle();
+ * shipDateParticle.setContent(shipDate);
+ * shipDateParticle.setMinOccurs(0);
+ * anonymousComplexTypeDefinitionSequence.getContents().add(shipDateParticle);
+ *
+ * // Set the completed content particle to be the content of Items.
+ * //
+ * itemsType.setContent(itemsTypeParticle);
+ *
+ * // Set the completed anonymous type of the item element.
+ * //
+ * item.{@link XSDElementDeclaration#setAnonymousTypeDefinition setAnonymousTypeDefinition}(anonymousComplexTypeDefinition);
+ *
+ * // Add the completed complex Items to the schema.
+ * //
+ * xsdSchema.getContents().add(itemsType);
+ *
+ * // Create a simple type, name it Sku, and set it to restrict the built-in type string.
+ * //
+ * XSDSimpleTypeDefinition sku = xsdFactory.createXSDSimpleTypeDefinition();
+ * sku.setName("Sku");
+ * sku.setBaseTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ *
+ * // Create max exclusive facet, set its lexical value to be 100, and add it to the facet contents of Sku.
+ * //
+ * XSDPatternFacet skuPatternFacet = xsdFactory.createXSDPatternFacet();
+ * skuPatternFacet.setLexicalValue("/d{3}-[A-Z]{2}");
+ * sku.getFacetContents().add(skuPatternFacet);
+ *
+ * // Add the completed simple Sku to the schema.
+ * //
+ * xsdSchema.getContents().add(sku);
+ *
+ * // This is the <!-- SAMPLE --> <a name="purchase-order-end">result</a> that is produced.
+ * //
+ * //<b> <?xml version="1.0" encoding="UTF-8"?></b>
+ * //<b> <xsd:schema targetNamespace="http://nist.gov/po.xsd"</b>
+ * //<b> xmlns:po="http://nist.gov/po.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"></b>
+ * //<b> <xsd:annotation></b>
+ * //<b> <xsd:documentation xml:lang="en">Purchase order schema for</b>
+ * //<b> Example.com. Copyright 2000 Example.com. All rights reserved.</xsd:documentation></b>
+ * //<b> </xsd:annotation></b>
+ * //<b> <xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/></b>
+ * //<b> <xsd:element name="comment" type="xsd:string"/></b>
+ * //<b> <xsd:complexType name="PurchaseOrderType"></b>
+ * //<b> <xsd:sequence></b>
+ * //<b> <xsd:element name="shipTo" type="po:USAddress"/></b>
+ * //<b> <xsd:element name="billTo" type="po:USAddress"/></b>
+ * //<b> <xsd:element minOccurs="0" ref="po:comment"/></b>
+ * //<b> </xsd:sequence></b>
+ * //<b> <xsd:attribute name="orderDate" type="xsd:Date"/></b>
+ * //<b> </xsd:complexType></b>
+ * //<b> <xsd:complexType name="USAddress"></b>
+ * //<b> <xsd:sequence></b>
+ * //<b> <xsd:element name="name" type="xsd:string"/></b>
+ * //<b> <xsd:element name="street" type="xsd:string"/></b>
+ * //<b> <xsd:element name="city" type="xsd:string"/></b>
+ * //<b> <xsd:element name="state" type="xsd:string"/></b>
+ * //<b> <xsd:element name="zip" type="xsd:string"/></b>
+ * //<b> </xsd:sequence></b>
+ * //<b> <xsd:attribute fixed="US" name="country" type="xsd:NMTOKEN"/></b>
+ * //<b> </xsd:complexType></b>
+ * //<b> <xsd:complexType name="Items"></b>
+ * //<b> <xsd:sequence></b>
+ * //<b> <xsd:element name="item"></b>
+ * //<b> <xsd:complexType></b>
+ * //<b> <xsd:sequence></b>
+ * //<b> <xsd:element name="productName" type="xsd:string"/></b>
+ * //<b> <xsd:element name="quantity"></b>
+ * //<b> <xsd:simpleType></b>
+ * //<b> <xsd:restriction base="xsd:positiveInteger"></b>
+ * //<b> <xsd:maxExclusive value="100"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:element></b>
+ * //<b> <xsd:element name="USPrice" type="xsd:decimal"/></b>
+ * //<b> <xsd:element minOccurs="0" ref="po:comment"/></b>
+ * //<b> <xsd:element minOccurs="0" name="shipDate" type="xsd:decimal"/></b>
+ * //<b> </xsd:sequence></b>
+ * //<b> </xsd:complexType></b>
+ * //<b> </xsd:element></b>
+ * //<b> </xsd:sequence></b>
+ * //<b> <xsd:attribute name="partNum" type="po:SKU" use="required"/></b>
+ * //<b> </xsd:complexType></b>
+ * //<b> <xsd:simpleType name="Sku"></b>
+ * //<b> <xsd:restriction base="xsd:string"></b>
+ * //<b> <xsd:pattern value="/d{3}-[A-Z]{2}"/></b>
+ * //<b> </xsd:restriction></b>
+ * //<b> </xsd:simpleType></b>
+ * //<b> </xsd:schema></b>
+ *
+ * return xsdSchema;
+ *}
+ *<!-- insert-end-purchase-order -->
+ *</pre>
+ */
+ public XSDSchema initializePurchaseOrderSchema()
+ // <!-- begin-purchase-order -->
+ {
+ // Build the <a href="http://www.w3.org/TR/xmlschema-0/#POSchema">Purchase Order Schema</a> from Primer 0.
+ // The general approach, for efficiency, is to attach objects as late as possible.
+ // The XML serialization is at the <a href="#purchase-order-end">end</a>.
+
+ // Create the schema.
+ //
+ /*{@link */XSDSchema/*}*/ xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+
+ // If you want schema tags and references to schema types to be qualified,
+ // which is recommend, this is the recommended qualifier.
+ //
+ xsdSchema./*{@link XSDSchema#setSchemaForSchemaQNamePrefix */setSchemaForSchemaQNamePrefix/*}*/("xsd");
+
+ // Set the target namespace.
+ //
+ xsdSchema./*{@link XSDSchema#setTargetNamespace */setTargetNamespace/*}*/("http://nist.gov/po.xsd");
+
+ // Choose the prefix used for this schema's namespace and the {@link XSDSchema#getSchemaForSchema schema for schema}'s namespace.
+ //
+ Map<String, String> qNamePrefixToNamespaceMap = xsdSchema./*{@link XSDSchema#getQNamePrefixToNamespaceMap */getQNamePrefixToNamespaceMap/*}*/();
+ qNamePrefixToNamespaceMap.put("po", xsdSchema.getTargetNamespace());
+ qNamePrefixToNamespaceMap.put(xsdSchema.getSchemaForSchemaQNamePrefix(), /*{@link */XSDConstants/*}*/.SCHEMA_FOR_SCHEMA_URI_2001);
+
+ // Create an annotation and add it to the schema.
+ //
+ /*{@link */XSDAnnotation/*}*/ xsdAnnotation = xsdFactory.createXSDAnnotation();
+ xsdSchema./*{@link XSDSchema#getContents */getContents/*}*/().add(xsdAnnotation);
+
+ // Create a documentation DOM element with no sourceURI attribute.
+ // <b>NOTE</b>
+ // Working with the contents of an annotation requires dropping down into the DOM model.
+ // This imposes the additional requirement that the annotation must be {@link XSDSchema#getSchema attached} to a schema.
+ // It also has the effect of calling {@link XSDSchema#updateElement()},
+ // if the schema does not have an {@link XSDConcreteComponent#getElement element} or {@link XSDSchema#getDocument document} yet.
+ //
+ /*{@link */Element/* <em>Element</em>}*/ documentation = xsdAnnotation./*{@link XSDAnnotation#createUserInformation */createUserInformation/*}*/(null);
+
+ // Use the DOM API to set the lang attribute and content of the documentation.
+ //
+ documentation./*{@link Element#setAttributeNS <em>*/setAttributeNS/*</em>}*/(XSDConstants.XML_NAMESPACE_URI_1998, "xml:lang", "en");
+ String text = "Purchase order schema for Example.com.\nCopyright 2000 Example.com. All rights reserved.";
+ documentation./*{@link Element#appendChild <em>*/appendChild/*</em>}*/(documentation.getOwnerDocument().createTextNode(text));
+
+ // Use the DOM API to add the documentation to the element of the annotation.
+ //
+ xsdAnnotation./*{@link XSDAnnotation#getElement */getElement/*}*/().appendChild(documentation);
+
+ // Create an element, name it purchaseOrder,
+ // and set it's type to the purchaseOrderType of this schema.
+ // Add the purchaseOrder element to the schema.
+ //
+ /*{@link */XSDElementDeclaration/*}*/ purchaseOrder = xsdFactory.createXSDElementDeclaration();
+ purchaseOrder./*{@link XSDNamedComponent#setName */setName/*}*/("purchaseOrder");
+ purchaseOrder./*{@link XSDElementDeclaration#setTypeDefinition */setTypeDefinition/*}*/(xsdSchema./*{@link XSDConcreteComponent#resolveComplexTypeDefinition(String) */resolveComplexTypeDefinition/*}*/("PurchaseOrderType"));
+ xsdSchema.getContents().add(purchaseOrder);
+
+ // Create an element named command of the build-in type string.
+ //
+ XSDElementDeclaration comment = xsdFactory.createXSDElementDeclaration();
+ comment.setName("comment");
+ comment.setTypeDefinition(xsdSchema.getSchemaForSchema()./*{@link XSDConcreteComponent#resolveSimpleTypeDefinition(String) */resolveSimpleTypeDefinition/*}*/("string"));
+ xsdSchema.getContents().add(comment);
+
+ // Create a complex type and name it PurchaseOrderType.
+ //
+ /*{@link */XSDComplexTypeDefinition/*}*/ purchaseOrderType = xsdFactory.createXSDComplexTypeDefinition();
+ purchaseOrderType./*{@link XSDNamedComponent#setName */setName/*}*/("PurchaseOrderType");
+
+ // Create a sequence model group, and a particle to contain it.
+ //
+ /*{@link */XSDModelGroup/*}*/ purchaseOrderTypeSequence = xsdFactory.createXSDModelGroup();
+ purchaseOrderTypeSequence./*{@link XSDModelGroup#setCompositor */setCompositor/*}*/(XSDCompositor.SEQUENCE_LITERAL);
+ /*{@link */XSDParticle/*}*/ purchaseOrderTypeParticle = xsdFactory.createXSDParticle();
+ purchaseOrderTypeParticle./*{@link XSDParticle#setContent */setContent/*}*/(purchaseOrderTypeSequence);
+
+ // Create an element named shipTo of complex type USAddress, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration shipTo = xsdFactory.createXSDElementDeclaration();
+ shipTo.setName("shipTo");
+ shipTo.setTypeDefinition(xsdSchema.resolveComplexTypeDefinition("USAddress"));
+ XSDParticle shipToParticle = xsdFactory.createXSDParticle();
+ shipToParticle.setContent(shipTo);
+ purchaseOrderTypeSequence./*{@link XSDModelGroup#getContents */getContents/*}*/().add(shipToParticle);
+
+ // Create an element named billTo of complex type USAddress, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration billTo = xsdFactory.createXSDElementDeclaration();
+ billTo.setName("billTo");
+ billTo.setTypeDefinition(xsdSchema.resolveComplexTypeDefinition("USAddress"));
+ XSDParticle billToParticle = xsdFactory.createXSDParticle();
+ billToParticle.setContent(billTo);
+ purchaseOrderTypeSequence.getContents().add(billToParticle);
+
+ // Create an element reference to comment, a particle to contain it,
+ // set the particle to be optional, and add the particle to the sequence.
+ //
+ XSDElementDeclaration commentRef = xsdFactory.createXSDElementDeclaration();
+ commentRef./*{@link XSDElementDeclaration#setResolvedElementDeclaration */setResolvedElementDeclaration/*}*/(xsdSchema./*{@link XSDConcreteComponent#resolveElementDeclaration(String) */resolveElementDeclaration/*}*/("comment"));
+ XSDParticle commentRefParticle = xsdFactory.createXSDParticle();
+ commentRefParticle./*{@link XSDParticle#setMinOccurs(int) */setMinOccurs/*}*/(0);
+ commentRefParticle.setContent(commentRef);
+ purchaseOrderTypeSequence.getContents().add(commentRefParticle);
+
+ // Create an element named items of complex type Items, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration items = xsdFactory.createXSDElementDeclaration();
+ items.setName("items");
+ items.setTypeDefinition(xsdSchema.resolveComplexTypeDefinition("Items"));
+ XSDParticle itemsParticle = xsdFactory.createXSDParticle();
+ itemsParticle.setContent(items);
+ purchaseOrderTypeSequence.getContents().add(billToParticle);
+
+ // Set the completed content particle to be the content of the PurchaseOrderType.
+ //
+ purchaseOrderType./*{@link XSDComplexTypeDefinition#setContent */setContent/*}*/(purchaseOrderTypeParticle);
+
+ // Create an attribute, name it orderDate, and set it's type to the built-in Date type.
+ // Also create an attribute use to contain the attribute and add it to PurchaseOrderType's attribute contents.
+ //
+ /*{@link */XSDAttributeDeclaration/*}*/ orderDate = xsdFactory.createXSDAttributeDeclaration();
+ orderDate./*{@link XSDNamedComponent#setName */setName/*}*/("orderDate");
+ orderDate./*{@link XSDAttributeDeclaration#setTypeDefinition */setTypeDefinition/*}*/(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("date"));
+ /*{@link */XSDAttributeUse/*}*/ orderDateAttributeUse = xsdFactory.createXSDAttributeUse();
+ orderDateAttributeUse./*{@link XSDAttributeUse#setContent */setContent/*}*/(orderDate);
+ purchaseOrderType./*{@link XSDComplexTypeDefinition#getAttributeContents */getAttributeContents/*}*/().add(orderDateAttributeUse);
+
+ // Add the completed complex PurchaseOrderType to the schema.
+ //
+ xsdSchema.getContents().add(purchaseOrderType);
+
+ // Create a complex type named USAddress.
+ //
+ XSDComplexTypeDefinition usAddress = xsdFactory.createXSDComplexTypeDefinition();
+ usAddress.setName("USAddress");
+
+ // Create a sequence model group, and a particle to contain it.
+ //
+ XSDModelGroup usAddressSequence = xsdFactory.createXSDModelGroup();
+ usAddressSequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ XSDParticle usAddressParticle = xsdFactory.createXSDParticle();
+ usAddressParticle.setContent(usAddressSequence);
+
+ // Create an element named name of built-in type string, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration name = xsdFactory.createXSDElementDeclaration();
+ name.setName("name");
+ name.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ XSDParticle nameParticle = xsdFactory.createXSDParticle();
+ nameParticle.setContent(name);
+ usAddressSequence.getContents().add(nameParticle);
+
+ // Create an element named street of built-in type string, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration street = xsdFactory.createXSDElementDeclaration();
+ street.setName("street");
+ street.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ XSDParticle streeParticle = xsdFactory.createXSDParticle();
+ streeParticle.setContent(street);
+ usAddressSequence.getContents().add(streeParticle);
+
+ // Create an element named city of built-in type string, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration city = xsdFactory.createXSDElementDeclaration();
+ city.setName("city");
+ city.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ XSDParticle cityParticle = xsdFactory.createXSDParticle();
+ cityParticle.setContent(city);
+ usAddressSequence.getContents().add(cityParticle);
+
+ // Create an element named state of built-in type string, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration state = xsdFactory.createXSDElementDeclaration();
+ state.setName("state");
+ state.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ XSDParticle stateParticle = xsdFactory.createXSDParticle();
+ stateParticle.setContent(state);
+ usAddressSequence.getContents().add(stateParticle);
+
+ // Create an element named zip of built-in type string, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration zip = xsdFactory.createXSDElementDeclaration();
+ zip.setName("zip");
+ zip.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ XSDParticle zipParticle = xsdFactory.createXSDParticle();
+ zipParticle.setContent(zip);
+ usAddressSequence.getContents().add(zipParticle);
+
+ // Set the completed content particle to be the content of USAddress.
+ //
+ usAddress.setContent(usAddressParticle);
+
+ // Create an attribute, name it country, set it's type to the built-in NMTOKEN type,
+ // set its constraints to be fixed, set the lexical value of the constraint to be "US".
+ // Also create an attribute use to contain the attribute and add it to USAddress' attribute contents.
+ //
+ XSDAttributeDeclaration country = xsdFactory.createXSDAttributeDeclaration();
+ country.setName("country");
+ country.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("NMTOKEN"));
+ XSDAttributeUse countryAttributeUse = xsdFactory.createXSDAttributeUse();
+ countryAttributeUse.setContent(country);
+ countryAttributeUse./*{@link XSDAttributeDeclaration#setConstraint(XSDConstraint) */setConstraint/*}*/(/*{@link */XSDConstraint/*}*/.FIXED_LITERAL);
+ countryAttributeUse./*{@link XSDAttributeDeclaration#setLexicalValue */setLexicalValue/*}*/("US");
+ usAddress.getAttributeContents().add(countryAttributeUse);
+
+ // Add the completed complex USAddress to the schema.
+ //
+ xsdSchema.getContents().add(usAddress);
+
+ // Create a complex type named Items.
+ //
+ XSDComplexTypeDefinition itemsType = xsdFactory.createXSDComplexTypeDefinition();
+ itemsType.setName("Items");
+
+ // Create a sequence model group, and a particle to contain it.
+ //
+ XSDModelGroup itemsTypeSequence = xsdFactory.createXSDModelGroup();
+ itemsTypeSequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ XSDParticle itemsTypeParticle = xsdFactory.createXSDParticle();
+ itemsTypeParticle.setContent(itemsTypeSequence);
+
+ // Create an element and name it item.
+ //
+ XSDElementDeclaration item = xsdFactory.createXSDElementDeclaration();
+ item.setName("item");
+
+ // Create an anonymous complex type.
+ //
+ XSDComplexTypeDefinition anonymousComplexTypeDefinition = xsdFactory.createXSDComplexTypeDefinition();
+
+ // Create a sequence model group, and a particle to contain it.
+ //
+ XSDModelGroup anonymousComplexTypeDefinitionSequence = xsdFactory.createXSDModelGroup();
+ anonymousComplexTypeDefinitionSequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ XSDParticle anonymousTypeDefinitionParticle = xsdFactory.createXSDParticle();
+ anonymousTypeDefinitionParticle.setContent(anonymousComplexTypeDefinitionSequence);
+
+ // Create an element productName of built-in type string, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration productName = xsdFactory.createXSDElementDeclaration();
+ productName.setName("productName");
+ productName.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+ XSDParticle productNameParticle = xsdFactory.createXSDParticle();
+ productNameParticle.setContent(productName);
+ anonymousComplexTypeDefinitionSequence.getContents().add(productNameParticle);
+
+ // Create a particle to contain the item declaration and add it to the sequence.
+ //
+ XSDParticle itemParticle = xsdFactory.createXSDParticle();
+ itemParticle.setContent(item);
+ itemsTypeSequence.getContents().add(itemParticle);
+
+ // Create an attribute, name it partNum, set its type to the SKU type,
+ // Also create an attribute use to contain the attribute, set it to be required,
+ // and add it to Items' attribute contents.
+ //
+ XSDAttributeDeclaration partNum = xsdFactory.createXSDAttributeDeclaration();
+ partNum.setName("partNum");
+ partNum.setTypeDefinition(xsdSchema.resolveSimpleTypeDefinition("SKU"));
+ XSDAttributeUse partNumAttributeUse = xsdFactory.createXSDAttributeUse();
+ partNumAttributeUse.setContent(partNum);
+ partNumAttributeUse.setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ itemsType.getAttributeContents().add(partNumAttributeUse);
+
+ // Set the completed content particle to be the content of the anonymous complex type.
+ //
+ anonymousComplexTypeDefinition.setContent(anonymousTypeDefinitionParticle);
+
+ // Create an element and name it quantity.
+ //
+ XSDElementDeclaration quantity = xsdFactory.createXSDElementDeclaration();
+ quantity.setName("quantity");
+
+ // Create an anonymous simple type and set it to restrict the built-in positiveInteger type.
+ //
+ /*{@link */XSDSimpleTypeDefinition/*}*/ anonymousSimpleTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
+ anonymousSimpleTypeDefinition./*{@link XSDSimpleTypeDefinition#setBaseTypeDefinition */setBaseTypeDefinition/*}*/
+ (xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("positiveInteger"));
+
+ // Create max exclusive facet, set its lexical value to be 100, and add it to the facet contents of the anonymous simple type.
+ //
+ XSDMaxExclusiveFacet quantityMaxExclusiveFacet = xsdFactory.createXSDMaxExclusiveFacet();
+ quantityMaxExclusiveFacet.setLexicalValue("100");
+ anonymousSimpleTypeDefinition.getFacetContents().add(quantityMaxExclusiveFacet);
+
+ // Set the completed anonymous type of the quantity element.
+ //
+ quantity.setAnonymousTypeDefinition(anonymousSimpleTypeDefinition);
+
+ // Create a particle to hold the quantity element and add it to the sequence.
+ //
+ XSDParticle quantityParticle = xsdFactory.createXSDParticle();
+ quantityParticle.setContent(quantity);
+ anonymousComplexTypeDefinitionSequence.getContents().add(quantityParticle);
+
+ // Create an element USPrice of built-in type decimal, a particle to contain it,
+ // and add the particle to the sequence.
+ //
+ XSDElementDeclaration usPrice = xsdFactory.createXSDElementDeclaration();
+ usPrice.setName("USPrice");
+ usPrice.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal"));
+ XSDParticle usPriceParticle = xsdFactory.createXSDParticle();
+ usPriceParticle.setContent(usPrice);
+ anonymousComplexTypeDefinitionSequence.getContents().add(usPriceParticle);
+
+ // Create an element reference to comment, a particle to contain it,
+ // set the particle to be optional, and add the particle to the sequence.
+ //
+ XSDElementDeclaration anotherCommentRef = xsdFactory.createXSDElementDeclaration();
+ anotherCommentRef.setResolvedElementDeclaration(xsdSchema.resolveElementDeclaration("comment"));
+ XSDParticle anotherCommentRefParticle = xsdFactory.createXSDParticle();
+ anotherCommentRefParticle.setMinOccurs(0);
+ anotherCommentRefParticle.setContent(anotherCommentRef);
+ anonymousComplexTypeDefinitionSequence.getContents().add(anotherCommentRefParticle);
+
+ // Create an element USPrice of built-in type Date, a particle to contain it,
+ // set the particle to be optional, and add it to the sequence.
+ //
+ XSDElementDeclaration shipDate = xsdFactory.createXSDElementDeclaration();
+ shipDate.setName("shipDate");
+ shipDate.setTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal"));
+ XSDParticle shipDateParticle = xsdFactory.createXSDParticle();
+ shipDateParticle.setContent(shipDate);
+ shipDateParticle.setMinOccurs(0);
+ anonymousComplexTypeDefinitionSequence.getContents().add(shipDateParticle);
+
+ // Set the completed content particle to be the content of Items.
+ //
+ itemsType.setContent(itemsTypeParticle);
+
+ // Set the completed anonymous type of the item element.
+ //
+ item./*{@link XSDElementDeclaration#setAnonymousTypeDefinition */setAnonymousTypeDefinition/*}*/(anonymousComplexTypeDefinition);
+
+ // Add the completed complex Items to the schema.
+ //
+ xsdSchema.getContents().add(itemsType);
+
+ // Create a simple type, name it Sku, and set it to restrict the built-in type string.
+ //
+ XSDSimpleTypeDefinition sku = xsdFactory.createXSDSimpleTypeDefinition();
+ sku.setName("Sku");
+ sku.setBaseTypeDefinition(xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
+
+ // Create max exclusive facet, set its lexical value to be 100, and add it to the facet contents of Sku.
+ //
+ XSDPatternFacet skuPatternFacet = xsdFactory.createXSDPatternFacet();
+ skuPatternFacet.setLexicalValue("/d{3}-[A-Z]{2}");
+ sku.getFacetContents().add(skuPatternFacet);
+
+ // Add the completed simple Sku to the schema.
+ //
+ xsdSchema.getContents().add(sku);
+
+ // This is the <!-- SAMPLE --> <a name="purchase-order-end">result</a> that is produced.
+ //
+ /// <?xml version="1.0" encoding="UTF-8"?>
+ /// <xsd:schema targetNamespace="http://nist.gov/po.xsd"
+ /// xmlns:po="http://nist.gov/po.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ /// <xsd:annotation>
+ /// <xsd:documentation xml:lang="en">Purchase order schema for
+ /// Example.com. Copyright 2000 Example.com. All rights reserved.</xsd:documentation>
+ /// </xsd:annotation>
+ /// <xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/>
+ /// <xsd:element name="comment" type="xsd:string"/>
+ /// <xsd:complexType name="PurchaseOrderType">
+ /// <xsd:sequence>
+ /// <xsd:element name="shipTo" type="po:USAddress"/>
+ /// <xsd:element name="billTo" type="po:USAddress"/>
+ /// <xsd:element minOccurs="0" ref="po:comment"/>
+ /// </xsd:sequence>
+ /// <xsd:attribute name="orderDate" type="xsd:Date"/>
+ /// </xsd:complexType>
+ /// <xsd:complexType name="USAddress">
+ /// <xsd:sequence>
+ /// <xsd:element name="name" type="xsd:string"/>
+ /// <xsd:element name="street" type="xsd:string"/>
+ /// <xsd:element name="city" type="xsd:string"/>
+ /// <xsd:element name="state" type="xsd:string"/>
+ /// <xsd:element name="zip" type="xsd:string"/>
+ /// </xsd:sequence>
+ /// <xsd:attribute fixed="US" name="country" type="xsd:NMTOKEN"/>
+ /// </xsd:complexType>
+ /// <xsd:complexType name="Items">
+ /// <xsd:sequence>
+ /// <xsd:element name="item">
+ /// <xsd:complexType>
+ /// <xsd:sequence>
+ /// <xsd:element name="productName" type="xsd:string"/>
+ /// <xsd:element name="quantity">
+ /// <xsd:simpleType>
+ /// <xsd:restriction base="xsd:positiveInteger">
+ /// <xsd:maxExclusive value="100"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// </xsd:element>
+ /// <xsd:element name="USPrice" type="xsd:decimal"/>
+ /// <xsd:element minOccurs="0" ref="po:comment"/>
+ /// <xsd:element minOccurs="0" name="shipDate" type="xsd:decimal"/>
+ /// </xsd:sequence>
+ /// </xsd:complexType>
+ /// </xsd:element>
+ /// </xsd:sequence>
+ /// <xsd:attribute name="partNum" type="po:SKU" use="required"/>
+ /// </xsd:complexType>
+ /// <xsd:simpleType name="Sku">
+ /// <xsd:restriction base="xsd:string">
+ /// <xsd:pattern value="/d{3}-[A-Z]{2}"/>
+ /// </xsd:restriction>
+ /// </xsd:simpleType>
+ /// </xsd:schema>
+
+ return xsdSchema;
+ }
+ // <!-- end-purchase-order -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-save-purchase-order -->
+ *{
+ * // Saves the {@link #initializePurchaseOrderSchema Purchase Order Schema} to the given URI.
+ * //
+ * try
+ * {
+ * // Create a resource set and a resource with an extent.
+ * // Add the schema to the extent, add the resource to the set,
+ * // and save the resource.
+ * //
+ * {@link ResourceSet} resourceSet = new {@link ResourceSetImpl}();
+ * {@link Resource} resource = new {@link XSDResourceImpl}(URI.createURI(schemaURI));
+ * resource.{@link Resource#getContents getContents}().add(purchaseOrderSchema);
+ * resourceSet.{@link ResourceSet#getResources() getResources()}.add(resource);
+ * resource.{@link Resource#save(java.util.Map) save}(Collections.EMPTY_MAP);
+ * }
+ * catch (Exception exception)
+ * {
+ * System.out.println(exception.getLocalizedMessage());
+ * exception.printStackTrace();
+ * }
+ *}
+ *<!-- insert-end-save-purchase-order -->
+ *</pre>
+ */
+ public void savePurchaseOrderSchema(String schemaURI)
+ // <!-- begin-save-purchase-order -->
+ {
+ // Saves the {@link #initializePurchaseOrderSchema Purchase Order Schema} to the given URI.
+ //
+ try
+ {
+ // Create a resource set and a resource with an extent.
+ // Add the schema to the extent, add the resource to the set,
+ // and save the resource.
+ //
+ /*{@link */ResourceSet/*}*/ resourceSet = new /*{@link */ResourceSetImpl/*}*/();
+ /*{@link */Resource/*}*/ resource = new /*{@link */XSDResourceImpl/*}*/(URI.createURI(schemaURI));
+ resource./*{@link Resource#getContents */getContents/*}*/().add(purchaseOrderSchema);
+ resourceSet./*{@link ResourceSet#getResources() */getResources()/*}*/.add(resource);
+ resource./*{@link Resource#save(java.util.Map) */save/*}*/(Collections.EMPTY_MAP);
+ }
+ catch (Exception exception)
+ {
+ System.out.println(exception.getLocalizedMessage());
+ exception.printStackTrace();
+ }
+ }
+ // <!-- end-save-purchase-order -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-print-schema -->
+ *{
+ * // Prints the schema loaded from the given URI.
+ * //
+ *
+ * // The code assumes that the following registration has taken place.
+ * // Currently, unless special handling is implemented in the resource set,
+ * // only files ending with a .xsd extension will be loaded as schemas.
+ * //
+ * // Resource.Factory.Registry.{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#INSTANCE INSTANCE}.{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#getExtensionToFactoryMap() getExtensionToFactoryMap}().put("xsd", new {@link XSDResourceFactoryImpl}());
+ *
+ * try
+ * {
+ * // Create a resource set,
+ * // turn on the ability of the {@link XSDParser} to associate line and column information with the DOM,
+ * // and then load the main schema file.
+ * //
+ * {@link ResourceSet} resourceSet = new {@link ResourceSetImpl}();
+ * resourceSet.getLoadOptions().put(XSDResourceImpl.XSD_TRACK_LOCATION, Boolean.TRUE);
+ * {@link XSDResourceImpl} xsdSchemaResource = (XSDResourceImpl)resourceSet.{@link ResourceSet#getResource getResource}(URI.createURI(xsdSchemaURI), true);
+ *
+ * // Iterate over all the resources, i.e., the main resource
+ * // and those that have been included, imported, or redefined.
+ * //
+ * for (Iterator resources = resourceSet.{@link ResourceSet#getResources getResources}().iterator(); resources.hasNext(); )
+ * {
+ * // Check for schema resources.
+ * //
+ * {@link Resource} resource = (Resource)resources.next();
+ * if (resource instanceof XSDResourceImpl)
+ * {
+ * XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+ *
+ * // Get the schema's element and serialized it to System.out.
+ * //
+ * {@link XSDSchema} xsdSchema = xsdResource.{@link XSDResourceImpl#getSchema getSchema}();
+ * System.out.println("\n<!-- *** " + xsdResource.{@link Resource#getURI getURI}() + " *** -->\n");
+ * {@link #printComponent printComponent}(System.out, xsdSchema);
+ *
+ * // If there are no errors from just trying to parse a DOM,
+ * // validate the schema.
+ * //
+ * if (xsdSchema.{@link XSDSchema#getAllDiagnostics getAllDiagnostics}().isEmpty())
+ * {
+ * xsdSchema.validate();
+ * }
+ *
+ * // Process each of the diagnostics.
+ * //
+ * for (Iterator diagnostics = xsdSchema.getAllDiagnostics().iterator(); diagnostics.hasNext(); )
+ * {
+ * {@link XSDDiagnostic} xsdDiagnostic = (XSDDiagnostic)diagnostics.next();
+ * String localizedSeverity =
+ * XSDPlugin.INSTANCE.{@link XSDPlugin#getString(String,Object[]) getString}("_UI_XSDDiagnosticSeverity_" + xsdDiagnostic.{@link XSDDiagnostic#getSeverity getSeverity}());
+ * System.out.println
+ * (XSDPlugin.INSTANCE.getString
+ * ("_UI_DiagnosticFileLineColumn_message",
+ * new Object []
+ * {
+ * localizedSeverity,
+ * xsdDiagnostic.{@link XSDDiagnostic#getLocationURI getLocationURI}(),
+ * new Integer(xsdDiagnostic.{@link XSDDiagnostic#getLine getLine}()),
+ * new Integer(xsdDiagnostic.{@link XSDDiagnostic#getColumn getColumn}())
+ * }));
+ *
+ * System.out.println(xsdDiagnostic.{@link XSDDiagnostic#getMessage getMessage}());
+ * }
+ * }
+ * }
+ * }
+ * catch (Exception exception)
+ * {
+ * System.out.println(exception.getLocalizedMessage());
+ * exception.printStackTrace();
+ * }
+ *}
+ *<!-- insert-end-print-schema -->
+ *</pre>
+ */
+ public void printSchema(String xsdSchemaURI)
+ // <!-- begin-print-schema -->
+ {
+ // Prints the schema loaded from the given URI.
+ //
+
+ // The code assumes that the following registration has taken place.
+ // Currently, unless special handling is implemented in the resource set,
+ // only files ending with a .xsd extension will be loaded as schemas.
+ //
+ // Resource.Factory.Registry./*{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#INSTANCE */INSTANCE/*}*/./*{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#getExtensionToFactoryMap() */getExtensionToFactoryMap/*}*/().put("xsd", new /*{@link */XSDResourceFactoryImpl/*}*/());
+
+ try
+ {
+ // Create a resource set,
+ // turn on the ability of the {@link XSDParser} to associate line and column information with the DOM,
+ // and then load the main schema file.
+ //
+ /*{@link */ResourceSet/*}*/ resourceSet = new /*{@link */ResourceSetImpl/*}*/();
+ resourceSet.getLoadOptions().put(XSDResourceImpl.XSD_TRACK_LOCATION, Boolean.TRUE);
+ resourceSet./*{@link ResourceSet#getResource */getResource/*}*/(URI.createURI(xsdSchemaURI), true);
+
+ // Iterate over all the resources, i.e., the main resource
+ // and those that have been included, imported, or redefined.
+ //
+ for (/*{@link */Resource/*}*/ resource : resourceSet./*{@link ResourceSet#getResources */getResources/*}*/())
+ {
+ // Check for schema resources.
+ //
+ if (resource instanceof XSDResourceImpl)
+ {
+ XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+
+ // Get the schema's element and serialized it to System.out.
+ //
+ /*{@link */XSDSchema/*}*/ xsdSchema = xsdResource./*{@link XSDResourceImpl#getSchema */getSchema/*}*/();
+ System.out.println("\n<" + "!-- *** " + xsdResource./*{@link Resource#getURI */getURI/*}*/() + " *** -->\n");
+ /*{@link #printComponent */printComponent/*}*/(System.out, xsdSchema);
+
+ // If there are no errors from just trying to parse a DOM,
+ // validate the schema.
+ //
+ if (xsdSchema./*{@link XSDSchema#getAllDiagnostics */getAllDiagnostics/*}*/().isEmpty())
+ {
+ xsdSchema.validate();
+ }
+
+ // Process each of the diagnostics.
+ //
+ for (/*{@link */XSDDiagnostic/*}*/ xsdDiagnostic : xsdSchema.getAllDiagnostics())
+ {
+ String localizedSeverity =
+ XSDPlugin.INSTANCE./*{@link XSDPlugin#getString(String,Object[]) */getString/*}*/("_UI_XSDDiagnosticSeverity_" + xsdDiagnostic./*{@link XSDDiagnostic#getSeverity */getSeverity/*}*/());
+ System.out.println
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_DiagnosticFileLineColumn_message",
+ new Object []
+ {
+ localizedSeverity,
+ xsdDiagnostic./*{@link XSDDiagnostic#getLocationURI */getLocationURI/*}*/(),
+ xsdDiagnostic./*{@link XSDDiagnostic#getLine */getLine/*}*/(),
+ xsdDiagnostic./*{@link XSDDiagnostic#getColumn */getColumn/*}*/()
+ }));
+
+ System.out.println(xsdDiagnostic./*{@link XSDDiagnostic#getMessage */getMessage/*}*/());
+ }
+ }
+ }
+ }
+ catch (Exception exception)
+ {
+ System.out.println(exception.getLocalizedMessage());
+ exception.printStackTrace();
+ }
+ }
+ // <!-- end-print-schema -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-print-component -->
+ *{
+ * // Print a component's element using Xerces.
+ * //
+ *
+ * // Get the component's element and create one if there isn't one already.
+ * //
+ * {@link Element} element = xsdConcreteComponent.{@link XSDConcreteComponent#getElement getElement}();
+ * if (element == null)
+ * {
+ * xsdConcreteComponent.{@link XSDConcreteComponent#updateElement updateElement}();
+ * element = xsdConcreteComponent.getElement();
+ * }
+ *
+ * if (element != null)
+ * {
+ * try
+ * {
+ * // OutputFormat outputFormat = new OutputFormat(element.getOwnerDocument());
+ * // outputFormat.setLineWidth(80);
+ * // outputFormat.setIndenting(true);
+ * // outputFormat.setIndent(4);
+ * // outputFormat.setPreserveSpace(false);
+ * // XMLSerializer serializer = new XMLSerializer(outputStream, outputFormat);
+ * // serializer.serialize(element);
+ *
+ * TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ * Transformer transformer = transformerFactory.newTransformer();
+ *
+ * transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ * transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+ *
+ * transformer.transform(new DOMSource(element.getOwnerDocument()), new StreamResult(outputStream));
+ * }
+ * catch (TransformerException exception)
+ * {
+ * System.out.println(exception.getLocalizedMessage());
+ * exception.printStackTrace();
+ * }
+ * }
+ *}
+ *<!-- insert-end-print-component -->
+ *</pre>
+ */
+ public void printComponent(OutputStream outputStream, XSDConcreteComponent xsdConcreteComponent)
+ // <!-- begin-print-component -->
+ {
+ // Print a component's element using Xerces.
+ //
+
+ // Get the component's element and create one if there isn't one already.
+ //
+ /*{@link */Element/*}*/ element = xsdConcreteComponent./*{@link XSDConcreteComponent#getElement */getElement/*}*/();
+ if (element == null)
+ {
+ xsdConcreteComponent./*{@link XSDConcreteComponent#updateElement */updateElement/*}*/();
+ element = xsdConcreteComponent.getElement();
+ }
+
+ if (element != null)
+ {
+ try
+ {
+ // /*{@link */OutputFormat/*}*/ outputFormat = new OutputFormat(element.getOwnerDocument());
+ // outputFormat.setLineWidth(80);
+ // outputFormat.setIndenting(true);
+ // outputFormat.setIndent(4);
+ // outputFormat.setPreserveSpace(false);
+ // /*{@link */XMLSerializer/*}*/ serializer = new XMLSerializer(outputStream, outputFormat);
+ // serializer.serialize(element);
+
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+
+ transformer.transform(new DOMSource(element.getOwnerDocument()), new StreamResult(outputStream));
+ }
+ catch (TransformerException exception)
+ {
+ System.out.println(exception.getLocalizedMessage());
+ exception.printStackTrace();
+ }
+ }
+ }
+ // <!-- end-print-component -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-create-schema -->
+ *{
+ * // Create a schema from an element.
+ * //
+ * // Test if the element is really a schema element.
+ * //
+ * if (element.getLocalName().equals("schema") &&
+ * {@link XSDConstants}.{@link XSDConstants#isSchemaForSchemaNamespace isSchemaForSchemaNamespace}(element.getNamespaceURI()))
+ * {
+ * // Create the schema.
+ * //
+ * {@link XSDSchema} xsdSchema = XSDFactory.eINSTANCE.{@link XSDFactory#createXSDSchema createXSDSchema}();
+ *
+ * // Set the element to the schema.
+ * // This it will build the corresponding component structure.
+ * //
+ * xsdSchema.{@link XSDConcreteComponent#setElement setElement}(element);
+ *
+ * return xsdSchema;
+ * }
+ * else
+ * {
+ * return null;
+ * }
+ *}
+ *<!-- insert-end-create-schema -->
+ *</pre>
+ */
+ public XSDSchema createSchema(Element element)
+ // <!-- begin-create-schema -->
+ {
+ // Create a schema from an element.
+ //
+ // Test if the element is really a schema element.
+ //
+ if (element.getLocalName().equals("schema") &&
+ /*{@link */XSDConstants/*}*/./*{@link XSDConstants#isSchemaForSchemaNamespace */isSchemaForSchemaNamespace/*}*/(element.getNamespaceURI()))
+ {
+ // Create the schema.
+ //
+ /*{@link */XSDSchema/*}*/ xsdSchema = XSDFactory.eINSTANCE./*{@link XSDFactory#createXSDSchema */createXSDSchema/*}*/();
+
+ // Set the element to the schema.
+ // This it will build the corresponding component structure.
+ //
+ xsdSchema./*{@link XSDConcreteComponent#setElement */setElement/*}*/(element);
+
+ return xsdSchema;
+ }
+ else
+ {
+ return null;
+ }
+ }
+ // <!-- end-create-schema -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-trace-loading -->
+ *{
+ * // Traces a resource set's loading behavior when loading the given URI.
+ * //
+ * // The code assumes that the following registration has taken place.
+ * // Currently, unless special handling is implemented in the resource set,
+ * // only files ending with a .xsd extension will be loaded as schemas.
+ * //
+ * // Resource.Factory.Registry.{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#INSTANCE INSTANCE}.{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#getExtensionToFactoryMap() getExtensionToFactoryMap}().put("xsd", new {@link XSDResourceFactoryImpl}());
+ *
+ * try
+ * {
+ * // Create a resource set.
+ * //
+ * {@link ResourceSet} resourceSet =
+ * new {@link ResourceSetImpl}()
+ * {
+ * public Resource getResource({@link URI} uri, boolean loadOnDemand)
+ * {
+ * Resource result = super.{@link ResourceSet#getResource getResource}(uri, true);
+ * System.out.println("<!-- loaded: " + uri + " --> " + result);
+ * return result;
+ * }
+ * };
+ *
+ * // Create a derived URIConverter to track normalization.
+ * //
+ * resourceSet.{@link ResourceSet#getURIConverter getURIConverter}().{@link org.eclipse.emf.ecore.resource.URIConverter#getURIMap getURIMap}().put
+ * (URI.createURI("http://www.example.com/logical.xsd"),
+ * URI.createURI("file://c:/physical.xsd"));
+ *
+ * // Load the schema from the URI.
+ * //
+ * {@link XSDResourceImpl} xsdSchemaResource = (XSDResourceImpl)resourceSet.getResource(URI.createURI(xsdSchemaURI), true);
+ *
+ * // Iterate over all the resources, i.e., the main resource
+ * // and those that have been included, imported, or redefined.
+ * //
+ * for (Iterator resources = resourceSet.{@link ResourceSet#getResources getResources}().iterator(); resources.hasNext(); )
+ * {
+ * // Check for schema resources.
+ * //
+ * {@link Resource} resource = (Resource)resources.next();
+ * if (resource instanceof XSDResourceImpl)
+ * {
+ * XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+ *
+ * // Iterate over the schema's content's looking for directives.
+ * //
+ * {@link XSDSchema} xsdSchema = xsdResource.{@link XSDResourceImpl#getSchema getSchema}();
+ * for (Iterator contents = xsdSchema.{@link XSDSchema#getContents getContents}().iterator(); contents.hasNext(); )
+ * {
+ * {@link XSDSchemaContent} xsdSchemaContent = (XSDSchemaContent)contents.next();
+ * if (xsdSchemaContent instanceof {@link XSDSchemaDirective})
+ * {
+ * // Check if the directive resolved to a schema.
+ * //
+ * XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)xsdSchemaContent;
+ * if (xsdSchemaDirective.{@link XSDSchemaDirective#getResolvedSchema getResolvedSchema}() == null)
+ * {
+ * System.out.println("Unresolved schema in " + xsdResource.{@link Resource#getURI getURI}());
+ * {@link #printComponent printComponent}(System.out, xsdSchemaDirective);
+ * }
+ * }
+ * }
+ * }
+ * }
+ * }
+ * catch (Exception exception)
+ * {
+ * System.out.println(exception.getLocalizedMessage());
+ * exception.printStackTrace();
+ * }
+ *}
+ *<!-- insert-end-trace-loading -->
+ *</pre>
+ */
+ public void traceLoading(String xsdSchemaURI)
+ // <!-- begin-trace-loading -->
+ {
+ // Traces a resource set's loading behavior when loading the given URI.
+ //
+ // The code assumes that the following registration has taken place.
+ // Currently, unless special handling is implemented in the resource set,
+ // only files ending with a .xsd extension will be loaded as schemas.
+ //
+ // Resource.Factory.Registry./*{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#INSTANCE */INSTANCE/*}*/./*{@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#getExtensionToFactoryMap() */getExtensionToFactoryMap/*}*/().put("xsd", new /*{@link */XSDResourceFactoryImpl/*}*/());
+
+ try
+ {
+ // Create a resource set.
+ //
+ /*{@link */ResourceSet/*}*/ resourceSet =
+ new /*{@link */ResourceSetImpl/*}*/()
+ {
+ @Override
+ public Resource getResource(/*{@link */URI/*}*/ uri, boolean loadOnDemand)
+ {
+ Resource result = super./*{@link ResourceSet#getResource */getResource/*}*/(uri, true);
+ System.out.println("<" + "!-- loaded: " + uri + " --> " + result);
+ return result;
+ }
+ };
+
+ // Create a derived URIConverter to track normalization.
+ //
+ resourceSet./*{@link ResourceSet#getURIConverter */getURIConverter/*}*/()./*{@link URIConverter#getURIMap */getURIMap/*}*/().put
+ (URI.createURI("http://www.example.com/logical.xsd"),
+ URI.createURI("file://c:/physical.xsd"));
+
+ // Load the schema from the URI.
+ //
+ resourceSet.getResource(URI.createURI(xsdSchemaURI), true);
+
+ // Iterate over all the resources, i.e., the main resource
+ // and those that have been included, imported, or redefined.
+ //
+ for (/*{@link */Resource/*}*/ resource : resourceSet./*{@link ResourceSet#getResources */getResources/*}*/())
+ {
+ // Check for schema resources.
+ //
+ if (resource instanceof XSDResourceImpl)
+ {
+ XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+
+ // Iterate over the schema's content's looking for directives.
+ //
+ /*{@link */XSDSchema/*}*/ xsdSchema = xsdResource./*{@link XSDResourceImpl#getSchema */getSchema/*}*/();
+ for (/*{@link */XSDSchemaContent/*}*/ xsdSchemaContent : xsdSchema./*{@link XSDSchema#getContents */getContents/*}*/())
+ {
+ if (xsdSchemaContent instanceof /*{@link */XSDSchemaDirective/*}*/)
+ {
+ // Check if the directive resolved to a schema.
+ //
+ XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)xsdSchemaContent;
+ if (xsdSchemaDirective./*{@link XSDSchemaDirective#getResolvedSchema */getResolvedSchema/*}*/() == null)
+ {
+ System.out.println("Unresolved schema in " + xsdResource./*{@link Resource#getURI */getURI/*}*/());
+ /*{@link #printComponent */printComponent/*}*/(System.out, xsdSchemaDirective);
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (Exception exception)
+ {
+ System.out.println(exception.getLocalizedMessage());
+ exception.printStackTrace();
+ }
+ }
+ // <!-- end-trace-loading -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-clone-component -->
+ *{
+ * // A component can be cloned directly or by cloning the underlying DOM.
+ * // By cloning the DOM you ensure that <annotation>s, non-schema namespace attributes, and formatting are preserved.
+ * //
+ * if (preserveDOM)
+ * {
+ * // If there is an element to clone.
+ * //
+ * Element element = xsdConcreteComponent.{@link XSDConcreteComponent#getElement() }getElement();
+ * if (element != null)
+ * {
+ * // Clone the DOM using the DOM API, and create the same type of component to hold it.
+ * //
+ * Element clonedElement = (Element)element.cloneNode(true);
+ * XSDConcreteComponent result = (XSDConcreteComponent)XSDFactory.eINSTANCE.create(xsdConcreteComponent.eClass());
+ * result.setElement(clonedElement);
+ * return result;
+ * }
+ * }
+ *
+ * // Clone just the model itself so that a new DOM will need to be created to serialize it.
+ * //
+ * XSDConcreteComponent result = xsdConcreteComponent.cloneConcreteComponent(true, false);
+ * return result;
+ *}
+ *<!-- insert-end-clone-component -->
+ *</pre>
+ */
+ public XSDConcreteComponent cloneComponent(XSDConcreteComponent xsdConcreteComponent, boolean preserveDOM)
+ // <!-- begin-clone-component -->
+ {
+ // A component can be cloned directly or by cloning the underlying DOM.
+ // By cloning the DOM you ensure that <annotation>s, non-schema namespace attributes, and formatting are preserved.
+ //
+ if (preserveDOM)
+ {
+ // If there is an element to clone.
+ //
+ Element element = xsdConcreteComponent./*{@link XSDConcreteComponent#getElement() /*}*/getElement();
+ if (element != null)
+ {
+ // Clone the DOM using the DOM API, and create the same type of component to hold it.
+ //
+ Element clonedElement = (Element)element.cloneNode(true);
+ XSDConcreteComponent result = (XSDConcreteComponent)XSDFactory.eINSTANCE.create(xsdConcreteComponent.eClass());
+ result.setElement(clonedElement);
+ return result;
+ }
+ }
+
+ // Clone just the model itself so that a new DOM will need to be created to serialize it.
+ //
+ XSDConcreteComponent result = xsdConcreteComponent.cloneConcreteComponent(true, false);
+ return result;
+ }
+ // <!-- end-clone-component -->
+
+ /**
+ *<pre>
+ *<!-- insert-begin-cross-reference-test -->
+ *{
+ * // Test cross references for the meta schemas.
+ * //
+ * XSDSchema xsdSchemaForSchema = XSDUtil.{@link XSDUtil#getSchemaForSchema getSchemaForSchema}(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ * ResourceSet resourceSet = xsdSchemaForSchema.{@link org.eclipse.emf.ecore.EObject#eResource() eResource}().{@link Resource#getResourceSet getResourceSet}();
+ *
+ * out.println("Show uses of the string datatype within the meta schemas themselves.");
+ * Collection usages = {@link XSDUtil.UsageCrossReferencer XSDUtil.UsageCrossReferencer}.find(xsdSchemaForSchema.resolveSimpleTypeDefinition("string"), resourceSet);
+ * XSDUtil.UsageCrossReferencer.print(out, usages);
+ *
+ * out.println("Show uses of the ur-type URI");
+ * Map xsdURICrossReferences = {@link XSDUtil.URICrossReferencer XSDUtil.URICrossReferencer}.find(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001 + "#anyType", resourceSet);
+ * XSDUtil.URICrossReferencer.print(out, xsdURICrossReferences);
+ *
+ * out.println("Show all named components and their uses in the schema of the anySimpleType.");
+ * Map xsdNamedComponentUsage =
+ * {@link XSDUtil.XSDNamedComponentCrossReferencer XSDUtil.XSDNamedComponentCrossReferencer}.find(xsdSchemaForSchema.resolveSimpleTypeDefinition("anySimpleType").getSchema());
+ * XSDUtil.XSDNamedComponentCrossReferencer.print(out, xsdNamedComponentUsage);
+ *
+ * out.println("Test that the URI of evey object in the schema for schemas can be resolved.");
+ * for (Iterator contents = xsdSchemaForSchema.{@link org.eclipse.emf.ecore.EObject#eAllContents() eAllContents}(); contents.hasNext(); )
+ * {
+ * XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)contents.next();
+ * URI uri = EcoreUtil.{@link EcoreUtil#getURI getURI}(xsdConcreteComponent);
+ * if (resourceSet.{@link ResourceSet#getEObject getEObject}(uri, false) != xsdConcreteComponent)
+ * {
+ * out.println("BAD URI: " + uri);
+ * }
+ * }
+ *}
+ *<!-- insert-end-cross-reference-test -->
+ *</pre>
+ */
+ public void crossReferenceTest(PrintStream out)
+ // <!-- begin-cross-reference-test -->
+ {
+ // Test cross references for the meta schemas.
+ //
+ XSDSchema xsdSchemaForSchema = XSDUtil./*{@link XSDUtil#getSchemaForSchema */getSchemaForSchema/*}*/(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ ResourceSet resourceSet = xsdSchemaForSchema./*{@link EObject#eResource */eResource/*}*/()./*{@link Resource#getResourceSet */getResourceSet/*}*/();
+
+ out.println("Show uses of the string datatype within the meta schemas themselves.");
+ Collection<EStructuralFeature.Setting> usages = /*{@link XSDUtil.UsageCrossReferencer */XSDUtil.UsageCrossReferencer/*}*/.find(xsdSchemaForSchema.resolveSimpleTypeDefinition("string"), resourceSet);
+ EcoreUtil.CrossReferencer.print(out, usages);
+
+ out.println("Show uses of the ur-type URI");
+ Map<EObject, Collection<EStructuralFeature.Setting>> xsdURICrossReferences = /*{@link XSDUtil.URICrossReferencer */XSDUtil.URICrossReferencer/*}*/.find(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001 + "#anyType", resourceSet);
+ EcoreUtil.CrossReferencer.print(out, xsdURICrossReferences);
+
+ out.println("Show all named components and their uses in the schema of the anySimpleType.");
+ Map<EObject, Collection<EStructuralFeature.Setting>> xsdNamedComponentUsage =
+ /*{@link XSDUtil.XSDNamedComponentCrossReferencer */XSDUtil.XSDNamedComponentCrossReferencer/*}*/.find(xsdSchemaForSchema.resolveSimpleTypeDefinition("anySimpleType").getSchema());
+ EcoreUtil.CrossReferencer.print(out, xsdNamedComponentUsage);
+
+ out.println("Test that the URI of evey object in the schema for schemas can be resolved.");
+ for (Iterator<EObject> contents = xsdSchemaForSchema./*{@link EObject#eAllContents */eAllContents/*}*/(); contents.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)contents.next();
+ URI uri = EcoreUtil./*{@link EcoreUtil#getURI */getURI/*}*/(xsdConcreteComponent);
+ if (resourceSet./*{@link ResourceSet#getEObject */getEObject/*}*/(uri, false) != xsdConcreteComponent)
+ {
+ out.println("BAD URI: " + uri);
+ }
+ }
+ }
+ // <!-- end-cross-reference-test -->
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDResourceFactoryImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDResourceFactoryImpl.java
new file mode 100644
index 0000000..eb385b6
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDResourceFactoryImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+
+/**
+ * The <b>Resource Factory</b> implementation for the model.
+ * This class is the XSD resource factory that knows how to parse .xsd files to produce a MOF model.
+ * This class is not intended for subclassing outside of the model implementation;
+ * it is intended to be used as is with the Resource framework.
+ * @see XSDResourceImpl
+ * @see XSDParser
+ */
+public class XSDResourceFactoryImpl extends ResourceFactoryImpl
+{
+ /**
+ * Creates an instance.
+ */
+ public XSDResourceFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * Creates an {@link XSDResourceImpl}.
+ * @param uri the URI of the new resource.
+ * @return an XSDResourceImpl.
+ */
+ @Override
+ public Resource createResource(URI uri)
+ {
+ return new XSDResourceImpl(uri);
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDResourceImpl.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDResourceImpl.java
new file mode 100644
index 0000000..1683745
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDResourceImpl.java
@@ -0,0 +1,930 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+
+/**
+ * The <b>Resource</b> implementation for the model.
+ * This specialized resource implementation supports it's own way of making keys and hrefs, and it's own serialization.
+ * This class is not intended for subclassing outside of the model implementation;
+ * it is intended to be used as is with the Resource framework.
+ */
+public class XSDResourceImpl extends ResourceImpl
+{
+ public static String XSD_TRACK_LOCATION = "XSD_TRACK_LOCATION";
+
+ public static String XSD_PROGRESS_MONITOR = "XSD_PROGRESS_MONITOR";
+
+ public static String XSD_ENCODING = "XSD_ENCODING";
+
+ /**
+ * This option can be used as an option on Resource#load methods to specify JAXP pool to be used
+ * for loading and serializing XML Schemas.
+ * @see Resource#load(InputStream, Map)
+ * @see Resource#load(Map)
+ */
+ public static String XSD_JAXP_POOL = "XSD_JAXP_POOL";
+
+ /**
+ * This option can be used as an option on Resource#load methods to specify JAXP configuration
+ * that creates and configures SAX, DOM parsers and Transformer.
+ * @see Resource#load(InputStream, Map)
+ * @see Resource#load(Map)
+ */
+ public static String XSD_JAXP_CONFIG = "XSD_JAXP_CONFIG";
+
+ public static class SchemaLocator extends AdapterImpl implements XSDSchemaLocator
+ {
+ public XSDSchema locateSchema(XSDSchema xsdSchema, String namespaceURI, String rawSchemaLocationURI, String resolvedSchemaLocation)
+ {
+ if (rawSchemaLocationURI == null)
+ {
+ Resource resource = xsdSchema.eResource();
+ if (resource != null)
+ {
+ for (Iterator<?> i = resource.getContents().iterator(); i.hasNext(); )
+ {
+ XSDSchema otherSchema = (XSDSchema)i.next();
+ if (namespaceURI == null ? otherSchema.getTargetNamespace() == null : namespaceURI.equals(otherSchema.getTargetNamespace()))
+ {
+ return otherSchema;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isAdapterForType(Object type)
+ {
+ return type == XSDSchemaLocator.class;
+ }
+ }
+
+ protected static final SchemaLocator SCHEMA_LOCATOR = new SchemaLocator();
+
+ public static void serialize(OutputStream outputStream, Element element)
+ {
+ serialize(outputStream, element, null);
+ }
+
+ public static void serialize(OutputStream outputStream, Element element, String encoding)
+ {
+ try
+ {
+ doSerialize(outputStream, element, encoding);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ }
+
+ protected static void doSerialize(OutputStream outputStream, Element element) throws IOException
+ {
+ doSerialize(outputStream, element, null);
+ }
+
+ protected static void doSerialize(OutputStream outputStream, Element element, String encoding) throws IOException
+ {
+ try
+ {
+ Transformer transformer = new DefaultJAXPConfiguration().createTransformer(encoding);
+ // Be sure to use actual encoding of the transformer which might be non-null even if encoding started as null.
+ encoding = transformer.getOutputProperty(OutputKeys.ENCODING);
+ Writer writer = encoding == null ? new OutputStreamWriter(outputStream) : new OutputStreamWriter(outputStream, encoding);
+ transformer.transform(new DOMSource(element), new StreamResult(writer));
+ }
+ catch (TransformerException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ public static void serialize(OutputStream outputStream, Document document)
+ {
+ serialize(outputStream, document, null);
+ }
+
+ public static void serialize(OutputStream outputStream, Document document, String encoding)
+ {
+ try
+ {
+ doSerialize(outputStream, document, encoding);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ }
+
+ /**
+ * @deprecated since 2.2
+ * @see #doSerialize(OutputStream, Document, Map)
+ * @param outputStream
+ * @param document
+ * @see #doSerialize(OutputStream, Document, Map)
+ * @throws IOException
+ */
+ @Deprecated
+ protected static void doSerialize(OutputStream outputStream, Document document) throws IOException
+ {
+ doSerialize(outputStream, document, Collections.EMPTY_MAP);
+ }
+
+ protected static void doSerialize(OutputStream outputStream, Document document, Map<?, ?> options) throws IOException
+ {
+ JAXPPool jaxpPool = null;
+ JAXPConfiguration config = null;
+ String encoding = null;
+ if (options != null)
+ {
+ jaxpPool = (JAXPPool)options.get(XSDResourceImpl.XSD_JAXP_POOL);
+ config = (JAXPConfiguration)options.get(XSDResourceImpl.XSD_JAXP_CONFIG);
+ encoding = (String)options.get(XSD_ENCODING);
+ }
+
+ if (jaxpPool == null)
+ {
+ if (config == null)
+ {
+ doSerialize(outputStream, document, encoding);
+ }
+ else
+ {
+ try
+ {
+ Transformer transformer = config.createTransformer(encoding);
+ // Be sure to use actual encoding of the transformer which might be non-null even if encoding started as null.
+ encoding = transformer.getOutputProperty(OutputKeys.ENCODING);
+ Writer writer = encoding == null ? new OutputStreamWriter(outputStream) : new OutputStreamWriter(outputStream, encoding);
+ transformer.transform(new DOMSource(document), new StreamResult(writer));
+ }
+ catch (TransformerException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ }
+ }
+ else
+ {
+ Transformer transformer = null;
+ try
+ {
+ transformer = jaxpPool.getTransformer(encoding);
+ Writer writer = encoding == null ? new OutputStreamWriter(outputStream) : new OutputStreamWriter(outputStream, encoding);
+ transformer.transform(new DOMSource(document), new StreamResult(writer));
+ }
+ catch (TransformerException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ finally
+ {
+ jaxpPool.releaseTransformer(transformer);
+ }
+ }
+ }
+
+ /**
+ * @deprecated since 2.2
+ * @see #doSerialize(OutputStream, Document, Map)
+ * @param outputStream
+ * @param document
+ * @param encoding
+ * @throws IOException
+ */
+ @Deprecated
+ protected static void doSerialize(OutputStream outputStream, Document document, String encoding) throws IOException
+ {
+ try
+ {
+ Transformer transformer = new DefaultJAXPConfiguration().createTransformer(encoding);
+ // Be sure to use actual encoding of the transformer which might be non-null even if encoding started as null.
+ encoding = transformer.getOutputProperty(OutputKeys.ENCODING);
+ Writer writer = encoding == null ? new OutputStreamWriter(outputStream) : new OutputStreamWriter(outputStream, encoding);
+ transformer.transform(new DOMSource(document), new StreamResult(writer));
+ }
+ catch (TransformerException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ protected static void doSerialize(Writer writer, Document document, Map<?, ?> options) throws IOException
+ {
+ JAXPPool jaxpPool = null;
+ JAXPConfiguration config = null;
+ String encoding = null;
+ if (options != null)
+ {
+ jaxpPool = (JAXPPool)options.get(XSDResourceImpl.XSD_JAXP_POOL);
+ config = (JAXPConfiguration)options.get(XSDResourceImpl.XSD_JAXP_CONFIG);
+ encoding = (String)options.get(XSD_ENCODING);
+ }
+
+ if (jaxpPool == null)
+ {
+ try
+ {
+ if (config == null)
+ {
+ new DefaultJAXPConfiguration().createTransformer(encoding).transform(new DOMSource(document), new StreamResult(writer));
+ }
+ else
+ {
+ config.createTransformer(encoding).transform(new DOMSource(document), new StreamResult(writer));
+ }
+ }
+ catch (TransformerException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ }
+ else
+ {
+ Transformer transformer = null;
+ try
+ {
+ transformer = jaxpPool.getTransformer(encoding);
+ transformer.transform(new DOMSource(document), new StreamResult(writer));
+ }
+ catch (TransformerException exception)
+ {
+ XSDPlugin.INSTANCE.log(exception);
+ }
+ finally
+ {
+ jaxpPool.releaseTransformer(transformer);
+ }
+ }
+ }
+
+ /**
+ * Builds a document using default JAXP.
+ * @deprecated since 2.2
+ * @see #getDocument(InputSource, ErrorHandler, Map)
+ * @param inputSource the contents to parse.
+ * @param errorHandler the handled used by the parser.
+ * @return a document.
+ */
+ @Deprecated
+ protected static Document getDocument(InputSource inputSource, ErrorHandler errorHandler) throws IOException
+ {
+ try
+ {
+ DocumentBuilder documentBuilder = new DefaultJAXPConfiguration().createDocumentBuilder(errorHandler);
+ Document document = documentBuilder.parse(inputSource);
+ return document;
+ }
+ catch (ParserConfigurationException exception)
+ {
+ throw new IOWrappedException(exception);
+ }
+ catch (SAXException exception)
+ {
+ throw new IOWrappedException(exception);
+ }
+ }
+
+ /**
+ * Builds DOM document using JAXP DocumentBuilder
+ * @see #XSD_JAXP_POOL
+ * @see #XSD_JAXP_CONFIG
+ * @param inputSource the content to parser
+ * @param errorHandler error handler for recording any loading errors
+ * @param options loading options
+ * @return document DOM document
+ * @throws IOException
+ */
+ protected static Document getDocument(InputSource inputSource, ErrorHandler errorHandler, Map<?, ?> options) throws IOException
+ {
+ JAXPPool jaxpPool = null;
+ JAXPConfiguration config = null;
+ if (options != null)
+ {
+ jaxpPool = (JAXPPool)options.get(XSDResourceImpl.XSD_JAXP_POOL);
+ config = (JAXPConfiguration)options.get(XSDResourceImpl.XSD_JAXP_CONFIG);
+ }
+
+ if (jaxpPool == null)
+ {
+ if (config == null)
+ {
+ return getDocument(inputSource, errorHandler);
+ }
+ else
+ {
+ try
+ {
+ DocumentBuilder documentBuilder = config.createDocumentBuilder(errorHandler);
+ Document document = documentBuilder.parse(inputSource);
+ return document;
+ }
+ catch (ParserConfigurationException exception)
+ {
+ throw new IOWrappedException(exception);
+ }
+ catch (SAXException exception)
+ {
+ throw new IOWrappedException(exception);
+ }
+ }
+ }
+ else
+ {
+ DocumentBuilder documentBuilder = null;
+ try
+ {
+ documentBuilder = jaxpPool.getDocumentBuilder(errorHandler);
+ Document document = documentBuilder.parse(inputSource);
+ return document;
+ }
+ catch (ParserConfigurationException exception)
+ {
+ throw new IOWrappedException(exception);
+ }
+ catch (SAXException exception)
+ {
+ throw new IOWrappedException(exception);
+ }
+ finally
+ {
+ jaxpPool.releaseDocumentBuilder(documentBuilder);
+ }
+ }
+ }
+
+ /**
+ * @deprecated since 2.2
+ * @see #getDocument(InputSource, ErrorHandler, Map)
+ * Builds a document using default JAXP implementation.
+ * @param inputStream the contents to parse.
+ * @param errorHandler the handled used by the parser.
+ * @return a document.
+ */
+ @Deprecated
+ protected static Document getDocument(InputStream inputStream, ErrorHandler errorHandler) throws IOException
+ {
+ return getDocument(new InputSource(inputStream), errorHandler);
+ }
+
+ /**
+ * Creates an EntityResovler that can be used to help with parsing schema documents.
+ * @return an EntityResolver.
+ */
+ protected static EntityResolver createEntityResolver()
+ {
+ final String baseURL = XSDPlugin.INSTANCE.getBaseURL().toString();
+
+ // Create a catalog with an entity mapping URL for the cached DTD for XML Schemas and set to into the build.
+ //
+ EntityResolver entityResolver =
+ new DefaultHandler()
+ {
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException
+ {
+ InputSource inputSource;
+ if ("-//W3C//DTD XMLSCHEMA 200102//EN".equalsIgnoreCase(publicId) || "http://www.w3.org/2001/XMLSchema.dtd".equalsIgnoreCase(systemId))
+ {
+ inputSource = new InputSource(baseURL + "cache/www.w3.org/2001/XMLSchema.dtd");
+ inputSource.setPublicId(publicId);
+ }
+ else if (systemId != null && systemId.startsWith("file://bundleentry:"))
+ {
+ inputSource = new InputSource(systemId.substring(7));
+ inputSource.setPublicId(publicId);
+ }
+ else
+ {
+ try
+ {
+ inputSource = super.resolveEntity(publicId, systemId);
+ }
+ catch (IOException exception)
+ {
+ throw new SAXException(exception);
+ }
+ }
+
+ return inputSource;
+ }
+ };
+
+ return entityResolver;
+ }
+
+ /**
+ * Assigns diagnostics to a schema.
+ * @param xsdSchema the schema.
+ * @param xsdDiagnostics the {@link XSDDiagnostic}s.
+ */
+ protected static void assignDiagnostics(XSDSchema xsdSchema, Collection<XSDDiagnostic> xsdDiagnostics)
+ {
+ if (!xsdDiagnostics.isEmpty())
+ {
+ xsdSchema.getDiagnostics().addAll(xsdDiagnostics);
+ for (XSDDiagnostic xsdDiagnostic : xsdDiagnostics)
+ {
+ xsdDiagnostic.getComponents().add(xsdSchema);
+ if (xsdSchema.getElement() != null)
+ {
+ xsdDiagnostic.setNode(xsdSchema.getElement());
+ }
+ }
+ }
+ }
+
+ protected Collection<XSDSchema> attachedSchemas;
+
+ public XSDResourceImpl()
+ {
+ super();
+ }
+
+ public XSDResourceImpl(URI uri)
+ {
+ super(uri);
+ }
+
+ @Override
+ protected void doSave(OutputStream os, Map<?, ?> options) throws IOException
+ {
+ if (os instanceof URIConverter.WriteableOutputStream)
+ {
+ doSave(((URIConverter.WriteableOutputStream)os).asWriter(), options);
+ }
+ else
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ Document document = xsdSchema.getDocument();
+ if (document == null)
+ {
+ xsdSchema.updateDocument();
+ document = xsdSchema.getDocument();
+ }
+
+ if (xsdSchema.getElement() == null)
+ {
+ xsdSchema.updateElement();
+ }
+
+ doSerialize(os, document, options);
+ }
+ }
+ }
+
+ /**
+ * Saves the resource to the writer using the specified options.
+ * @param writer the writer
+ * @param options the save options.
+ */
+ public final void save(Writer writer, Map<?, ?> options) throws IOException
+ {
+ if (defaultSaveOptions == null || defaultSaveOptions.isEmpty())
+ {
+ doSave(writer, options);
+ }
+ else if (options == null)
+ {
+ doSave(writer, defaultSaveOptions);
+ }
+ else
+ {
+ Map<Object, Object> mergedOptions = new HashMap<Object, Object>(defaultSaveOptions);
+ mergedOptions.putAll(options);
+ doSave(writer, mergedOptions);
+ }
+ setModified(false);
+ }
+
+
+ protected void doSave(Writer writer, Map<?, ?> options) throws IOException
+ {
+ XSDSchema xsdSchema = getSchema();
+ if (xsdSchema != null)
+ {
+ Document document = xsdSchema.getDocument();
+ if (document == null)
+ {
+ xsdSchema.updateDocument();
+ document = xsdSchema.getDocument();
+ }
+
+ if (xsdSchema.getElement() == null)
+ {
+ xsdSchema.updateElement();
+ }
+ doSerialize(writer, document, options);
+ }
+ }
+
+ /**
+ * This gets the resource's schema.
+ */
+ public XSDSchema getSchema()
+ {
+ return
+ getContents().size() >= 1 && getContents().get(0) instanceof XSDSchema ?
+ (XSDSchema)getContents().get(0) :
+ null;
+ }
+
+ public final void load(InputSource inputSource, Map<?, ?> options) throws IOException
+ {
+ if (!isLoaded)
+ {
+ Notification notification = setLoaded(true);
+ isLoading = true;
+
+ if (errors != null)
+ {
+ errors.clear();
+ }
+
+ if (warnings != null)
+ {
+ warnings.clear();
+ }
+
+ try
+ {
+ if (defaultLoadOptions == null || defaultLoadOptions.isEmpty())
+ {
+ doLoad(inputSource, options);
+ }
+ else if (options == null)
+ {
+ doLoad(inputSource, defaultLoadOptions);
+ }
+ else
+ {
+ Map<Object, Object> mergedOptions = new HashMap<Object, Object>(defaultLoadOptions);
+ mergedOptions.putAll(options);
+
+ doLoad(inputSource, mergedOptions);
+ }
+ }
+ finally
+ {
+ isLoading = false;
+
+ if (notification != null)
+ {
+ eNotify(notification);
+ }
+
+ setModified(false);
+ }
+ }
+ }
+
+ protected void doLoad(InputSource inputSource, Map<?, ?> options) throws IOException
+ {
+ attachedSchemas = new ArrayList<XSDSchema>();
+
+ // This pattern avoids loading the IProgressMonitor class when there is no progress monitor.
+ // This is important for stand-alone execution to work correctly.
+ //
+ IProgressMonitor progressMonitor = null;
+ Object monitor = options == null ? null : options.get("XSD_PROGRESS_MONITOR");
+ if (monitor != null)
+ {
+ progressMonitor = (IProgressMonitor)monitor;
+ progressMonitor.setTaskName(XSDPlugin.INSTANCE.getString("_UI_ResourceLoad_progress"));
+ progressMonitor.subTask(getURI().toString());
+ }
+
+ IOException ioException = null;
+ Collection<XSDDiagnostic> errors = null;
+ try
+ {
+ Document document;
+
+ if (options != null && Boolean.TRUE.equals(options.get("XSD_TRACK_LOCATION")))
+ {
+ XSDParser xsdParser = new XSDParser(options);
+ xsdParser.parse(inputSource);
+ document = xsdParser.getDocument();
+ if (xsdParser.getEncoding() != null)
+ {
+ getDefaultSaveOptions().put(XSD_ENCODING, xsdParser.getEncoding());
+ }
+ errors = xsdParser.getDiagnostics();
+ }
+ else
+ {
+ DefaultErrorHandler errorHandler = new DefaultErrorHandler();
+ try
+ {
+ document = getDocument(inputSource, errorHandler, options);
+ }
+ finally
+ {
+ errors = errorHandler.getDiagnostics();
+ }
+ }
+
+ if (document != null && document.getDocumentElement() != null)
+ {
+ ResourceSet globalResourceSet = XSDSchemaImpl.getGlobalResourceSet();
+ Object oldMonitor = globalResourceSet.getLoadOptions().get("XSD_PROGRESS_MONITOR");
+ try
+ {
+ XSDSchemaImpl.getGlobalResourceSet().getLoadOptions().put("XSD_PROGRESS_MONITOR", progressMonitor);
+ if (options != null && (options.containsKey("XSD_MAGIC_XML_SCHEMA") || options.containsKey("XSD_XML_SCHEMA")))
+ {
+ handleSchemaElement(document.getDocumentElement(), true);
+ }
+ else if (!findSchemas(document.getDocumentElement()))
+ {
+ handleSchemaElement(document.getDocumentElement(), false);
+ }
+ }
+ finally
+ {
+ XSDSchemaImpl.getGlobalResourceSet().getLoadOptions().put("XSD_PROGRESS_MONITOR", oldMonitor);
+ }
+ }
+ else
+ {
+ handleSchemaElement(null, false);
+ }
+ }
+ catch (IOException exception)
+ {
+ handleSchemaElement(null, false);
+ ioException = exception;
+ }
+
+ if (errors != null)
+ {
+ for (Iterator<?> i = getContents().iterator(); i.hasNext();)
+ {
+ XSDSchema xsdSchema = (XSDSchema)i.next();
+ assignDiagnostics(xsdSchema, errors);
+
+ for (XSDDiagnostic xsdDiagnostic : errors)
+ {
+ switch (xsdDiagnostic.getSeverity().getValue())
+ {
+ case XSDDiagnosticSeverity.FATAL:
+ case XSDDiagnosticSeverity.ERROR:
+ {
+ getErrors().add(xsdDiagnostic);
+ break;
+ }
+ case XSDDiagnosticSeverity.WARNING:
+ case XSDDiagnosticSeverity.INFORMATION:
+ {
+ getWarnings().add(xsdDiagnostic);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (getContents().size() > 1)
+ {
+ eAdapters().add(SCHEMA_LOCATOR);
+ }
+
+ String schemaLocation = getURI().toString();
+ Collection<XSDSchema> previouslyAttachedSchemas = attachedSchemas;
+ attachedSchemas = null;
+ for (XSDSchema xsdSchema : previouslyAttachedSchemas)
+ {
+ xsdSchema.setSchemaLocation(schemaLocation);
+ }
+
+ if (progressMonitor != null)
+ {
+ progressMonitor.worked(1);
+ }
+
+ if (ioException != null)
+ {
+ throw ioException;
+ }
+ }
+
+ /**
+ * Loads a new {@link XSDResourceImpl} into the resource set.
+ * @param inputStream the contents of the new resource.
+ * @param options any options to influence loading behavior.
+ */
+ @Override
+ protected void doLoad(InputStream inputStream, Map<?, ?> options) throws IOException
+ {
+ InputSource inputSource =
+ inputStream instanceof URIConverter.ReadableInputStream ?
+ new InputSource(((URIConverter.ReadableInputStream)inputStream).asReader()) :
+ new InputSource(inputStream);
+
+ if (getURI() != null)
+ {
+ String id = getURI().toString();
+ inputSource.setPublicId(id);
+ inputSource.setSystemId(id);
+ }
+ doLoad(inputSource, options);
+ }
+
+ protected boolean findSchemas(Element element)
+ {
+ if (XSDConstants.nodeType(element) == XSDConstants.SCHEMA_ELEMENT)
+ {
+ handleSchemaElement(element, false);
+ return true;
+ }
+ else
+ {
+ boolean result = false;
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ if (child instanceof Element)
+ {
+ if (findSchemas((Element)child))
+ {
+ result = true;
+ }
+ }
+ }
+ return result;
+ }
+ }
+
+ protected void handleSchemaElement(Element element, boolean isMeta)
+ {
+ XSDSchema xsdSchema;
+ if (element == null)
+ {
+ xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
+ xsdSchema.getQNamePrefixToNamespaceMap().put(null, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ }
+ else if (isMeta)
+ {
+ xsdSchema = XSDSchemaImpl.createMetaSchema(element);
+ }
+ else
+ {
+ xsdSchema = XSDSchemaImpl.createSchema(element);
+ }
+ getContents().add(xsdSchema);
+ }
+
+ @Override
+ public void attached(EObject eObject)
+ {
+ super.attached(eObject);
+
+ if (eObject instanceof XSDSchema)
+ {
+ if (attachedSchemas != null)
+ {
+ attachedSchemas.add((XSDSchema)eObject);
+ }
+ else if (!(eObject instanceof XSDSchemaImpl) || ((XSDSchemaImpl)eObject).getPendingSchemaLocation() == null)
+ {
+ ((XSDSchema)eObject).setSchemaLocation(getURI().toString());
+ }
+ }
+ }
+
+ @Override
+ public String getURIFragment(EObject eObject)
+ {
+ if (eObject instanceof XSDConcreteComponent)
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)eObject;
+ Element theElement = xsdConcreteComponent.getElement();
+ if (theElement != null &&
+ theElement.hasAttributeNS(null, XSDConstants.ID_ATTRIBUTE) &&
+ theElement.getOwnerDocument().getElementById(theElement.getAttributeNS(null, XSDConstants.ID_ATTRIBUTE)) == theElement)
+ {
+ return theElement.getAttributeNS(null, XSDConstants.ID_ATTRIBUTE);
+ }
+ }
+
+ return super.getURIFragment(eObject);
+ }
+
+ @Override
+ public EObject getEObject(String uriFragment)
+ {
+ // Do ID-based lookup.
+ //
+ if (!uriFragment.startsWith("/"))
+ {
+ Element theElement = getSchema().getElement();
+ if (theElement != null)
+ {
+ // Navigate out through the elements.
+ //
+ Element resultElement = theElement.getOwnerDocument().getElementById(uriFragment);
+ List<Element> parents = new ArrayList<Element>();
+ for (Node parent = resultElement; parent != null; parent = parent.getParentNode())
+ {
+ if (parent.getNodeType() == Node.ELEMENT_NODE)
+ {
+ parents.add((Element)parent);
+ }
+ }
+ return ((org.eclipse.xsd.impl.XSDSchemaImpl)getSchema()).getBestConcreteComponent(parents);
+ }
+ }
+
+ return super.getEObject(uriFragment);
+ }
+
+ public Map<Object, Object> getDefaultSaveOptions()
+ {
+ if (defaultSaveOptions == null)
+ {
+ defaultSaveOptions = new HashMap<Object, Object>();
+ }
+
+ return defaultSaveOptions;
+ }
+
+ public Map<Object, Object> getLoadSaveOptions()
+ {
+ if (defaultLoadOptions == null)
+ {
+ defaultLoadOptions = new HashMap<Object, Object>();
+ }
+
+ return defaultLoadOptions;
+ }
+
+ @Override
+ public void setModified(boolean isModified)
+ {
+ // Avoid generating touch notification.
+ //
+ if (this.isModified != isModified)
+ {
+ super.setModified(isModified);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaBuildingTools.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaBuildingTools.java
new file mode 100644
index 0000000..a84ca00
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaBuildingTools.java
@@ -0,0 +1,644 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.w3c.dom.Element;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTerm;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.XSDXPathDefinition;
+
+
+/**
+ * XSDSchemaBuildingTools is a collection of convenience methods
+ * for building simple schemas.
+ *
+ * <p>These are suitable to show examples of how to build convenience
+ * methods to more easily manipulate components in a schema. They also
+ * serve as useful examples of usage of the library's functions.</p>
+ *
+ * <p>Note that these methods are somewhat simplistic, especially
+ * in terms of support for namespaces. To simplify the calling
+ * signatures, and to account for the 80% case where you don't have
+ * multiple namespaces, most method simply take a localName that's
+ * assumed to be correct in the current context. However it should
+ * be simple to copy & paste these methods and add namespaceURI's to
+ * each method if desired.</p>
+ *
+ * @author Shane_Curcuru@us.ibm.com
+ */
+public abstract class XSDSchemaBuildingTools
+{
+ /**
+ * Add named simpleTypeDefinition to the schema.
+ *
+ * <p>This method shows the simplest way to add a global named
+ * XSDSimpleTypeDefinition to an existing schema object.</p>
+ *
+ * @param schema to add the simpleTypeDeclaration to
+ * @param localName for the type
+ * @param type localName of base of type within this schema
+ * @param userInfo if non-null, will be added as a documentation
+ * element in an annotation element
+ * @return the simpleTypeDefinition created, after having been
+ * added to the schema; null if any error occoured
+ */
+ public static XSDSimpleTypeDefinition addSimpleTypeDefinition(XSDSchema schema, String localName, String type, String userInfo)
+ {
+ if ((null == schema) || (null == localName) || (null == type))
+ {
+ throw new IllegalArgumentException("addSimpleTypeDefinition called with null schema/type/name");
+ }
+
+ // Get the factory and create the type
+ XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+ XSDSimpleTypeDefinition simpleType = xsdFactory.createXSDSimpleTypeDefinition();
+
+ // Set the name and set it's baseType by resolving
+ // a definition from the local schema
+ simpleType.setName(localName);
+ simpleType.setBaseTypeDefinition(schema.resolveSimpleTypeDefinition(type));
+
+ // Add the simpleTypeDefinition to the object
+ schema.getContents().add(simpleType);
+
+ // Optionally add an userInfo if asked, since this
+ // is a freqent operation as well; note that you must add
+ // the type to the schema *first* before adding this
+ if (null != userInfo)
+ {
+ addUserInformation(simpleType, null, userInfo);
+ }
+
+ // Return the simpleTypeDefinition itself, so the user can
+ // make further modifications if desired
+ return simpleType;
+ }
+
+
+ /**
+ * Add a named complexTypeDefinition to a schema.
+ *
+ * <p>This method shows the simplest way to add a global named
+ * XSDComplexTypeDefinition to an existing schema object. It
+ * also provides basic attribute and type support. Note that
+ * this method does not handle namespaces although that support
+ * would be simple to add.</p>
+ *
+ * @param schema to add the complexTypeDefinition to
+ * @param localName localName for the type
+ * @param type localName of base of type; in this method must be
+ * resolveable within this schema
+ * @param attrs HashMap of attributes to add; keys are names
+ * and values are the type of each one; if null, none added
+ * @param userInfo if non-null, will be added as a documentation
+ * element in an annotation element
+ * @return the complexTypeDefinition created, after having been
+ * added to the schema; null if any error occoured
+ */
+ public static XSDComplexTypeDefinition addComplexTypeDefinition
+ (XSDSchema schema, String localName, String type, HashMap<String, Object> attrs, String userInfo)
+ {
+ if ((null == schema) || (null == localName) || (null == type))
+ {
+ throw new IllegalArgumentException("addComplexTypeDefinition called with null schema/type/name");
+ }
+
+ // Get the factory and create the type
+ XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+ // Create the type and set name, etc
+ XSDComplexTypeDefinition complexType = xsdFactory.createXSDComplexTypeDefinition();
+ complexType.setName(localName);
+ complexType.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
+
+ // Add the complexType to the schema; it's typically a good
+ // practice to do this sooner rather than later
+ schema.getContents().add(complexType);
+
+ // Create simple anonymous type to extend
+ XSDSimpleTypeDefinition anonSimpleType = xsdFactory.createXSDSimpleTypeDefinition();
+ complexType.setBaseTypeDefinition
+ (schema.resolveSimpleTypeDefinition(type));
+
+ // Be sure to set the contents as well (obviously if this
+ // were a reference it would be different)
+ complexType.setContent(anonSimpleType);
+
+ // If asked, create a number of attributes on this type
+ if (null != attrs)
+ {
+ for (Iterator<String> iter = attrs.keySet().iterator();
+ iter.hasNext(); /* no-op */)
+ {
+ String attrName = iter.next();
+ Object attrType = attrs.get(attrName);
+ addAttributeDeclaration(complexType, attrName, attrType);
+ }
+ }
+
+ // Optionally add an userInfo if asked, since this
+ // be a freqent operation as well; note that you must add
+ // the type to the schema *first* before adding this
+ if (null != userInfo)
+ {
+ addUserInformation(complexType, null, userInfo);
+ }
+
+ // Return the complexTypeDefinition itself, so the user can
+ // make further modifications if desired
+ return complexType;
+ }
+
+
+ /**
+ * Add a an attribute declaration to a component.
+ *
+ * <p>Either adds a global attributeDeclaration to the schema,
+ * or a specific one (and a basic useage thereof) to a complex
+ * type. Note that users must add any other constraints
+ * or the like themselves. This method also does not handle
+ * namespaces, although that support would be simple to add.</p>
+ *
+ * @param component to add annotation to; must be a XSDSchema or
+ * a XSDComplexTypeDefinition object
+ * @param localName of the attributeDeclaration
+ * @param type either an XSDAttributeDeclaration, in which case
+ * we set a ref= to it, or a String localName of the base type
+ * @return the attributeDeclaration created, after having been
+ * added to the schema; null if any error occoured
+ */
+ public static XSDAttributeDeclaration addAttributeDeclaration(XSDConcreteComponent component, String localName, Object type)
+ {
+ if ((null == component) || (null == localName) || (null == type))
+ {
+ throw new IllegalArgumentException("addAttributeDeclaration called with null component/type/name");
+ }
+
+ // Get the factory and create the attributeDeclaration itself
+ XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+ XSDAttributeDeclaration attrDecl = xsdFactory.createXSDAttributeDeclaration();
+
+ // Set it's localName
+ attrDecl.setName(localName);
+
+ // Set it's type depending on argument
+ if (type instanceof XSDAttributeDeclaration)
+ {
+ attrDecl.setResolvedAttributeDeclaration((XSDAttributeDeclaration)type);
+ }
+ else if (type instanceof String)
+ {
+ // Note that this will only correctly resolve to a
+ // local name within this schema; most users would
+ // want to resolve from perhaps a namespace *and*
+ // a localName
+ attrDecl.setTypeDefinition
+ (component.getSchema().resolveSimpleTypeDefinition((String)type));
+ }
+ else
+ {
+ throw new IllegalArgumentException("addAttributeDeclaration illegal type, is: " + type);
+ }
+
+ // Add the attribute to the component, depending on type
+ if (component instanceof XSDSchema)
+ {
+ ((XSDSchema)component).getContents().add(attrDecl);
+ }
+ else if (component instanceof XSDComplexTypeDefinition)
+ {
+ // Note that complexTypes must have an attributeUse
+ // container for the attribute itself; we then add
+ // the attribute to the concrete contents of the type
+ XSDAttributeUse attrUse = xsdFactory.createXSDAttributeUse();
+ attrUse.setContent(attrDecl);
+ ((XSDComplexTypeDefinition)component).getAttributeContents().add(attrUse);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Unable to addAttributeDeclaration to type: " + component);
+ }
+
+ return attrDecl;
+ }
+
+
+ /**
+ * Add a local annotation with userInfo to the given item.
+ *
+ * <p>Note: We take an XSDConcreteComponent, however we must
+ * then cast it to one of the types that has a setAnnotation
+ * call defined, since it doesn't have a clear 'parent'
+ * interface for annotations.</p>
+ *
+ * <p>Also note that UserInformation and ApplicationInformation
+ * objects can only be added <b>after</b> the parent of the
+ * annotation has been added to an XSDSchema object. This is
+ * because these objects are modeled in the concrete DOM
+ * layer only, and otherwise will throw a DOMException.<p>
+ *
+ * @param component to add annotation to; may be any kind of
+ * XSDConcreteComponent object including an XSDSchema
+ * @param sourceURI to set for the userInformation
+ * @param text text to add as the userInformation
+ * (xsd:documentation) node to the annotation
+ * @return the XSDAnnotation object created, after having been
+ * added to the component; null if any error occoured
+ */
+ public static XSDAnnotation addUserInformation(XSDConcreteComponent component, String sourceURI, String text)
+ {
+ // Note that null is a legal value for the sourceURI
+ if ((null == component) || (null == text))
+ {
+ throw new IllegalArgumentException("addUserInformation called with null component or text");
+ }
+ try
+ {
+ // First get the factory from the component: this is
+ // roundabout, but saves the user from having to
+ // pass it in
+ XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+ // Create an XSDAnnotation object to hold everything
+ XSDAnnotation xsdAnnotation = xsdFactory.createXSDAnnotation();
+
+ // Depending on the XSDConcreteComponent type, cast to
+ // the appropriate type and add the annotation
+ if (component instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDAttributeGroupDefinition)
+ {
+ ((XSDAttributeGroupDefinition)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDElementDeclaration)
+ {
+ ((XSDElementDeclaration)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDFacet)
+ {
+ ((XSDFacet)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDIdentityConstraintDefinition)
+ {
+ ((XSDIdentityConstraintDefinition)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDImport)
+ {
+ ((XSDImport)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDInclude)
+ {
+ ((XSDInclude)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDModelGroup)
+ {
+ ((XSDModelGroup)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDModelGroupDefinition)
+ {
+ ((XSDModelGroupDefinition)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDNotationDeclaration)
+ {
+ ((XSDNotationDeclaration)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDTypeDefinition)
+ {
+ ((XSDTypeDefinition)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDWildcard)
+ {
+ ((XSDWildcard)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDXPathDefinition)
+ {
+ ((XSDXPathDefinition)component).setAnnotation(xsdAnnotation);
+ }
+ else if (component instanceof XSDSchema)
+ {
+ // Note that this adds a global annotation to the
+ // schema itself, not to any subcomponent
+ ((XSDSchema)component).getContents().add(xsdAnnotation);
+ }
+ else
+ {
+ // Whoops, asked us to annotate an unannotateable item
+ throw new IllegalArgumentException("Unable to addUserInformation onto type: " + component);
+ }
+
+ // Now that the xsdAnnotation is added to a parent
+ // XSDConcreteComponent, go ahead and create the
+ // UserInformation node (xsd:documentation) and
+ // add a DOM textNode to it containing the information
+ Element userInfo = xsdAnnotation.createUserInformation(sourceURI);
+ userInfo.appendChild(userInfo.getOwnerDocument().createTextNode(text));
+
+ // Add the finished userInfo object to the concrete
+ // element of the xsdAnnotation
+ xsdAnnotation.getElement().appendChild(userInfo);
+ return xsdAnnotation;
+ }
+ catch (Exception e)
+ {
+ System.err.println("addUserInformation threw an Exception:");
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * Add a named modelGroup(Definition) to a container.
+ *
+ * <p>This method creates a single XSDModelGroup that contains
+ * a list of XSDParticles for each item in the list. It can
+ * simplify your code by performing the creation of each particle
+ * for each group item. Note that this method does not set any
+ * additional items for the particles, like min/maxOccours etc.</p>
+ *
+ * <p>If passed an XSDSchema, we then add this as a global
+ * XSDModelGroupDefinition. If passed an XSDModelGroup, add this to the contents,
+ * If passed an XSDModelGroupDefinition, set this as the model group,
+ * Otherwise, if passed an
+ * XSDComplexTypeDefinition we set this group to be the
+ * single content of the typedef.</p>
+ *
+ * @param component to add the modelGroupDefinition to
+ * @param localName for the group
+ * @param compositor to use for the group
+ * @param groupTerms List of XSDTerm objects to put in the
+ * group, in list.iterator() order; we throw an exception
+ * if any of these objects are not valid
+ * @return the modelGroup created, after having been
+ * added to the schema; null if any error occoured
+ */
+ public static XSDModelGroup addModelGroupDefinition(XSDConcreteComponent component,
+ String localName, XSDCompositor compositor, List<? extends XSDTerm> groupTerms)
+ {
+ if ((null == component) || (null == localName) || (null == groupTerms))
+ {
+ throw new IllegalArgumentException("addModelGroupDefinition called with null component/name/list");
+ }
+
+ // Get the factory and create the type
+ XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+ XSDModelGroup modelGroup = xsdFactory.createXSDModelGroup();
+
+ // Also set the compositor for the group itself
+ modelGroup.setCompositor(compositor);
+
+ // Iterate through the list, creating XSDParticles and
+ // adding them to the group itself
+ for (Iterator<? extends XSDTerm> terms = groupTerms.iterator();
+ terms.hasNext();
+ /*no-op */ )
+ {
+ Object tmp = terms.next();
+ try
+ {
+ // Get each XSDTerm object (a wildcard, model group,
+ // or element) and add it to a particle
+ XSDTerm termItem = (XSDTerm)tmp;
+ XSDParticle termParticle = xsdFactory.createXSDParticle();
+ termParticle.setContent(termItem);
+ // Add the particle to the modelGroup
+ modelGroup.getContents().add(termParticle);
+ }
+ catch (ClassCastException cce)
+ {
+ throw new IllegalArgumentException("addModelGroupDefinition illegal list type: " + tmp);
+ }
+ }
+
+ // Add the group either to a type by adding it as a
+ // particle or to a schema by adding a definition
+ if (component instanceof XSDComplexTypeDefinition)
+ {
+ XSDParticle modelGroupParticle = xsdFactory.createXSDParticle();
+ modelGroupParticle.setContent(modelGroup);
+ ((XSDComplexTypeDefinition)component).setContent(modelGroupParticle);
+
+ }
+ else if (component instanceof XSDSchema)
+ {
+ XSDModelGroupDefinition modelGroupDef = xsdFactory.createXSDModelGroupDefinition();
+ modelGroupDef.setName(localName);
+ modelGroupDef.setModelGroup(modelGroup);
+ ((XSDSchema)component).getContents().add(modelGroupDef);
+ }
+ else if(component instanceof XSDModelGroupDefinition)
+ {
+ ((XSDModelGroupDefinition)component).setModelGroup(modelGroup);
+ }
+ else if(component instanceof XSDModelGroup)
+ {
+ XSDParticle particle = xsdFactory.createXSDParticle();
+ particle.setContent(modelGroup);
+ ((XSDModelGroup)component).getContents().add(particle);
+ }
+ else
+ {
+ throw new IllegalArgumentException("addModelGroupDefinition doesn't know how to add it to component: " + component);
+ }
+
+
+ // Return the modelGroup itself, so the user can
+ // make further modifications if desired
+ return modelGroup;
+ }
+
+
+ /**
+ * Remove a named *TypeDefinition.
+ *
+ * <p>This method shows the simplest way to remove a named
+ * type definition of any type (we automatically search for
+ * both simple and complex types). Note that removing or
+ * replacing an actual schema component requires working in
+ * the concrete model directly.</p>
+ *
+ * @param schema to remove the *TypeDefinition from
+ * @param namespace for the type
+ * @param localName for the type
+ * @return true if successful; false otherwise
+ */
+ public static boolean removeTypeDefinition(XSDSchema schema, String namespace, String localName)
+ {
+ if ((null == schema) || (null == localName))
+ {
+ throw new IllegalArgumentException("removeTypeDefinition called with null schema/localName");
+ }
+
+ // Let the schema try to find an appropriate type definition
+ // for you - this will either return the actual type if it
+ // already exists, or a placeholder for one if it does not
+ XSDTypeDefinition typeDefinition =
+ schema.resolveTypeDefinition(namespace, localName);
+
+ // Get the specific container of the typeDefinition
+ XSDConcreteComponent container = typeDefinition.getContainer();
+
+ // Check to ensure that this is a real type that lives in
+ // the schema, and not just a placeholder that was created
+ if (null == container)
+ {
+ // It's just a placeholder; nothing to do
+ return false;
+ }
+ // else, continue to remove the real component
+
+ // Note that each type of container must be typecast to
+ // get the appropriate contents method
+ if (container instanceof XSDSchema)
+ {
+ return ((XSDSchema)container).getContents().remove(typeDefinition);
+ }
+ else if (container instanceof XSDRedefine)
+ {
+ return ((XSDRedefine)container).getContents().remove(typeDefinition);
+ }
+ else
+ {
+ // NB: can any other objects be containers for
+ // typeDefinitions?
+ return false;
+ }
+
+ }
+
+ /**
+ * Worker method to get a simple 'blank' schema.
+ *
+ * <p>This creates a simple schema with just some namespace
+ * information attached. More detailed programs may also
+ * wish to set other schema attributes.</p>
+ *
+ * @param factory to create objects from; if null we will use
+ * our own sample {@link #getXSDFactory() getXSDFactory} method
+ * @param targetPrefix to use
+ * @param targetNS to use
+ * @param annotationText to set as a documentation element
+ * on an annotation (if null is not set)
+ * @param annotationSource to use if annotationText is not null
+ * @return false if we should abort the test; true otherwise
+ */
+ public static XSDSchema getBlankSchema
+ (XSDFactory factory, String targetPrefix, String targetNS, String annotationText, String annotationSource)
+ {
+ if (factory == null)
+ {
+ factory = getXSDFactory();
+ }
+ XSDSchema schema = factory.createXSDSchema();
+
+ // Set target namespace
+ schema.setTargetNamespace(targetNS);
+
+ // Choose the prefix used for this schema's namespace,
+ // and the schema for schema's namespace
+ schema.setSchemaForSchemaQNamePrefix("xsd");
+ Map<String, String> namespaces = schema.getQNamePrefixToNamespaceMap();
+ namespaces.put(targetPrefix, schema.getTargetNamespace());
+ namespaces.put(schema.getSchemaForSchemaQNamePrefix(), XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+
+ // Add an annotation if asked to
+ if (null != annotationText)
+ {
+ addUserInformation(schema, annotationSource, annotationText);
+ }
+
+ return schema;
+ }
+
+ /**
+ * A cached XSDPackage: one per lifetime.
+ * @see #getXSDFactory()
+ */
+ protected static XSDPackage m_xsdPackage = null;
+
+ /**
+ * A cached XSDFactory: one per lifetime.
+ * @see #getXSDFactory()
+ */
+ protected static XSDFactory m_xsdFactory = null;
+
+ /**
+ * Worker method to initialize various XSD and etools prereqs.
+ *
+ * <p>This is SAMPLE CODE ONLY, SUBJECT TO CHANGE!</p>
+ *
+ * <p>The initialization sequence depends on some specific
+ * versions of Eclipse and may depend on how your application
+ * is run (as an Eclipse plugin or as a headless program, etc.).
+ * Note this caches the package and factory objects, and does
+ * not bother to re-call init() unless needed. This actual
+ * implementation is meant to be run as a standalone headless
+ * program although it may be suitable for other applications.</p>
+ *
+ * @return an XSDFactory already initialized; or a cached one
+ * if we've been previously called
+ */
+ public static XSDFactory getXSDFactory()
+ {
+ // If cached, return previous factory
+ if (null != m_xsdFactory)
+ {
+ return m_xsdFactory;
+ }
+
+ // This is needed because we can't have the following in the plugin.xml
+ //
+ // <extension point = "com.eclipse.emf.ecore.extension_parser">
+ // <parser type="xsd" class="org.eclipse.xsd.util.XSDResourceFactoryImpl"/>
+ // </extension>
+ //
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+
+ // Also get the factory implementation here as well
+ m_xsdPackage = XSDPackage.eINSTANCE;
+ m_xsdFactory = XSDFactory.eINSTANCE;
+ return m_xsdFactory;
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaLocationResolver.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaLocationResolver.java
new file mode 100644
index 0000000..3175197
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaLocationResolver.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import org.eclipse.xsd.XSDSchema;
+
+
+/**
+ * An adapter interface used to resolve {@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation schema locations}.
+ * When the schema location of an schema directive needs to be resolved,
+ * each containing {@link org.eclipse.xsd.XSDSchema schema}
+ * will be {@link org.eclipse.emf.ecore.util.EcoreUtil#getRegisteredAdapter(org.eclipse.emf.ecore.EObject,Object) inspected}
+ * for an adapter that implements this interface.
+ * As such, you can register an adapter factory like this to tailor the algorithm used to resolve a schema location:
+ *<pre>
+ * ResourceSet resourceSet = new ResourceSetImpl();
+ * resourceSet.getAdapterFactories().add
+ * (new AdapterFactoryImpl()
+ * {
+ * class Resolver extends AdapterImpl implements XSDSchemaLocationResolver
+ * {
+ * public String resolveSchemaLocation(XSDSchema xsdSchema, String namespaceURI, String schemaLocationURI)
+ * {
+ * return XSDConstants.resolveSchemaLocation(xsdSchema.getSchemaLocation(), namespaceURI, schemaLocationURI);
+ * }
+ *
+ * public boolean isAdapterForType(Object type)
+ * {
+ * return type == XSDSchemaLocationResolver.class;
+ * }
+ * }
+ *
+ * protected Resolver resolver = new Resolver();
+ *
+ * public boolean isFactoryForType(Object type)
+ * {
+ * return type == XSDSchemaLocationResolver.class;
+ * }
+ *
+ * public Adapter adaptNew(Notifier target, Object type)
+ * {
+ * return resolver;
+ * }
+ * });
+ *</pre>
+ * @see org.eclipse.emf.ecore.util.EcoreUtil#getRegisteredAdapter(org.eclipse.emf.ecore.EObject,Object)
+ */
+public interface XSDSchemaLocationResolver
+{
+ /**
+ * Resolve the namespace and schema location relative to the given base schema's location.
+ * For example, the expression
+ *<pre>
+ * resolveSchemaLocation
+ * (xsdSchema, // xsdSchema.getSchemaLocation() == "http://www.example.com/A/a.xsd"
+ * "http://www.example.com/B",
+ * "../B/b.xsd");
+ *</pre>
+ * would normally yield
+ *<pre>
+ * "http://www.example.com/B/b.xsd"
+ *</pre>
+ * When no namespace schema location is provided, the namespace itself will be used.
+ * @param xsdSchema the schema containing the reference
+ * @param namespaceURI the namespace being resolved, i.e., {@link org.eclipse.xsd.XSDImport#getNamespace}.
+ * @param schemaLocationURI the suggested location of the namespace being resolved, i.e., {@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation}.
+ * @return the resolved schema location.
+ * @see org.eclipse.xsd.util.XSDConstants#resolveSchemaLocation(String,String,String)
+ */
+ String resolveSchemaLocation(XSDSchema xsdSchema, String namespaceURI, String schemaLocationURI);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaLocator.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaLocator.java
new file mode 100644
index 0000000..934ad62
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaLocator.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2003-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import org.eclipse.xsd.XSDSchema;
+
+
+/**
+ * An adapter interface used by {@link org.eclipse.xsd.XSDSchemaDirective} to find referenced schemas.
+ * When the schema referenced by a schema directive needs to be determined,
+ * the containing {@link org.eclipse.emf.ecore.resource.Resource}
+ * will be {@link org.eclipse.emf.ecore.util.EcoreUtil#getRegisteredAdapter(org.eclipse.emf.ecore.resource.Resource,Object) inspected}
+ * for an adapter that implements this interface.
+ * As such, you can register an adapter factory like this to tailor the algorithm used to locate a schema:
+ *<pre>
+ * ResourceSet resourceSet = new ResourceSetImpl();
+ * resourceSet.getAdapterFactories().add
+ * (new AdapterFactoryImpl()
+ * {
+ * class SchemaLocator extends AdapterImpl implements XSDSchemaLocator
+ * {
+ * public XSDSchema locateSchema(XSDSchema xsdSchema, String namespaceURI, String rawSchemaLocationURI, String resolvedSchemaLocation)
+ * {
+ * return null; // Additional logic...
+ * }
+ *
+ * public boolean isAdatperForType(Object type)
+ * {
+ * return type == XSDSchemaLocator.class;
+ * }
+ * }
+ *
+ * protected SchemaLocator schemaLocator = new SchemaLocator();
+ *
+ * public boolean isFactoryForType(Object type)
+ * {
+ * return type == XSDSchemaLocator.class;
+ * }
+ *
+ * public Adapter adaptNew(Notifier target, Object type)
+ * {
+ * return schemaLocator;
+ * }
+ * });
+ *</pre>
+ * @see org.eclipse.emf.ecore.util.EcoreUtil#getRegisteredAdapter(org.eclipse.emf.ecore.resource.Resource,Object)
+ */
+public interface XSDSchemaLocator
+{
+ /**
+ * Locate the schema for the given namespace.
+ * @param xsdSchema the schema containing the namespace reference.
+ * @param namespaceURI the namespace being resolved, i.e., {@link org.eclipse.xsd.XSDImport#getNamespace}.
+ * @param rawSchemaLocationURI the suggested location of the namespace being resolved, i.e., {@link org.eclipse.xsd.XSDSchemaDirective#getSchemaLocation}.
+ * @param resolvedSchemaLocationURI the {@link XSDSchemaLocationResolver#resolveSchemaLocation resolved} suggested location of the namespace.
+ * @return the resolved schema.
+ * @see org.eclipse.xsd.util.XSDSchemaLocationResolver#resolveSchemaLocation(XSDSchema, String, String)
+ * @see org.eclipse.xsd.util.XSDConstants#resolveSchemaLocation(String,String,String)
+ */
+ XSDSchema locateSchema(XSDSchema xsdSchema, String namespaceURI, String rawSchemaLocationURI, String resolvedSchemaLocationURI);
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaQueryTools.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaQueryTools.java
new file mode 100644
index 0000000..5c626ca
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSchemaQueryTools.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2002-2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+
+// Various Eclipse, etools and EMF dependencies
+
+// xsd:annotation elements are modeled in the DOM
+
+
+
+/**
+ * XSDSchemaQueryTools is a collection of worker methods for performing
+ * simple queries or searches of schemas.
+ *
+ * <p>These are suitable to show examples of how to build convenience
+ * methods to more easily find components in a schema. They also
+ * serve as useful examples of usage of the library's functions.</p>
+ *
+ * <p>Note that these methods are somewhat simplistic, especially
+ * in terms of support for namespaces. To simplify the calling
+ * signatures, and to account for the 80% case where you don't have
+ * multiple namespaces, most method simply take a localName that's
+ * assumed to be correct in the current context. However it should
+ * be simple to copy & paste these methods and add namespaceURI's to
+ * each method if desired.</p>
+ *
+ * @author Shane_Curcuru@us.ibm.com
+ */
+public abstract class XSDSchemaQueryTools
+{
+ /**
+ * Find typeDefinitions that derive from a named type.
+ *
+ * <p>This shows one way to query the schema for typeDefinitions
+ * and then how to find specific kinds of typeDefinitions.</p>
+ *
+ * @param schema to search for typeDefs
+ * @param namespace for the type derived from
+ * @param localName for the type derived from
+ * @return List of any XSDTypeDefinitions found
+ */
+ public static List<XSDTypeDefinition> findTypesDerivedFrom(XSDSchema schema, String namespace, String localName)
+ {
+ if ((null == schema) || (null == localName))
+ {
+ throw new IllegalArgumentException("findTypesDerivedFrom called with null schema/localName");
+ }
+
+ ArrayList<XSDTypeDefinition> typesDerivedFrom = new ArrayList<XSDTypeDefinition>();
+
+ // A handy convenience method quickly gets all
+ // typeDefinitions within our schema; note that
+ // whether or not this returns types in included,
+ // imported, or redefined schemas is subject to change
+ List<XSDTypeDefinition> typedefs = schema.getTypeDefinitions();
+
+ for (XSDTypeDefinition typedef : typedefs)
+ {
+ // Walk the baseTypes from this typedef seeing if any
+ // of them match the requested one
+ if (isTypeDerivedFrom(typedef, namespace, localName))
+ {
+ // We found it, return the original one and continue
+ typesDerivedFrom.add(typedef);
+ continue;
+ }
+ }
+
+ return typesDerivedFrom;
+ }
+
+ /**
+ * Recursive worker method to find typeDefinitions that derive
+ * from a named type.
+ *
+ * <p>This is not a terribly time-efficient algorithm, but
+ * it does show usage of library methods. This works for
+ * simpleTypes; complexType support needs to be added.</p>
+ *
+ * @see #findTypesDerivedFrom(XSDSchema, String, String)
+ * @param typedef to see if it's derived from
+ * @param namespace for the type derived from
+ * @param localName for the type derived from
+ * @return true if it is; false otherwise
+ * @deprecated Use {@link XSDConstants#isOrIsDerivedFrom(XSDTypeDefinition, String, String)} instead.
+ */
+ @Deprecated
+ public static boolean isTypeDerivedFrom(XSDTypeDefinition typedef, String namespace, String localName)
+ {
+ return XSDConstants.isOrIsDerivedFrom(typedef, localName, namespace);
+ }
+
+ /**
+ * Find elementDeclarations that use any types derived
+ * from a named type.
+ *
+ * <p>This shows one way to query the schema for elementDeclarations
+ * and then how to find specific kinds of typeDefinitions.</p>
+ *
+ * @param schema to search for elemDecls
+ * @param namespace for the type used
+ * @param localName for the type used
+ * @return List of any XSDElementDeclarations found
+ */
+ public static List<XSDElementDeclaration> findElementsUsingType(XSDSchema schema, String namespace, String localName)
+ {
+ if ((null == schema) || (null == localName))
+ {
+ throw new IllegalArgumentException("findElementsUsingType called with null schema/localName");
+ }
+
+ ArrayList<XSDElementDeclaration> elemsUsingType = new ArrayList<XSDElementDeclaration>();
+
+ // A handy convenience method quickly gets all
+ // elementDeclarations within our schema; note that
+ // whether or not this returns types in included,
+ // imported, or redefined schemas is subject to change
+ List<XSDElementDeclaration> elemDecls = schema.getElementDeclarations();
+
+ for (XSDElementDeclaration elem : elemDecls)
+ {
+ XSDTypeDefinition typedef = null;
+ if (elem.getAnonymousTypeDefinition() != null)
+ {
+ typedef = elem.getAnonymousTypeDefinition();
+ }
+ else if (elem.getTypeDefinition() != null)
+ {
+ typedef = elem.getTypeDefinition();
+ }
+ else
+ {
+ // Element is not complete, since it has no type,
+ // thus it's not using our type
+ continue;
+ }
+
+ // Ask this type and walk the baseTypes from this
+ // typedef seeing if any of them match the requested one
+ if (typedef.hasNameAndTargetNamespace(localName, namespace)
+ || isTypeDerivedFrom(typedef, namespace, localName))
+ {
+ // We found it, return the element and continue
+ elemsUsingType.add(elem);
+ continue;
+ }
+ }
+
+ return elemsUsingType;
+ }
+
+ /**
+ * Find any included, imported, or redefined schemas that
+ * this one references.
+ *
+ * <p>This method uses solely the Schema model API to look for
+ * XSDSchemaDirective objects. Each directive is the result
+ * of an include, import, or redefine in our schema. We then
+ * walk the tree of directives, finding their resolved schemas
+ * (if available), and produce a simple HashMap of them all.</p>
+ * <p>See also {@link #hasImpInclRedef2(XSDSchema)}
+ * which uses the underlying ResourceSet model to query the
+ * external resources that were loaded with this schema: it
+ * has the same effect, but using different code.</p>
+ *
+ * @see #hasImpInclRedef2(XSDSchema)
+ * @param schema object to search for imports/includes/redefines
+ * @return HashMap where keys are the URI's of any other schemas
+ * found, and values are one of 'import', 'include', 'redefine';
+ * null if none found or an error occurred
+ */
+ public static HashMap<String, String> hasImpInclRedef(XSDSchema schema)
+ {
+ if (null == schema)
+ {
+ throw new IllegalArgumentException("hasImpInclRedef called with null schema");
+ }
+ HashMap<String, String> hash = new HashMap<String, String>();
+
+ // Recurse to map all imports/includes/redefines
+ mapImpInclRedef(schema, hash, 0);
+
+ // If none were found, return null
+ if (hash.size() == 0)
+ {
+ return null;
+ }
+ return hash;
+ }
+
+ /**
+ * Find any included, imported, or redefined schemas that
+ * this one references.
+ *
+ * <p>This method uses the underlying ResourceSet model to query the
+ * external resources that were loaded with this schema.
+ * Note that the ResourceSet implementation is subject to change.</p>
+ *
+ * @see #hasImpInclRedef(XSDSchema)
+ * @param schema object to search for imports/includes/redefines
+ * @return HashMap where keys are the URI's of any other schemas
+ * found, and values are one of 'import', 'include', 'redefine';
+ * null if none found or an error occurred
+ */
+ public static HashMap<String, String> hasImpInclRedef2(XSDSchema schema)
+ {
+ if (null == schema)
+ {
+ throw new IllegalArgumentException("hasImpInclRedef2 called with null schema");
+ }
+ HashMap<String, String> hash = new HashMap<String, String>();
+
+ // Use the Resource framework to iterate through any
+ // other resources that were loaded along with this schema
+ // to find what they import/include/redefine
+ Resource currentResource = schema.eResource();
+
+ // Get the whole set of resources that were loaded together
+ ResourceSet resourceSet = currentResource.getResourceSet();
+
+ // Iterate over all the resources, i.e., the main resource
+ // and those that have been included, imported, or redefined.
+ for (Resource resource : resourceSet.getResources())
+ {
+ // Check for schema resources.
+ if (resource instanceof XSDResourceImpl)
+ {
+ XSDResourceImpl xsdResource = (XSDResourceImpl)resource;
+
+ // Iterate over each schema's content looking for directives.
+ XSDSchema otherSchema = xsdResource.getSchema();
+ for (XSDSchemaContent content : otherSchema.getContents())
+ {
+ if (content instanceof XSDSchemaDirective)
+ {
+ XSDSchemaDirective schemaDirective = (XSDSchemaDirective)content;
+ String type = null;
+ if (content instanceof XSDImport)
+ {
+ type = "XSDImport";
+ }
+ else if (content instanceof XSDInclude)
+ {
+ type = "XSDInclude";
+ }
+ else if (content instanceof XSDRedefine)
+ {
+ type = "XSDRedefine";
+ }
+ else
+ {
+ type = "unknown";
+ }
+ if (schemaDirective.getResolvedSchema() == null)
+ {
+ type += "-unresolved";
+ }
+ // Store the item in our hash to return to caller
+ hash.put(schemaDirective.getSchemaLocation(), type);
+
+ // Recurse down the tree into the next schema
+ // using the schema API's
+ XSDSchema nextSchema = schemaDirective.getResolvedSchema();
+ if (null != nextSchema)
+ {
+ mapImpInclRedef(nextSchema, hash, 1);
+ }
+ }
+ }
+ }
+ }
+ // If none were found, return null
+ if (hash.size() == 0)
+ {
+ return null;
+ }
+ return hash;
+ }
+
+ /**
+ * Recursive worker method implementing {@link #hasImpInclRedef(XSDSchema)}
+ * and {@link #hasImpInclRedef2(XSDSchema)}.
+ *
+ * <p>This uses only the schema model library API's to look for
+ * XSDSchemaDirective objects in it's content. It then checks
+ * which specific subclass of directive each is to report and
+ * then recurses to any other schemas found.</p>
+ *
+ * @param schema object to search for imports/includes/redefines
+ * @param hash where keys are the URI's of any other schemas
+ * found, and values are one of 'import', 'include', 'redefine';
+ * this object is mutated by this method
+ * @param level of iteration we're on
+ */
+ protected static void mapImpInclRedef(XSDSchema schema, HashMap<String, String> hash, int level)
+ {
+ // Iterate through this schema itself to see what
+ // other schemas it *directly* import/include/redefines
+ for (XSDSchemaContent schemaContent : schema.getContents())
+ {
+ if (schemaContent instanceof XSDSchemaDirective)
+ {
+ XSDSchemaDirective schemaDirective = (XSDSchemaDirective)schemaContent;
+ String type = null;
+ if (schemaContent instanceof XSDImport)
+ {
+ type = "XSDImport-level" + level;
+ }
+ else if (schemaContent instanceof XSDInclude)
+ {
+ type = "XSDInclude-level" + level;
+ }
+ else if (schemaContent instanceof XSDRedefine)
+ {
+ type = "XSDRedefine-level" + level;
+ }
+ else
+ {
+ type = "unknown-level" + level;
+ }
+ if (schemaDirective.getResolvedSchema() == null)
+ {
+ type += "-unresolved";
+ }
+ // Store the item in our caller's hashtable
+ hash.put(schemaDirective.getSchemaLocation(), type);
+
+ // Recurse down the tree into the next schema
+ XSDSchema nextSchema = schemaDirective.getResolvedSchema();
+ if (null != nextSchema)
+ {
+ mapImpInclRedef(nextSchema, hash, level + 1);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSwitch.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSwitch.java
new file mode 100644
index 0000000..3348000
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDSwitch.java
@@ -0,0 +1,1641 @@
+/**
+ * Copyright (c) 2002-2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.xsd.*;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xsd.XSDPackage
+ * @generated
+ */
+public class XSDSwitch<T> extends Switch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static XSDPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = XSDPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage)
+ {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case XSDPackage.XSD_ANNOTATION:
+ {
+ XSDAnnotation xsdAnnotation = (XSDAnnotation)theEObject;
+ T result = caseXSDAnnotation(xsdAnnotation);
+ if (result == null) result = caseXSDComponent(xsdAnnotation);
+ if (result == null) result = caseXSDRedefineContent(xsdAnnotation);
+ if (result == null) result = caseXSDSchemaContent(xsdAnnotation);
+ if (result == null) result = caseXSDConcreteComponent(xsdAnnotation);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ATTRIBUTE_DECLARATION:
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)theEObject;
+ T result = caseXSDAttributeDeclaration(xsdAttributeDeclaration);
+ if (result == null) result = caseXSDFeature(xsdAttributeDeclaration);
+ if (result == null) result = caseXSDSchemaContent(xsdAttributeDeclaration);
+ if (result == null) result = caseXSDNamedComponent(xsdAttributeDeclaration);
+ if (result == null) result = caseXSDComponent(xsdAttributeDeclaration);
+ if (result == null) result = caseXSDConcreteComponent(xsdAttributeDeclaration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_CONTENT:
+ {
+ XSDAttributeGroupContent xsdAttributeGroupContent = (XSDAttributeGroupContent)theEObject;
+ T result = caseXSDAttributeGroupContent(xsdAttributeGroupContent);
+ if (result == null) result = caseXSDConcreteComponent(xsdAttributeGroupContent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ATTRIBUTE_GROUP_DEFINITION:
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition)theEObject;
+ T result = caseXSDAttributeGroupDefinition(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDRedefinableComponent(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDAttributeGroupContent(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDNamedComponent(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDRedefineContent(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDComponent(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDSchemaContent(xsdAttributeGroupDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdAttributeGroupDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ATTRIBUTE_USE:
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)theEObject;
+ T result = caseXSDAttributeUse(xsdAttributeUse);
+ if (result == null) result = caseXSDComponent(xsdAttributeUse);
+ if (result == null) result = caseXSDAttributeGroupContent(xsdAttributeUse);
+ if (result == null) result = caseXSDConcreteComponent(xsdAttributeUse);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_BOUNDED_FACET:
+ {
+ XSDBoundedFacet xsdBoundedFacet = (XSDBoundedFacet)theEObject;
+ T result = caseXSDBoundedFacet(xsdBoundedFacet);
+ if (result == null) result = caseXSDFundamentalFacet(xsdBoundedFacet);
+ if (result == null) result = caseXSDFacet(xsdBoundedFacet);
+ if (result == null) result = caseXSDComponent(xsdBoundedFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdBoundedFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_CARDINALITY_FACET:
+ {
+ XSDCardinalityFacet xsdCardinalityFacet = (XSDCardinalityFacet)theEObject;
+ T result = caseXSDCardinalityFacet(xsdCardinalityFacet);
+ if (result == null) result = caseXSDFundamentalFacet(xsdCardinalityFacet);
+ if (result == null) result = caseXSDFacet(xsdCardinalityFacet);
+ if (result == null) result = caseXSDComponent(xsdCardinalityFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdCardinalityFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_COMPLEX_TYPE_CONTENT:
+ {
+ XSDComplexTypeContent xsdComplexTypeContent = (XSDComplexTypeContent)theEObject;
+ T result = caseXSDComplexTypeContent(xsdComplexTypeContent);
+ if (result == null) result = caseXSDComponent(xsdComplexTypeContent);
+ if (result == null) result = caseXSDConcreteComponent(xsdComplexTypeContent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_COMPLEX_TYPE_DEFINITION:
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)theEObject;
+ T result = caseXSDComplexTypeDefinition(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDTypeDefinition(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDScope(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDRedefinableComponent(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDNamedComponent(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDRedefineContent(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDComponent(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDSchemaContent(xsdComplexTypeDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdComplexTypeDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_COMPONENT:
+ {
+ XSDComponent xsdComponent = (XSDComponent)theEObject;
+ T result = caseXSDComponent(xsdComponent);
+ if (result == null) result = caseXSDConcreteComponent(xsdComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_CONCRETE_COMPONENT:
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)theEObject;
+ T result = caseXSDConcreteComponent(xsdConcreteComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_CONSTRAINING_FACET:
+ {
+ XSDConstrainingFacet xsdConstrainingFacet = (XSDConstrainingFacet)theEObject;
+ T result = caseXSDConstrainingFacet(xsdConstrainingFacet);
+ if (result == null) result = caseXSDFacet(xsdConstrainingFacet);
+ if (result == null) result = caseXSDComponent(xsdConstrainingFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdConstrainingFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_DIAGNOSTIC:
+ {
+ XSDDiagnostic xsdDiagnostic = (XSDDiagnostic)theEObject;
+ T result = caseXSDDiagnostic(xsdDiagnostic);
+ if (result == null) result = caseXSDConcreteComponent(xsdDiagnostic);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ELEMENT_DECLARATION:
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)theEObject;
+ T result = caseXSDElementDeclaration(xsdElementDeclaration);
+ if (result == null) result = caseXSDFeature(xsdElementDeclaration);
+ if (result == null) result = caseXSDSchemaContent(xsdElementDeclaration);
+ if (result == null) result = caseXSDTerm(xsdElementDeclaration);
+ if (result == null) result = caseXSDNamedComponent(xsdElementDeclaration);
+ if (result == null) result = caseXSDParticleContent(xsdElementDeclaration);
+ if (result == null) result = caseXSDComponent(xsdElementDeclaration);
+ if (result == null) result = caseXSDConcreteComponent(xsdElementDeclaration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ENUMERATION_FACET:
+ {
+ XSDEnumerationFacet xsdEnumerationFacet = (XSDEnumerationFacet)theEObject;
+ T result = caseXSDEnumerationFacet(xsdEnumerationFacet);
+ if (result == null) result = caseXSDRepeatableFacet(xsdEnumerationFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdEnumerationFacet);
+ if (result == null) result = caseXSDFacet(xsdEnumerationFacet);
+ if (result == null) result = caseXSDComponent(xsdEnumerationFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdEnumerationFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_FACET:
+ {
+ XSDFacet xsdFacet = (XSDFacet)theEObject;
+ T result = caseXSDFacet(xsdFacet);
+ if (result == null) result = caseXSDComponent(xsdFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_FEATURE:
+ {
+ XSDFeature xsdFeature = (XSDFeature)theEObject;
+ T result = caseXSDFeature(xsdFeature);
+ if (result == null) result = caseXSDNamedComponent(xsdFeature);
+ if (result == null) result = caseXSDComponent(xsdFeature);
+ if (result == null) result = caseXSDConcreteComponent(xsdFeature);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_FIXED_FACET:
+ {
+ XSDFixedFacet xsdFixedFacet = (XSDFixedFacet)theEObject;
+ T result = caseXSDFixedFacet(xsdFixedFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdFixedFacet);
+ if (result == null) result = caseXSDFacet(xsdFixedFacet);
+ if (result == null) result = caseXSDComponent(xsdFixedFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdFixedFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_FRACTION_DIGITS_FACET:
+ {
+ XSDFractionDigitsFacet xsdFractionDigitsFacet = (XSDFractionDigitsFacet)theEObject;
+ T result = caseXSDFractionDigitsFacet(xsdFractionDigitsFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdFractionDigitsFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdFractionDigitsFacet);
+ if (result == null) result = caseXSDFacet(xsdFractionDigitsFacet);
+ if (result == null) result = caseXSDComponent(xsdFractionDigitsFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdFractionDigitsFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_FUNDAMENTAL_FACET:
+ {
+ XSDFundamentalFacet xsdFundamentalFacet = (XSDFundamentalFacet)theEObject;
+ T result = caseXSDFundamentalFacet(xsdFundamentalFacet);
+ if (result == null) result = caseXSDFacet(xsdFundamentalFacet);
+ if (result == null) result = caseXSDComponent(xsdFundamentalFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdFundamentalFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION:
+ {
+ XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition = (XSDIdentityConstraintDefinition)theEObject;
+ T result = caseXSDIdentityConstraintDefinition(xsdIdentityConstraintDefinition);
+ if (result == null) result = caseXSDNamedComponent(xsdIdentityConstraintDefinition);
+ if (result == null) result = caseXSDComponent(xsdIdentityConstraintDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdIdentityConstraintDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_IMPORT:
+ {
+ XSDImport xsdImport = (XSDImport)theEObject;
+ T result = caseXSDImport(xsdImport);
+ if (result == null) result = caseXSDSchemaDirective(xsdImport);
+ if (result == null) result = caseXSDSchemaContent(xsdImport);
+ if (result == null) result = caseXSDConcreteComponent(xsdImport);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_INCLUDE:
+ {
+ XSDInclude xsdInclude = (XSDInclude)theEObject;
+ T result = caseXSDInclude(xsdInclude);
+ if (result == null) result = caseXSDSchemaCompositor(xsdInclude);
+ if (result == null) result = caseXSDSchemaDirective(xsdInclude);
+ if (result == null) result = caseXSDSchemaContent(xsdInclude);
+ if (result == null) result = caseXSDConcreteComponent(xsdInclude);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_LENGTH_FACET:
+ {
+ XSDLengthFacet xsdLengthFacet = (XSDLengthFacet)theEObject;
+ T result = caseXSDLengthFacet(xsdLengthFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdLengthFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdLengthFacet);
+ if (result == null) result = caseXSDFacet(xsdLengthFacet);
+ if (result == null) result = caseXSDComponent(xsdLengthFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdLengthFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MAX_EXCLUSIVE_FACET:
+ {
+ XSDMaxExclusiveFacet xsdMaxExclusiveFacet = (XSDMaxExclusiveFacet)theEObject;
+ T result = caseXSDMaxExclusiveFacet(xsdMaxExclusiveFacet);
+ if (result == null) result = caseXSDMaxFacet(xsdMaxExclusiveFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMaxExclusiveFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMaxExclusiveFacet);
+ if (result == null) result = caseXSDFacet(xsdMaxExclusiveFacet);
+ if (result == null) result = caseXSDComponent(xsdMaxExclusiveFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMaxExclusiveFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MAX_FACET:
+ {
+ XSDMaxFacet xsdMaxFacet = (XSDMaxFacet)theEObject;
+ T result = caseXSDMaxFacet(xsdMaxFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMaxFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMaxFacet);
+ if (result == null) result = caseXSDFacet(xsdMaxFacet);
+ if (result == null) result = caseXSDComponent(xsdMaxFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMaxFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MAX_INCLUSIVE_FACET:
+ {
+ XSDMaxInclusiveFacet xsdMaxInclusiveFacet = (XSDMaxInclusiveFacet)theEObject;
+ T result = caseXSDMaxInclusiveFacet(xsdMaxInclusiveFacet);
+ if (result == null) result = caseXSDMaxFacet(xsdMaxInclusiveFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMaxInclusiveFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMaxInclusiveFacet);
+ if (result == null) result = caseXSDFacet(xsdMaxInclusiveFacet);
+ if (result == null) result = caseXSDComponent(xsdMaxInclusiveFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMaxInclusiveFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MAX_LENGTH_FACET:
+ {
+ XSDMaxLengthFacet xsdMaxLengthFacet = (XSDMaxLengthFacet)theEObject;
+ T result = caseXSDMaxLengthFacet(xsdMaxLengthFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMaxLengthFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMaxLengthFacet);
+ if (result == null) result = caseXSDFacet(xsdMaxLengthFacet);
+ if (result == null) result = caseXSDComponent(xsdMaxLengthFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMaxLengthFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MIN_EXCLUSIVE_FACET:
+ {
+ XSDMinExclusiveFacet xsdMinExclusiveFacet = (XSDMinExclusiveFacet)theEObject;
+ T result = caseXSDMinExclusiveFacet(xsdMinExclusiveFacet);
+ if (result == null) result = caseXSDMinFacet(xsdMinExclusiveFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMinExclusiveFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMinExclusiveFacet);
+ if (result == null) result = caseXSDFacet(xsdMinExclusiveFacet);
+ if (result == null) result = caseXSDComponent(xsdMinExclusiveFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMinExclusiveFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MIN_FACET:
+ {
+ XSDMinFacet xsdMinFacet = (XSDMinFacet)theEObject;
+ T result = caseXSDMinFacet(xsdMinFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMinFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMinFacet);
+ if (result == null) result = caseXSDFacet(xsdMinFacet);
+ if (result == null) result = caseXSDComponent(xsdMinFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMinFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MIN_INCLUSIVE_FACET:
+ {
+ XSDMinInclusiveFacet xsdMinInclusiveFacet = (XSDMinInclusiveFacet)theEObject;
+ T result = caseXSDMinInclusiveFacet(xsdMinInclusiveFacet);
+ if (result == null) result = caseXSDMinFacet(xsdMinInclusiveFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMinInclusiveFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMinInclusiveFacet);
+ if (result == null) result = caseXSDFacet(xsdMinInclusiveFacet);
+ if (result == null) result = caseXSDComponent(xsdMinInclusiveFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMinInclusiveFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MIN_LENGTH_FACET:
+ {
+ XSDMinLengthFacet xsdMinLengthFacet = (XSDMinLengthFacet)theEObject;
+ T result = caseXSDMinLengthFacet(xsdMinLengthFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdMinLengthFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdMinLengthFacet);
+ if (result == null) result = caseXSDFacet(xsdMinLengthFacet);
+ if (result == null) result = caseXSDComponent(xsdMinLengthFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdMinLengthFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MODEL_GROUP:
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup)theEObject;
+ T result = caseXSDModelGroup(xsdModelGroup);
+ if (result == null) result = caseXSDTerm(xsdModelGroup);
+ if (result == null) result = caseXSDComponent(xsdModelGroup);
+ if (result == null) result = caseXSDParticleContent(xsdModelGroup);
+ if (result == null) result = caseXSDConcreteComponent(xsdModelGroup);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_MODEL_GROUP_DEFINITION:
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)theEObject;
+ T result = caseXSDModelGroupDefinition(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDRedefinableComponent(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDParticleContent(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDNamedComponent(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDRedefineContent(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDComponent(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDSchemaContent(xsdModelGroupDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdModelGroupDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_NAMED_COMPONENT:
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)theEObject;
+ T result = caseXSDNamedComponent(xsdNamedComponent);
+ if (result == null) result = caseXSDComponent(xsdNamedComponent);
+ if (result == null) result = caseXSDConcreteComponent(xsdNamedComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_NOTATION_DECLARATION:
+ {
+ XSDNotationDeclaration xsdNotationDeclaration = (XSDNotationDeclaration)theEObject;
+ T result = caseXSDNotationDeclaration(xsdNotationDeclaration);
+ if (result == null) result = caseXSDNamedComponent(xsdNotationDeclaration);
+ if (result == null) result = caseXSDSchemaContent(xsdNotationDeclaration);
+ if (result == null) result = caseXSDComponent(xsdNotationDeclaration);
+ if (result == null) result = caseXSDConcreteComponent(xsdNotationDeclaration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_NUMERIC_FACET:
+ {
+ XSDNumericFacet xsdNumericFacet = (XSDNumericFacet)theEObject;
+ T result = caseXSDNumericFacet(xsdNumericFacet);
+ if (result == null) result = caseXSDFundamentalFacet(xsdNumericFacet);
+ if (result == null) result = caseXSDFacet(xsdNumericFacet);
+ if (result == null) result = caseXSDComponent(xsdNumericFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdNumericFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_ORDERED_FACET:
+ {
+ XSDOrderedFacet xsdOrderedFacet = (XSDOrderedFacet)theEObject;
+ T result = caseXSDOrderedFacet(xsdOrderedFacet);
+ if (result == null) result = caseXSDFundamentalFacet(xsdOrderedFacet);
+ if (result == null) result = caseXSDFacet(xsdOrderedFacet);
+ if (result == null) result = caseXSDComponent(xsdOrderedFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdOrderedFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_PARTICLE:
+ {
+ XSDParticle xsdParticle = (XSDParticle)theEObject;
+ T result = caseXSDParticle(xsdParticle);
+ if (result == null) result = caseXSDComplexTypeContent(xsdParticle);
+ if (result == null) result = caseXSDComponent(xsdParticle);
+ if (result == null) result = caseXSDConcreteComponent(xsdParticle);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_PARTICLE_CONTENT:
+ {
+ XSDParticleContent xsdParticleContent = (XSDParticleContent)theEObject;
+ T result = caseXSDParticleContent(xsdParticleContent);
+ if (result == null) result = caseXSDConcreteComponent(xsdParticleContent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_PATTERN_FACET:
+ {
+ XSDPatternFacet xsdPatternFacet = (XSDPatternFacet)theEObject;
+ T result = caseXSDPatternFacet(xsdPatternFacet);
+ if (result == null) result = caseXSDRepeatableFacet(xsdPatternFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdPatternFacet);
+ if (result == null) result = caseXSDFacet(xsdPatternFacet);
+ if (result == null) result = caseXSDComponent(xsdPatternFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdPatternFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_REDEFINABLE_COMPONENT:
+ {
+ XSDRedefinableComponent xsdRedefinableComponent = (XSDRedefinableComponent)theEObject;
+ T result = caseXSDRedefinableComponent(xsdRedefinableComponent);
+ if (result == null) result = caseXSDNamedComponent(xsdRedefinableComponent);
+ if (result == null) result = caseXSDRedefineContent(xsdRedefinableComponent);
+ if (result == null) result = caseXSDComponent(xsdRedefinableComponent);
+ if (result == null) result = caseXSDSchemaContent(xsdRedefinableComponent);
+ if (result == null) result = caseXSDConcreteComponent(xsdRedefinableComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_REDEFINE_CONTENT:
+ {
+ XSDRedefineContent xsdRedefineContent = (XSDRedefineContent)theEObject;
+ T result = caseXSDRedefineContent(xsdRedefineContent);
+ if (result == null) result = caseXSDSchemaContent(xsdRedefineContent);
+ if (result == null) result = caseXSDConcreteComponent(xsdRedefineContent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_REDEFINE:
+ {
+ XSDRedefine xsdRedefine = (XSDRedefine)theEObject;
+ T result = caseXSDRedefine(xsdRedefine);
+ if (result == null) result = caseXSDSchemaCompositor(xsdRedefine);
+ if (result == null) result = caseXSDSchemaDirective(xsdRedefine);
+ if (result == null) result = caseXSDSchemaContent(xsdRedefine);
+ if (result == null) result = caseXSDConcreteComponent(xsdRedefine);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_REPEATABLE_FACET:
+ {
+ XSDRepeatableFacet xsdRepeatableFacet = (XSDRepeatableFacet)theEObject;
+ T result = caseXSDRepeatableFacet(xsdRepeatableFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdRepeatableFacet);
+ if (result == null) result = caseXSDFacet(xsdRepeatableFacet);
+ if (result == null) result = caseXSDComponent(xsdRepeatableFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdRepeatableFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_SCHEMA:
+ {
+ XSDSchema xsdSchema = (XSDSchema)theEObject;
+ T result = caseXSDSchema(xsdSchema);
+ if (result == null) result = caseXSDScope(xsdSchema);
+ if (result == null) result = caseXSDComponent(xsdSchema);
+ if (result == null) result = caseXSDConcreteComponent(xsdSchema);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_SCHEMA_COMPOSITOR:
+ {
+ XSDSchemaCompositor xsdSchemaCompositor = (XSDSchemaCompositor)theEObject;
+ T result = caseXSDSchemaCompositor(xsdSchemaCompositor);
+ if (result == null) result = caseXSDSchemaDirective(xsdSchemaCompositor);
+ if (result == null) result = caseXSDSchemaContent(xsdSchemaCompositor);
+ if (result == null) result = caseXSDConcreteComponent(xsdSchemaCompositor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_SCHEMA_CONTENT:
+ {
+ XSDSchemaContent xsdSchemaContent = (XSDSchemaContent)theEObject;
+ T result = caseXSDSchemaContent(xsdSchemaContent);
+ if (result == null) result = caseXSDConcreteComponent(xsdSchemaContent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_SCHEMA_DIRECTIVE:
+ {
+ XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)theEObject;
+ T result = caseXSDSchemaDirective(xsdSchemaDirective);
+ if (result == null) result = caseXSDSchemaContent(xsdSchemaDirective);
+ if (result == null) result = caseXSDConcreteComponent(xsdSchemaDirective);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_SCOPE:
+ {
+ XSDScope xsdScope = (XSDScope)theEObject;
+ T result = caseXSDScope(xsdScope);
+ if (result == null) result = caseXSDComponent(xsdScope);
+ if (result == null) result = caseXSDConcreteComponent(xsdScope);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_SIMPLE_TYPE_DEFINITION:
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)theEObject;
+ T result = caseXSDSimpleTypeDefinition(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDTypeDefinition(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDComplexTypeContent(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDRedefinableComponent(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDNamedComponent(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDRedefineContent(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDComponent(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDSchemaContent(xsdSimpleTypeDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdSimpleTypeDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_TERM:
+ {
+ XSDTerm xsdTerm = (XSDTerm)theEObject;
+ T result = caseXSDTerm(xsdTerm);
+ if (result == null) result = caseXSDComponent(xsdTerm);
+ if (result == null) result = caseXSDParticleContent(xsdTerm);
+ if (result == null) result = caseXSDConcreteComponent(xsdTerm);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_TOTAL_DIGITS_FACET:
+ {
+ XSDTotalDigitsFacet xsdTotalDigitsFacet = (XSDTotalDigitsFacet)theEObject;
+ T result = caseXSDTotalDigitsFacet(xsdTotalDigitsFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdTotalDigitsFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdTotalDigitsFacet);
+ if (result == null) result = caseXSDFacet(xsdTotalDigitsFacet);
+ if (result == null) result = caseXSDComponent(xsdTotalDigitsFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdTotalDigitsFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_TYPE_DEFINITION:
+ {
+ XSDTypeDefinition xsdTypeDefinition = (XSDTypeDefinition)theEObject;
+ T result = caseXSDTypeDefinition(xsdTypeDefinition);
+ if (result == null) result = caseXSDRedefinableComponent(xsdTypeDefinition);
+ if (result == null) result = caseXSDNamedComponent(xsdTypeDefinition);
+ if (result == null) result = caseXSDRedefineContent(xsdTypeDefinition);
+ if (result == null) result = caseXSDComponent(xsdTypeDefinition);
+ if (result == null) result = caseXSDSchemaContent(xsdTypeDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdTypeDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_WHITE_SPACE_FACET:
+ {
+ XSDWhiteSpaceFacet xsdWhiteSpaceFacet = (XSDWhiteSpaceFacet)theEObject;
+ T result = caseXSDWhiteSpaceFacet(xsdWhiteSpaceFacet);
+ if (result == null) result = caseXSDFixedFacet(xsdWhiteSpaceFacet);
+ if (result == null) result = caseXSDConstrainingFacet(xsdWhiteSpaceFacet);
+ if (result == null) result = caseXSDFacet(xsdWhiteSpaceFacet);
+ if (result == null) result = caseXSDComponent(xsdWhiteSpaceFacet);
+ if (result == null) result = caseXSDConcreteComponent(xsdWhiteSpaceFacet);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_WILDCARD:
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)theEObject;
+ T result = caseXSDWildcard(xsdWildcard);
+ if (result == null) result = caseXSDTerm(xsdWildcard);
+ if (result == null) result = caseXSDComponent(xsdWildcard);
+ if (result == null) result = caseXSDParticleContent(xsdWildcard);
+ if (result == null) result = caseXSDConcreteComponent(xsdWildcard);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XSDPackage.XSD_XPATH_DEFINITION:
+ {
+ XSDXPathDefinition xsdxPathDefinition = (XSDXPathDefinition)theEObject;
+ T result = caseXSDXPathDefinition(xsdxPathDefinition);
+ if (result == null) result = caseXSDComponent(xsdxPathDefinition);
+ if (result == null) result = caseXSDConcreteComponent(xsdxPathDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Annotation</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Annotation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDAnnotation(XSDAnnotation object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Attribute Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Attribute Declaration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDAttributeDeclaration(XSDAttributeDeclaration object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Attribute Group Content</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Attribute Group Content</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDAttributeGroupContent(XSDAttributeGroupContent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Attribute Group Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Attribute Group Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Attribute Use</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Attribute Use</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDAttributeUse(XSDAttributeUse object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Bounded Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Bounded Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDBoundedFacet(XSDBoundedFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Cardinality Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Cardinality Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDCardinalityFacet(XSDCardinalityFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Complex Type Content</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Complex Type Content</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDComplexTypeContent(XSDComplexTypeContent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Complex Type Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Complex Type Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDComponent(XSDComponent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Concrete Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Concrete Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDConcreteComponent(XSDConcreteComponent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Constraining Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Constraining Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDConstrainingFacet(XSDConstrainingFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Diagnostic</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Diagnostic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDDiagnostic(XSDDiagnostic object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Element Declaration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDElementDeclaration(XSDElementDeclaration object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Enumeration Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Enumeration Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDEnumerationFacet(XSDEnumerationFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDFacet(XSDFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Feature</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Feature</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDFeature(XSDFeature object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fixed Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fixed Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDFixedFacet(XSDFixedFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fraction Digits Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fraction Digits Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDFractionDigitsFacet(XSDFractionDigitsFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fundamental Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fundamental Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDFundamentalFacet(XSDFundamentalFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identity Constraint Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identity Constraint Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDIdentityConstraintDefinition(XSDIdentityConstraintDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Import</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Import</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDImport(XSDImport object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Include</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Include</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDInclude(XSDInclude object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Length Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Length Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDLengthFacet(XSDLengthFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Max Exclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Max Exclusive Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMaxExclusiveFacet(XSDMaxExclusiveFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Max Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Max Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMaxFacet(XSDMaxFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Max Inclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Max Inclusive Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMaxInclusiveFacet(XSDMaxInclusiveFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Max Length Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Max Length Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMaxLengthFacet(XSDMaxLengthFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Min Exclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Min Exclusive Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMinExclusiveFacet(XSDMinExclusiveFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Min Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Min Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMinFacet(XSDMinFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Min Inclusive Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Min Inclusive Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMinInclusiveFacet(XSDMinInclusiveFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Min Length Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Min Length Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDMinLengthFacet(XSDMinLengthFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model Group</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Model Group</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDModelGroup(XSDModelGroup object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model Group Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Model Group Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Named Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Named Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDNamedComponent(XSDNamedComponent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Notation Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Notation Declaration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDNotationDeclaration(XSDNotationDeclaration object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Numeric Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Numeric Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDNumericFacet(XSDNumericFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Ordered Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Ordered Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDOrderedFacet(XSDOrderedFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Particle</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Particle</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDParticle(XSDParticle object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Particle Content</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Particle Content</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDParticleContent(XSDParticleContent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Pattern Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Pattern Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDPatternFacet(XSDPatternFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Redefinable Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Redefinable Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDRedefinableComponent(XSDRedefinableComponent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Redefine Content</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Redefine Content</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDRedefineContent(XSDRedefineContent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Redefine</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Redefine</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDRedefine(XSDRedefine object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Repeatable Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Repeatable Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDRepeatableFacet(XSDRepeatableFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Schema</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Schema</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDSchema(XSDSchema object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Schema Compositor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Schema Compositor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDSchemaCompositor(XSDSchemaCompositor object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Schema Content</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Schema Content</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDSchemaContent(XSDSchemaContent object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Schema Directive</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Schema Directive</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDSchemaDirective(XSDSchemaDirective object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Scope</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Scope</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDScope(XSDScope object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Simple Type Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Simple Type Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Term</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Term</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDTerm(XSDTerm object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Total Digits Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Total Digits Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDTotalDigitsFacet(XSDTotalDigitsFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDTypeDefinition(XSDTypeDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>White Space Facet</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>White Space Facet</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDWhiteSpaceFacet(XSDWhiteSpaceFacet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Wildcard</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Wildcard</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDWildcard(XSDWildcard object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>XPath Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>XPath Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXSDXPathDefinition(XSDXPathDefinition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} //XSDSwitch
+
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDUtil.java b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDUtil.java
new file mode 100644
index 0000000..b16524f
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/XSDUtil.java
@@ -0,0 +1,581 @@
+/**
+ * Copyright (c) 2002-2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+package org.eclipse.xsd.util;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDDiagnostic;
+import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDPlugin;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTerm;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.impl.XSDNamedComponentImpl;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ */
+public final class XSDUtil extends XSDConstants
+{
+ /**
+ * Returns the singleton instance of the schema for schemas.
+ */
+ public static XSDSchema getSchemaForSchema(String schemaForSchemaURI)
+ {
+ return XSDSchemaImpl.getSchemaForSchema(schemaForSchemaURI);
+ }
+
+ /**
+ * A cross referencer that finds each usage of an EObject or collection of EObjects,
+ * excluding uninteresting derived references.
+ */
+ public static class UsageCrossReferencer extends EcoreUtil.UsageCrossReferencer
+ {
+ private static final long serialVersionUID = 1L;
+
+ protected Collection<?> eObjectsOfInterest;
+
+ protected UsageCrossReferencer(EObject eObject)
+ {
+ super(eObject);
+ }
+
+ protected UsageCrossReferencer(Resource resource)
+ {
+ super(resource);
+ }
+
+ protected UsageCrossReferencer(ResourceSet resourceSet)
+ {
+ super(resourceSet);
+ }
+
+ protected UsageCrossReferencer(Collection<?> emfObjects)
+ {
+ super(emfObjects);
+ }
+
+ @Override
+ protected boolean crossReference(EObject eObject, EReference eReference, EObject crossReferencedEObject)
+ {
+ return
+ !eReference.isVolatile() &&
+ eReference.isChangeable() &&
+ eObjectsOfInterest.contains(crossReferencedEObject);
+ }
+
+ @Override
+ protected Collection<EStructuralFeature.Setting> findUsage(EObject eObject)
+ {
+ eObjectsOfInterest = Collections.singleton(eObject);
+ crossReference();
+ this.eObjectsOfInterest = null;
+ done();
+ return getCollection(eObject);
+ }
+
+ @Override
+ protected Map<EObject, Collection<EStructuralFeature.Setting>> findAllUsage(Collection<?> eObjectsOfInterest)
+ {
+ this.eObjectsOfInterest = eObjectsOfInterest;
+ crossReference();
+ this.eObjectsOfInterest = null;
+ done();
+ return this;
+ }
+
+ public static Collection<EStructuralFeature.Setting> find(EObject eObjectOfInterest, EObject eObject)
+ {
+ return new UsageCrossReferencer(eObject).findUsage(eObjectOfInterest);
+ }
+
+ public static Collection<EStructuralFeature.Setting> find(EObject eObjectOfInterest, Resource resource)
+ {
+ return new UsageCrossReferencer(resource).findUsage(eObjectOfInterest);
+ }
+
+ public static Collection<EStructuralFeature.Setting> find(EObject eObjectOfInterest, ResourceSet resourceSet)
+ {
+ return new UsageCrossReferencer(resourceSet).findUsage(eObjectOfInterest);
+ }
+
+ public static Collection<EStructuralFeature.Setting> find(EObject eObjectOfInterest, Collection<?> emfObjectsToSearch)
+ {
+ return new UsageCrossReferencer(emfObjectsToSearch).findUsage(eObjectOfInterest);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<?> eObjectsOfInterest, EObject eObject)
+ {
+ return new UsageCrossReferencer(eObject).findAllUsage(eObjectsOfInterest);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<?> eObjectsOfInterest, Resource resource)
+ {
+ return new UsageCrossReferencer(resource).findAllUsage(eObjectsOfInterest);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<?> eObjectsOfInterest, ResourceSet resourceSet)
+ {
+ return new UsageCrossReferencer(resourceSet).findAllUsage(eObjectsOfInterest);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<?> eObjectsOfInterest, Collection<?> emfObjectsToSearch)
+ {
+ return new UsageCrossReferencer(emfObjectsToSearch).findAllUsage(eObjectsOfInterest);
+ }
+ }
+
+ /**
+ * A cross referencer that finds all XSDNamedComponents and each usage of an XSDNamedComponent.
+ */
+ public static class XSDNamedComponentCrossReferencer extends EcoreUtil.CrossReferencer
+ {
+ private static final long serialVersionUID = 1L;
+
+ protected XSDNamedComponentCrossReferencer(EObject eObject)
+ {
+ super(eObject);
+ }
+
+ protected XSDNamedComponentCrossReferencer(Resource resource)
+ {
+ super(resource);
+ }
+
+ protected XSDNamedComponentCrossReferencer(ResourceSet resourceSet)
+ {
+ super(resourceSet);
+ }
+
+ protected XSDNamedComponentCrossReferencer(Collection<?> emfObjects)
+ {
+ super(emfObjects);
+ }
+
+ @Override
+ protected boolean containment(EObject eObject)
+ {
+ // Create an empty setting collection for any named component.
+ //
+ if (eObject instanceof XSDNamedComponent)
+ {
+ getCollection(eObject);
+ }
+ return true;
+ }
+
+ @Override
+ protected boolean crossReference(EObject eObject, EReference eReference, EObject crossReferencedEObject)
+ {
+ // Add a setting for any named component in an interesting reference.
+ //
+ return
+ !eReference.isVolatile() &&
+ eReference.isChangeable() &&
+ crossReferencedEObject instanceof XSDNamedComponent;
+ }
+
+ /**
+ * Returns a map of all XSDNamedComponent cross references in the content tree.
+ */
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(EObject eObject)
+ {
+ XSDNamedComponentCrossReferencer result = new XSDNamedComponentCrossReferencer(eObject);
+ result.crossReference();
+ result.done();
+ return result;
+ }
+
+ /**
+ * Returns a map of all XSDNamedComponent cross references in the content tree.
+ */
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(Resource resource)
+ {
+ XSDNamedComponentCrossReferencer result = new XSDNamedComponentCrossReferencer(resource);
+ result.crossReference();
+ result.done();
+ return result;
+ }
+
+ /**
+ * Returns a map of all XSDNamedComponent cross references in the content tree.
+ */
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(ResourceSet resourceSet)
+ {
+ XSDNamedComponentCrossReferencer result = new XSDNamedComponentCrossReferencer(resourceSet);
+ result.crossReference();
+ result.done();
+ return result;
+ }
+ }
+
+ /**
+ * A cross referencer that finds each usage of URI or collection of URIs.
+ */
+ public static class URICrossReferencer extends EcoreUtil.CrossReferencer
+ {
+ private static final long serialVersionUID = 1L;
+
+ protected String [] uris;
+
+ protected URICrossReferencer(EObject eObject)
+ {
+ super(eObject);
+ }
+
+ protected URICrossReferencer(Resource resource)
+ {
+ super(resource);
+ }
+
+ protected URICrossReferencer(ResourceSet resourceSet)
+ {
+ super(resourceSet);
+ }
+
+ protected URICrossReferencer(Collection<?> emfObjects)
+ {
+ super(emfObjects);
+ }
+
+ @Override
+ protected boolean containment(EObject eObject)
+ {
+ // Create an empty setting collection for any named component.
+ //
+ if (eObject instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)eObject;
+ for (int i = 0; i < uris.length; ++i)
+ {
+ String uri = uris[i];
+ if (xsdNamedComponent.hasURI(uri))
+ {
+ getCollection(eObject);
+ break;
+ }
+ }
+ }
+ return true;
+ }
+
+ @Override
+ protected boolean crossReference(EObject eObject, EReference eReference, EObject crossReferencedEObject)
+ {
+ if (crossReferencedEObject instanceof XSDNamedComponent &&
+ !eReference.isVolatile() &&
+ eReference.isChangeable())
+ {
+ XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)crossReferencedEObject;
+ for (int i = 0; i < uris.length; ++i)
+ {
+ String uri = uris[i];
+ if (xsdNamedComponent.hasURI(uri))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ protected Map<EObject, Collection<EStructuralFeature.Setting>> findURI(String uri)
+ {
+ uris = new String [] { uri };
+ crossReference();
+ uris = null;
+ done();
+ return this;
+ }
+
+ protected Map<EObject, Collection<EStructuralFeature.Setting>> findAllURI(Collection<String> uris)
+ {
+ this.uris = uris.toArray(new String [uris.size()]);
+ crossReference();
+ uris = null;
+ done();
+ return this;
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(String uri, EObject eObject)
+ {
+ return new URICrossReferencer(eObject).findURI(uri);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(String uri, Resource resource)
+ {
+ return new URICrossReferencer(resource).findURI(uri);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(String uri, ResourceSet resourceSet)
+ {
+ return new URICrossReferencer(resourceSet).findURI(uri);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> find(String uri, Collection<?> emfObjectsToSearch)
+ {
+ return new URICrossReferencer(emfObjectsToSearch).findURI(uri);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<String> uris, EObject eObject)
+ {
+ return new URICrossReferencer(eObject).findAllURI(uris);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<String> uris, Resource resource)
+ {
+ return new URICrossReferencer(resource).findAllURI(uris);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<String> uris, ResourceSet resourceSet)
+ {
+ return new URICrossReferencer(resourceSet).findAllURI(uris);
+ }
+
+ public static Map<EObject, Collection<EStructuralFeature.Setting>> findAll(Collection<String> uris, Collection<?> emfObjectsToSearch)
+ {
+ return new URICrossReferencer(emfObjectsToSearch).findAllURI(uris);
+ }
+ }
+
+ /**
+ * This is a wrapper type for representing values of type hexBin or base64Binary.
+ */
+ public static interface ByteSequence
+ {
+ byte[] getBytes();
+ }
+
+ /**
+ * Returns the matching named component in the sorted list of named components,
+ * or <code>null</null> if there isn't one.
+ * This list is expected to be one of a {@link XSDSchema schema's} list of named components.
+ * @param xsdNamedComponents a sorted lists of named components.
+ * @param namespace the namespace to search
+ * @param name the name to search
+ * @return the matching component, if any.
+ */
+ public static XSDNamedComponent findInSortedList(List<? extends XSDNamedComponent> xsdNamedComponents, String namespace, String name)
+ {
+ return XSDNamedComponentImpl.findInSortedList(xsdNamedComponents, namespace, name);
+ }
+
+ /**
+ * Checks the given element's content against the complex type with a given name retrieved from the given schema.
+ * @param schema the schema used to retrieve the complex type definition.
+ * @param complexTypeName the name of the complex type.
+ * @param part annotation part.
+ * @param anchor annotation anchor.
+ * @param element the element whose content to check.
+ * @return a list of partially populated XSDDiagnostics---the primary component is not set---or the empty list if the content is valid.
+ * @since 2.5
+ */
+ public static List<XSDDiagnostic> checkComplexContent(XSDSchema schema, String complexTypeName, String part, String anchor, Element element)
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = schema.resolveComplexTypeDefinition(complexTypeName);
+ return checkComplexContent(xsdComplexTypeDefinition, part, anchor, element);
+ }
+
+ /**
+ * Checks the given element's content against the given complex type.
+ * @param xsdComplexTypeDefinition the reference type.
+ * @param part annotation part.
+ * @param anchor annotation anchor.
+ * @param element the element whose content to check.
+ * @return a list of partially populated XSDDiagnostics---the primary component is not set---or the empty list if the content is valid.
+ * @since 2.5
+ */
+ public static List<XSDDiagnostic> checkComplexContent(XSDComplexTypeDefinition xsdComplexTypeDefinition, String part, String anchor, Element element)
+ {
+ List<XSDDiagnostic> result = new ArrayList<XSDDiagnostic>();
+ XSDParticle complexType = xsdComplexTypeDefinition.getComplexType();
+ boolean mixed = xsdComplexTypeDefinition.isMixed();
+ XSDParticle.DFA dfa = complexType.getDFA();
+ XSDParticle.DFA.State state = dfa.getInitialState();
+ XSDFactory xsdFactory = XSDPackage.eINSTANCE.getXSDFactory();
+ boolean invalidContentDetected = false;
+ for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+ {
+ switch (child.getNodeType())
+ {
+ case Node.ELEMENT_NODE:
+ {
+ if (invalidContentDetected)
+ {
+ continue;
+ }
+ XSDParticle.DFA.Transition transition = state.accept(child.getNamespaceURI(), child.getLocalName());
+ if (transition != null)
+ {
+ state = transition.getState();
+ }
+ else
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic
+ (xsdDiagnostic,
+ "content-valid.1",
+ new Object [] { XSDConstants.uri(child), xsdComplexTypeDefinition.getURI(), getExpected(state) })
+ }));
+ xsdDiagnostic.setAnnotationURI(part + "#" + anchor);
+ xsdDiagnostic.setNode(child);
+ result.add(xsdDiagnostic);
+ invalidContentDetected = true;
+ }
+ break;
+ }
+ case Node.TEXT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ {
+ if (!mixed)
+ {
+ String text = child.getNodeValue();
+ if (text != null)
+ {
+ for (int i = 0, length = text.length(); i < length; ++i)
+ {
+ char character = text.charAt(i);
+ if (character != '\n' && character != '\r' && character != ' ' && character != '\t')
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic
+ (xsdDiagnostic,
+ "content-valid.3",
+ new Object [] { text.substring(i), xsdComplexTypeDefinition.getURI() })
+ }));
+ xsdDiagnostic.setAnnotationURI(part + "#" + anchor);
+ xsdDiagnostic.setNode(child);
+ result.add(xsdDiagnostic);
+ break;
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ boolean incompleteContent = !invalidContentDetected && !state.isAccepting();
+ if (incompleteContent)
+ {
+ XSDDiagnostic xsdDiagnostic = xsdFactory.createXSDDiagnostic();
+ xsdDiagnostic.setSeverity(XSDDiagnosticSeverity.ERROR_LITERAL);
+ xsdDiagnostic.setMessage
+ (XSDPlugin.INSTANCE.getString
+ ("_UI_XSDError_message",
+ new Object []
+ {
+ populateDiagnostic
+ (xsdDiagnostic,
+ "content-valid.2",
+ new Object [] { xsdComplexTypeDefinition.getURI(), getExpected(state) })
+ }));
+ xsdDiagnostic.setAnnotationURI(part + "#" + anchor);
+ xsdDiagnostic.setNode(element);
+ result.add(xsdDiagnostic);
+ }
+ return result;
+ }
+
+ private static String getExpected(XSDParticle.DFA.State state)
+ {
+ StringBuffer result = new StringBuffer();
+ for (XSDParticle.DFA.Transition transition : state.getTransitions())
+ {
+ XSDParticle xsdParticle = transition.getParticle();
+ XSDTerm xsdTerm = xsdParticle.getTerm();
+ if (xsdTerm instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm;
+ if (result.length() != 0)
+ {
+ result.append(" | ");
+ }
+ result.append(xsdElementDeclaration.getName());
+ }
+ else if (xsdTerm instanceof XSDWildcard)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm;
+ if (result.length() != 0)
+ {
+ result.append(" | ");
+ }
+ result.append(xsdWildcard.getStringLexicalNamespaceConstraint());
+ }
+ }
+
+ if (state.isAccepting())
+ {
+ if (result.length() != 0)
+ {
+ result.append(" | ");
+ }
+
+ result.append(XSDPlugin.INSTANCE.getString("expecting_nothing"));
+ }
+
+ return result.length() == 0 ? XSDPlugin.INSTANCE.getString("expecting_nothing") : result.toString();
+ }
+
+ private static String populateDiagnostic(XSDDiagnostic xsdDiagnostic, String key, Object [] substitutions)
+ {
+ xsdDiagnostic.setKey(key);
+ if (substitutions != null)
+ {
+ List<String> values = xsdDiagnostic.getSubstitutions();
+ for (int i = 0; i < substitutions.length; ++i)
+ {
+ Object value = substitutions[i];
+ values.add(value == null ? null : value.toString());
+ }
+ return XSDPlugin.INSTANCE.getString(key, substitutions);
+ }
+ else
+ {
+ return XSDPlugin.INSTANCE.getString(key);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/package.html b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/package.html
new file mode 100644
index 0000000..61dc208
--- /dev/null
+++ b/plugins/org.eclipse.xsd/src/org/eclipse/xsd/util/package.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+<!--
+/**
+ * Copyright (c) 2002-2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ */
+-->
+</head>
+<body>
+
+This provides utility classes and interfaces to augment the basic API for XML Schema,
+as well as sample code.
+
+</body>
+</html>
diff --git a/pom.xml b/pom.xml
index b65a349..7587d7a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.emf</groupId>
- <artifactId>org.eclipse.emf.root</artifactId>
+ <artifactId>org.eclipse.emf.git</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
diff --git a/releng/org.eclipse.emf.parent/Build EMF.launch b/releng/org.eclipse.emf.parent/Build EMF.launch
index 60343e2..5d9e934 100644
--- a/releng/org.eclipse.emf.parent/Build EMF.launch
+++ b/releng/org.eclipse.emf.parent/Build EMF.launch
@@ -10,6 +10,6 @@
</listAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${maven.build.command}"/>
- <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.id=${current_date:yyyyMMddHHmm} -Demf.commit.id=fe63d690ef8473ea88c97f5a5dbcde5f6ca9e0ce -Dxsd.commit.id=411d33726100f7b27ec81ebaeb0704418753c37a -Dmaven.artifact.threads=16 -Duser.home=${system_property:user.home} -Dtycho.debug.resolver=true -DX ${string_prompt:arguments to modify the arguments used for the Tycho build. 	Change -Dtarget-platform to one of the following valid choices. 	 	helios 		indigo 		juno 		kepler 		luna 		mars 		neon 		oxygen 		photon 		2018-09 		2018-12 		2019-03 		2019-06 		2019-09 		2019-12 		2020-03 		2020-06 		2020-09 		2020-12 		2021-03 		2021-06 		2021-09 		2021-12 		2022-03 		2022-06 		2022-09 		2022-12 		2023-03 	Change -DskipTests=false to -DskipTests=true to skip the tests. 		The tests take long to run! 	Change -DDdebugPort=8000 to -DdebugPort=8000 to remote debug the tests. 		Each test will block waiting for a remote debugger to attach. 	Remove --offline to build online. 		Online takes longer but it is needed the first time you build! :-Dtarget-platform=2023-03 -DskipTests=false -DDdebugPort=8000 --offline -DjavaVersion=11} --fail-at-end clean verify"/>
+ <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.id=${current_date:yyyyMMddHHmm} -Dcommit.id=fe63d690ef8473ea88c97f5a5dbcde5f6ca9e0ce -Dmaven.artifact.threads=16 -Duser.home=${system_property:user.home} -Dxtycho.debug.resolver=true -DX -Dorg.eclipse.justj.p2.manager.args="-remote localhost:${system_property:user.home}/emf-updates" ${string_prompt:arguments to modify the arguments used for the Tycho build. 	Change -Dtarget-platform to one of the following valid choices. 	 	helios 		indigo 		juno 		kepler 		luna 		mars 		neon 		oxygen 		photon 		2018-09 		2018-12 		2019-03 		2019-06 		2019-09 		2019-12 		2020-03 		2020-06 		2020-09 		2020-12 		2021-03 		2021-06 		2021-09 		2021-12 		2022-03 		2022-06 		2022-09 		2022-12 		2023-03 	Change -DskipTests=false to -DskipTests=true to skip the tests. 		The tests take long to run! 	Change -DDdebugPort=8000 to -DdebugPort=8000 to remote debug the tests. 		Each test will block waiting for a remote debugger to attach. 	Remove --offline to build online. 		Online takes longer but it is needed the first time you build! :-Dtarget-platform=2023-03 -DskipTests=false -DDdebugPort=8000 --offline -DjavaVersion=11} --fail-at-end clean verify"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${emf.git.clone.location}"/>
</launchConfiguration>
diff --git a/releng/org.eclipse.emf.parent/features/pom.xml b/releng/org.eclipse.emf.parent/features/pom.xml
index 82dd4af..315d893 100644
--- a/releng/org.eclipse.emf.parent/features/pom.xml
+++ b/releng/org.eclipse.emf.parent/features/pom.xml
@@ -65,18 +65,18 @@
<module>../../../tests/org.eclipse.emf.tests-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.example-feature</module>
+ <module>../../../features/org.eclipse.xsd.example-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.ecore.converter-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.edit-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.editor-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.license-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.mapping-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.mapping.editor-feature</module>
- <module>../../../../org.eclipse.xsd/features/org.eclipse.xsd.sdk-feature</module>
+ <module>../../../features/org.eclipse.xsd-feature</module>
+ <module>../../../features/org.eclipse.xsd.ecore.converter-feature</module>
+ <module>../../../features/org.eclipse.xsd.edit-feature</module>
+ <module>../../../features/org.eclipse.xsd.editor-feature</module>
+ <module>../../../features/org.eclipse.xsd.license-feature</module>
+ <module>../../../features/org.eclipse.xsd.mapping-feature</module>
+ <module>../../../features/org.eclipse.xsd.mapping.editor-feature</module>
+ <module>../../../features/org.eclipse.xsd.sdk-feature</module>
- <module>../../../../org.eclipse.xsd/doc/org.eclipse.xsd.doc-feature</module>
+ <module>../../../doc/org.eclipse.xsd.doc-feature</module>
</modules>
@@ -167,10 +167,10 @@
<profiles>
<profile>
- <id>pack-and-sign</id>
+ <id>eclipse-sign</id>
<activation>
<property>
- <name>PACK_AND_SIGN</name>
+ <name>ECLIPSE_SIGN</name>
<value>true</value>
</property>
</activation>
diff --git a/releng/org.eclipse.emf.parent/plugins/pom.xml b/releng/org.eclipse.emf.parent/plugins/pom.xml
index 9c0ee3f..79f63c0 100644
--- a/releng/org.eclipse.emf.parent/plugins/pom.xml
+++ b/releng/org.eclipse.emf.parent/plugins/pom.xml
@@ -98,23 +98,23 @@
<module>../../../plugins/org.eclipse.emf.rap.common.ui</module>
<module>../../../plugins/org.eclipse.emf.rap.edit.ui</module>
- <module>../../../../org.eclipse.xsd/examples/org.eclipse.xsd.example</module>
+ <module>../../../examples/org.eclipse.xsd.example</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.emf.mapping.xsd2ecore</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.emf.mapping.xsd2ecore.editor</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.ecore.converter</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.ecore.exporter</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.ecore.importer</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.edit</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.editor</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.mapping</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.mapping.editor</module>
+ <module>../../../plugins/org.eclipse.emf.mapping.xsd2ecore</module>
+ <module>../../../plugins/org.eclipse.emf.mapping.xsd2ecore.editor</module>
+ <module>../../../plugins/org.eclipse.xsd</module>
+ <module>../../../plugins/org.eclipse.xsd.ecore.converter</module>
+ <module>../../../plugins/org.eclipse.xsd.ecore.exporter</module>
+ <module>../../../plugins/org.eclipse.xsd.ecore.importer</module>
+ <module>../../../plugins/org.eclipse.xsd.edit</module>
+ <module>../../../plugins/org.eclipse.xsd.editor</module>
+ <module>../../../plugins/org.eclipse.xsd.mapping</module>
+ <module>../../../plugins/org.eclipse.xsd.mapping.editor</module>
- <module>../../../../org.eclipse.xsd/plugins/org.eclipse.xsd.example.installer</module>
+ <module>../../../plugins/org.eclipse.xsd.example.installer</module>
- <module>../../../../org.eclipse.xsd/doc/org.eclipse.xsd.cheatsheets</module>
- <module>../../../../org.eclipse.xsd/doc/org.eclipse.xsd.doc</module>
+ <module>../../../doc/org.eclipse.xsd.cheatsheets</module>
+ <module>../../../doc/org.eclipse.xsd.doc</module>
</modules>
@@ -236,29 +236,16 @@
</profile>
<profile>
- <id>pack-and-sign</id>
+ <id>eclipse-sign</id>
<activation>
<property>
- <name>PACK_AND_SIGN</name>
+ <name>ECLIPSE_SIGN</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pack200a-plugin</artifactId>
- <executions>
- <execution>
- <id>pack200-normalize</id>
- <goals>
- <goal>normalize</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
<groupId>org.eclipse.cbi.maven.plugins</groupId>
<artifactId>eclipse-jarsigner-plugin</artifactId>
<executions>
@@ -272,19 +259,6 @@
</plugin>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pack200b-plugin</artifactId>
- <executions>
- <execution>
- <id>pack200-pack</id>
- <goals>
- <goal>pack</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-plugin</artifactId>
<executions>
diff --git a/releng/org.eclipse.emf.parent/pom.xml b/releng/org.eclipse.emf.parent/pom.xml
index 7f52c84..8731078 100644
--- a/releng/org.eclipse.emf.parent/pom.xml
+++ b/releng/org.eclipse.emf.parent/pom.xml
@@ -56,6 +56,19 @@
<module>../org.eclipse.emf.site</module>
</modules>
</profile>
+
+ <profile>
+ <id>promote</id>
+ <activation>
+ <property>
+ <name>promote</name>
+ <value>!false</value>
+ </property>
+ </activation>
+ <modules>
+ <module>promotion</module>
+ </modules>
+ </profile>
</profiles>
<pluginRepositories>
@@ -191,24 +204,12 @@
</plugin>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pack200a-plugin</artifactId>
- <version>${tycho-version}</version>
- </plugin>
-
- <plugin>
<groupId>org.eclipse.cbi.maven.plugins</groupId>
<artifactId>eclipse-jarsigner-plugin</artifactId>
<version>${jarsigner-version}</version>
</plugin>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pack200b-plugin</artifactId>
- <version>${tycho-version}</version>
- </plugin>
-
- <plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-plugin</artifactId>
<version>${tycho-version}</version>
diff --git a/releng/org.eclipse.emf.parent/promotion/pom.xml b/releng/org.eclipse.emf.parent/promotion/pom.xml
new file mode 100644
index 0000000..32d5077
--- /dev/null
+++ b/releng/org.eclipse.emf.parent/promotion/pom.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2022 Eclipse contributors and others.
+
+This program and the accompanying materials
+are made available under the terms of the Eclipse Public License 2.0
+which accompanies this distribution, and is available at
+https://www.eclipse.org/legal/epl-2.0/
+
+SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>org.eclipse.emf.promote</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <properties>
+ <eclipse.repo>https://download.eclipse.org/releases/2022-12</eclipse.repo>
+ <justj.tools.repo>https://download.eclipse.org/justj/tools/updates/nightly/latest</justj.tools.repo>
+ <org.eclipse.storage.user>genie.emf</org.eclipse.storage.user>
+ <org.eclipse.justj.p2.manager.args>-remote ${org.eclipse.storage.user}@projects-storage.eclipse.org:/home/data/httpd/download.eclipse.org/modeling/emf/emf</org.eclipse.justj.p2.manager.args>
+ <org.eclipse.justj.p2.manager.extra.args></org.eclipse.justj.p2.manager.extra.args>
+ <org.eclipse.justj.p2.manager.relative>test</org.eclipse.justj.p2.manager.relative>
+ <maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
+ <org.eclipse.justj.p2.manager.build.url>http://www.example.com/</org.eclipse.justj.p2.manager.build.url>
+ <build.type>nightly</build.type>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-eclipserun-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <executionEnvironment>JavaSE-11</executionEnvironment>
+ <dependencies>
+ <dependency>
+ <artifactId>org.eclipse.justj.p2</artifactId>
+ <type>eclipse-plugin</type>
+ </dependency>
+ <dependency>
+ <artifactId>org.apache.felix.scr</artifactId>
+ <type>eclipse-plugin</type>
+ </dependency>
+ </dependencies>
+ <repositories>
+ <repository>
+ <id>eclipse.repo</id>
+ <layout>p2</layout>
+ <url>${eclipse.repo}</url>
+ </repository>
+ <repository>
+ <id>justj.tools.repo</id>
+ <layout>p2</layout>
+ <url>${justj.tools.repo}</url>
+ </repository>
+ </repositories>
+ </configuration>
+ <executions>
+ <execution>
+ <id>promote</id>
+ <goals>
+ <goal>eclipse-run</goal>
+ </goals>
+ <phase>generate-sources</phase>
+ <configuration>
+ <argLine></argLine>
+ <appArgLine>
+ -consoleLog
+ -application org.eclipse.justj.p2.manager
+ -data @None
+ -nosplash
+ ${org.eclipse.justj.p2.manager.args}
+ -retain 5
+ -label "EMF"
+ -build-url ${org.eclipse.justj.p2.manager.build.url}
+ -root ${project.build.directory}/emf-sync
+ -relative ${org.eclipse.justj.p2.manager.relative}
+ -version-iu org.eclipse.emf.sdk.
+ -commit https://git.eclipse.org/c/emf/org.eclipse.emf.git/commit/?id=${commit.id}
+ -target-url https://download.eclipse.org/modeling/emf/emf/builds
+ -promote ${project.basedir}/../../org.eclipse.emf.site/target/repository
+ -timestamp ${build.timestamp}
+ -type ${build.type}
+ -body-image https://www.eclipse.org/modeling/emf/images/emf_logo.png
+ -breadcrumb "Modeling https://www.eclipse.org/modeling"
+ -breadcrumb "EMF https://www.eclipse.org/modeling/emf"
+ -mapping emf->EMF
+ ${org.eclipse.justj.p2.manager.extra.args}
+ </appArgLine>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/releng/org.eclipse.emf.parent/tp/2019-06.target b/releng/org.eclipse.emf.parent/tp/2019-06.target
index d2a05c7..de812fe 100644
--- a/releng/org.eclipse.emf.parent/tp/2019-06.target
+++ b/releng/org.eclipse.emf.parent/tp/2019-06.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2019-09.target b/releng/org.eclipse.emf.parent/tp/2019-09.target
index 5810f68..f5be92a 100644
--- a/releng/org.eclipse.emf.parent/tp/2019-09.target
+++ b/releng/org.eclipse.emf.parent/tp/2019-09.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2019-12.target b/releng/org.eclipse.emf.parent/tp/2019-12.target
index f195887..f79d3e9 100644
--- a/releng/org.eclipse.emf.parent/tp/2019-12.target
+++ b/releng/org.eclipse.emf.parent/tp/2019-12.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2020-03.target b/releng/org.eclipse.emf.parent/tp/2020-03.target
index f9048cf..ca11225 100644
--- a/releng/org.eclipse.emf.parent/tp/2020-03.target
+++ b/releng/org.eclipse.emf.parent/tp/2020-03.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2020-06.target b/releng/org.eclipse.emf.parent/tp/2020-06.target
index 2737eae..f8c4217 100644
--- a/releng/org.eclipse.emf.parent/tp/2020-06.target
+++ b/releng/org.eclipse.emf.parent/tp/2020-06.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/modeling/emf/emf/builds/milestone/latest"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2020-09.target b/releng/org.eclipse.emf.parent/tp/2020-09.target
index 6e2b8af..e3d9185 100644
--- a/releng/org.eclipse.emf.parent/tp/2020-09.target
+++ b/releng/org.eclipse.emf.parent/tp/2020-09.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2020-12.target b/releng/org.eclipse.emf.parent/tp/2020-12.target
index 9e66851..dcca06e 100644
--- a/releng/org.eclipse.emf.parent/tp/2020-12.target
+++ b/releng/org.eclipse.emf.parent/tp/2020-12.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2021-03.target b/releng/org.eclipse.emf.parent/tp/2021-03.target
index 59a7a89..40bba4b 100644
--- a/releng/org.eclipse.emf.parent/tp/2021-03.target
+++ b/releng/org.eclipse.emf.parent/tp/2021-03.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2021-06.target b/releng/org.eclipse.emf.parent/tp/2021-06.target
index 90523c8..56f95d1 100644
--- a/releng/org.eclipse.emf.parent/tp/2021-06.target
+++ b/releng/org.eclipse.emf.parent/tp/2021-06.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2021-09.target b/releng/org.eclipse.emf.parent/tp/2021-09.target
index 78f9605..642bae1 100644
--- a/releng/org.eclipse.emf.parent/tp/2021-09.target
+++ b/releng/org.eclipse.emf.parent/tp/2021-09.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2021-12.target b/releng/org.eclipse.emf.parent/tp/2021-12.target
index ae9d086..e69ec43 100644
--- a/releng/org.eclipse.emf.parent/tp/2021-12.target
+++ b/releng/org.eclipse.emf.parent/tp/2021-12.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2022-03.target b/releng/org.eclipse.emf.parent/tp/2022-03.target
index 773095f..b55493d 100644
--- a/releng/org.eclipse.emf.parent/tp/2022-03.target
+++ b/releng/org.eclipse.emf.parent/tp/2022-03.target
@@ -23,7 +23,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2022-06.target b/releng/org.eclipse.emf.parent/tp/2022-06.target
index bc855b3..05a5866 100644
--- a/releng/org.eclipse.emf.parent/tp/2022-06.target
+++ b/releng/org.eclipse.emf.parent/tp/2022-06.target
@@ -25,7 +25,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2022-09.target b/releng/org.eclipse.emf.parent/tp/2022-09.target
index 9a6a019..f5736bb 100644
--- a/releng/org.eclipse.emf.parent/tp/2022-09.target
+++ b/releng/org.eclipse.emf.parent/tp/2022-09.target
@@ -25,7 +25,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2022-12.target b/releng/org.eclipse.emf.parent/tp/2022-12.target
index 928cf71..a1d728f 100644
--- a/releng/org.eclipse.emf.parent/tp/2022-12.target
+++ b/releng/org.eclipse.emf.parent/tp/2022-12.target
@@ -25,7 +25,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.parent/tp/2023-03.target b/releng/org.eclipse.emf.parent/tp/2023-03.target
index 13fc4f0..37ef100 100644
--- a/releng/org.eclipse.emf.parent/tp/2023-03.target
+++ b/releng/org.eclipse.emf.parent/tp/2023-03.target
@@ -25,7 +25,7 @@
<repository location="https://www.macromodeling.com/gwt"/>
- <repository location="http://download.itemis.com/updates/releases/2.1.0"/>
+ <repository location="https://download.itemis.com/updates/releases/2.1.0"/>
<repository location="https://download.eclipse.org/rt/rap/3.10/R-20190911-1524"/>
diff --git a/releng/org.eclipse.emf.releng/Build EMF Releng.launch b/releng/org.eclipse.emf.releng/Build EMF Releng.launch
index 0f9ecc8..f16a340 100644
--- a/releng/org.eclipse.emf.releng/Build EMF Releng.launch
+++ b/releng/org.eclipse.emf.releng/Build EMF Releng.launch
@@ -10,6 +10,6 @@
</listAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${maven.build.command}"/>
- <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.id=${current_date:yyyyMMddHHmm} -Demf.commit.id=Unknown -Dxsd.commit.id=Unknown -Dpublish.repository=true -Dpublish.download.root.folder=${maven.build.releng.publish.target} -Dpublish.build.timestamp=${current_date:yyyyMMddHHmm} -Dtycho.debug.resolver=false -Dmaven.artifact.threads=16 -Duser.home=${system_property:user.home} ${string_prompt:arguments to modify the arguments used for the Tycho build. 	Change -Dpublish.build.type to one of the following valid choices. 	 	nightly 		milestone 		release 	 	Change -Dpublish.clean=true to -Dpublish.clean=false to retain stale builds. 		Older nightly and milestone builds will be retained. 	Change -DDdebugPort=8000 to -DdebugPort=8000 to remote debug the test. 		The test will block waiting for a remote debugger to attach. 	Remove --offline to build online. 		Online takes longer but it is needed the first time you build! : -Dpublish.build.type=nightly -Dpublish.clean=true -DDdebugPort=8000 --offline } -DX --fail-at-end clean verify"/>
+ <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.id=${current_date:yyyyMMddHHmm} -Dcommit.id=Unknown -Dpublish.repository=true -Dpublish.download.root.folder=${maven.build.releng.publish.target} -Dpublish.build.timestamp=${current_date:yyyyMMddHHmm} -Dtycho.debug.resolver=false -Dmaven.artifact.threads=16 -Duser.home=${system_property:user.home} ${string_prompt:arguments to modify the arguments used for the Tycho build. 	Change -Dpublish.build.type to one of the following valid choices. 	 	nightly 		milestone 		release 	 	Change -Dpublish.clean=true to -Dpublish.clean=false to retain stale builds. 		Older nightly and milestone builds will be retained. 	Change -DDdebugPort=8000 to -DdebugPort=8000 to remote debug the test. 		The test will block waiting for a remote debugger to attach. 	Remove --offline to build online. 		Online takes longer but it is needed the first time you build! : -Dpublish.build.type=nightly -Dpublish.clean=true -DDdebugPort=8000 --offline } -DX --fail-at-end clean verify"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${emf.git.clone.location}/releng/org.eclipse.emf.releng"/>
</launchConfiguration>
diff --git a/releng/org.eclipse.emf.releng/EMF.setup b/releng/org.eclipse.emf.releng/EMF.setup
index 02e57da..9b1e96b 100644
--- a/releng/org.eclipse.emf.releng/EMF.setup
+++ b/releng/org.eclipse.emf.releng/EMF.setup
@@ -840,7 +840,9 @@
<setupTask
xsi:type="setup.targlets:TargletTask">
<targlet
- name="EMF Core">
+ name="EMF/XSD Core">
+ <requirement
+ name="org.eclipse.emf.git.plain.project"/>
<requirement
name="org.eclipse.emf.all.feature.group"/>
<requirement
@@ -853,8 +855,24 @@
name="org.eclipse.emf.releng.plain.project"/>
<requirement
name="org.eclipse.emf.site.plain.project"/>
+ <requirement
+ name="org.eclipse.xsd.sdk.feature.group"/>
+ <requirement
+ name="org.eclipse.xsd.example.feature.group"/>
<sourceLocator
- rootFolder="${emf.git.clone.location}"/>
+ rootFolder="${emf.git.clone.location}"
+ locateNestedProjects="true">
+ <predicate
+ xsi:type="predicates:NotPredicate">
+ <operand
+ xsi:type="predicates:OrPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.emf"
+ relativePathPattern="plugins/org.eclipse.emf.example.installer/examples/.*|plugins/org.eclipse.xsd.example.installer/examples/.*"/>
+ </operand>
+ </predicate>
+ </sourceLocator>
</targlet>
</setupTask>
<setupTask
@@ -874,7 +892,7 @@
xsi:type="predicates:NotPredicate">
<operand
xsi:type="predicates:NamePredicate"
- pattern=".*\.xcore.*|.*\.xtext.*|.*\.gwt.*|.*\.rap.*"/>
+ pattern=".*\.xcore.*|.*\.xtext.*|.*\.gwt.*|.*\.rap.*|.*\.xsd.*"/>
</operand>
<operand
xsi:type="workingsets:ExclusionPredicate"
@@ -970,7 +988,7 @@
xsi:type="predicates:NotPredicate">
<operand
xsi:type="predicates:NamePredicate"
- pattern=".*\.xcore.*|.*\.xtext.*|.*\.gwt.*|.*\.rap.*"/>
+ pattern=".*\.xcore.*|.*\.xtext.*|.*\.gwt.*|.*\.rap.*|.*\.xsd.*"/>
</operand>
<operand
xsi:type="workingsets:ExclusionPredicate"
@@ -989,7 +1007,7 @@
project="org.eclipse.emf"/>
<operand
xsi:type="predicates:NamePredicate"
- pattern="org\.eclipse\.emf\.releng.*|org\.eclipse\.emf\.parent|org\.eclipse\.emf\.site"/>
+ pattern="org\.eclipse\.emf\.releng.*|org\.eclipse\.emf\.parent|org\.eclipse\.emf\.site|org\.eclipse\.emf\.git"/>
</predicate>
</workingSet>
<workingSet
@@ -1022,6 +1040,75 @@
pattern="org\.eclipse\.emf\.oda.*"/>
</predicate>
</workingSet>
+ <workingSet
+ name="XSD">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.PluginNature"/>
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern=".*\.xsd.*"/>
+ <operand
+ xsi:type="workingsets:ExclusionPredicate"
+ excludedWorkingSet="//'workingsets.core'/@workingSets[name='XSD%20Examples']"/>
+ </predicate>
+ </workingSet>
+ <workingSet
+ name="XSD Examples">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.PluginNature"/>
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern="org\.eclipse\.xsd\.example.*"/>
+ </predicate>
+ </workingSet>
+ <workingSet
+ name="XSD Documentation">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.PluginNature"/>
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern="org\.eclipse\.xsd\.doc|org\.eclipse\.xsd\.cheatsheets"/>
+ </predicate>
+ </workingSet>
+ <workingSet
+ name="XSD Features">
+ <predicate
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.xsd"/>
+ <operand
+ xsi:type="predicates:NaturePredicate"
+ nature="org.eclipse.pde.FeatureNature"/>
+ <operand
+ xsi:type="workingsets:ExclusionPredicate"
+ excludedWorkingSet="//'workingsets.core'/@workingSets[name='EMF%20ODA%20Features']"/>
+ <operand
+ xsi:type="workingsets:ExclusionPredicate"
+ excludedWorkingSet="//'workingsets.core'/@workingSets[name='EMF%20Releng']"/>
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern=".*\.xsd.*"/>
+ </predicate>
+ </workingSet>
</setupTask>
<setupTask
xsi:type="workbench:FileAssociationsTask">
@@ -1111,15 +1198,29 @@
<requirement
name="org.eclipse.xtext.generator"/>
<sourceLocator
- rootFolder="${emf.git.clone.location}">
+ rootFolder="${emf.git.clone.location}"
+ locateNestedProjects="true">
<predicate
- xsi:type="predicates:NamePredicate"
- pattern=".*\.xcore.*|.*\.xtext.*"/>
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern=".*\.xcore.*|.*\.xtext.*"/>
+ <operand
+ xsi:type="predicates:NotPredicate">
+ <operand
+ xsi:type="predicates:OrPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.emf"
+ relativePathPattern="plugins/org.eclipse.emf.example.installer/examples/.*|plugins/org.eclipse.xsd.example.installer/examples/.*"/>
+ </operand>
+ </operand>
+ </predicate>
</sourceLocator>
<repositoryList
name="Xtext">
<repository
- url="http://download.itemis.com/updates/releases/2.1.0"/>
+ url="https://download.itemis.com/updates/releases/2.1.0"/>
<repository
url="${xtext.latest.release.url}"/>
<repository
@@ -1209,7 +1310,19 @@
<requirement
name="com.google.gwt.eclipse.sdkbundle"/>
<sourceLocator
- rootFolder="${emf.git.clone.location}"/>
+ rootFolder="${emf.git.clone.location}"
+ locateNestedProjects="true">
+ <predicate
+ xsi:type="predicates:NotPredicate">
+ <operand
+ xsi:type="predicates:OrPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.emf"
+ relativePathPattern="plugins/org.eclipse.emf.example.installer/examples/.*|plugins/org.eclipse.xsd.example.installer/examples/.*"/>
+ </operand>
+ </predicate>
+ </sourceLocator>
<repositoryList
name="GWT">
<repository
@@ -1283,10 +1396,24 @@
name="org.eclipse.rap.sdk.feature.feature.group"
optional="true"/>
<sourceLocator
- rootFolder="${emf.git.clone.location}">
+ rootFolder="${emf.git.clone.location}"
+ locateNestedProjects="true">
<predicate
- xsi:type="predicates:NamePredicate"
- pattern=".*\.rap.*"/>
+ xsi:type="predicates:AndPredicate">
+ <operand
+ xsi:type="predicates:NamePredicate"
+ pattern=".*\.rap.*"/>
+ <operand
+ xsi:type="predicates:NotPredicate">
+ <operand
+ xsi:type="predicates:OrPredicate">
+ <operand
+ xsi:type="predicates:RepositoryPredicate"
+ project="org.eclipse.emf"
+ relativePathPattern="plugins/org.eclipse.emf.example.installer/examples/.*|plugins/org.eclipse.xsd.example.installer/examples/.*"/>
+ </operand>
+ </operand>
+ </predicate>
</sourceLocator>
</targlet>
</setupTask>
diff --git a/releng/org.eclipse.emf.releng/publish/pommod/Run EMF POM Mod.launch b/releng/org.eclipse.emf.releng/publish/pommod/Run EMF POM Mod.launch
index bea43ca..11182e2 100644
--- a/releng/org.eclipse.emf.releng/publish/pommod/Run EMF POM Mod.launch
+++ b/releng/org.eclipse.emf.releng/publish/pommod/Run EMF POM Mod.launch
@@ -4,6 +4,6 @@
<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${maven.build.java.home}/bin/java.exe"/>
- <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Duser.home=${system_property:user.home} -jar releng/org.eclipse.emf.releng/publish/pommod/target/pommod.jar -dir releng/org.eclipse.emf.releng/publish/target/repository/final ${string_prompt:arguments to modify the arguments used for the pommod.:-dryRun}"/>
+ <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Duser.home=${system_property:user.home} -jar releng/org.eclipse.emf.releng/publish/pommod/target/pommod.jar -dir releng/org.eclipse.emf.releng/publish/target/repository/final ${string_prompt:arguments to modify the arguments used for the pommod.:-dryRun}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${emf.git.clone.location}"/>
</launchConfiguration>
diff --git a/tests/org.eclipse.emf.test.common/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.test.common/META-INF/MANIFEST.MF
index e61ddcf..a7b84f6 100644
--- a/tests/org.eclipse.emf.test.common/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.test.common/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="[2.17.0,3.0.0)",
- org.eclipse.emf.ecore.edit;bundle-version="[2.13.0,3.0.0)"
+ org.eclipse.emf.ecore.edit;bundle-version="[2.14.0,3.0.0)"
Eclipse-LazyStart: true
Bundle-Activator: org.eclipse.emf.test.common.EMFTestCommonPlugin
Export-Package: org.eclipse.emf.test.common,
diff --git a/tests/org.eclipse.emf.test.core/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.test.core/META-INF/MANIFEST.MF
index 9712424..92ff58c 100644
--- a/tests/org.eclipse.emf.test.core/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.test.core/META-INF/MANIFEST.MF
@@ -31,7 +31,7 @@
org.eclipse.emf.ecore;bundle-version="[2.33.0,3.0.0)";visibility:=reexport,
org.eclipse.emf.ecore.change;bundle-version="[2.14.0,3.0.0)",
org.eclipse.emf.ecore.xmi;bundle-version="[2.17.0,3.0.0)";visibility:=reexport,
- org.eclipse.xsd;bundle-version="[2.18.0,3.0.0)",
+ org.eclipse.xsd;bundle-version="[2.19.0,3.0.0)",
org.junit;bundle-version="[4.12.0,5.0.0)",
org.eclipse.emf.test.common;bundle-version="[1.11.0,2.0.0)"
Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/common/NotificationTest.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/common/NotificationTest.java
index 1aaa784..70c91f1 100644
--- a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/common/NotificationTest.java
+++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/common/NotificationTest.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.test.core.common;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -37,26 +38,32 @@
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.junit.Test;
+
/**
* @since 2.2.1
*/
public class NotificationTest
{
+ static
+ {
+ EcorePackage.eINSTANCE.getEClass();
+ }
+
@Test
public void testMergeRemoveNotifications() throws Exception
{
Resource resource = new ResourceImpl();
- resource.getContents().add(EcoreFactory.eINSTANCE.createEAnnotation()); //0
- resource.getContents().add(EcoreFactory.eINSTANCE.createEAttribute()); //1
- resource.getContents().add(EcoreFactory.eINSTANCE.createEClass()); //2
- resource.getContents().add(EcoreFactory.eINSTANCE.createEDataType()); //3
- resource.getContents().add(EcoreFactory.eINSTANCE.createEEnum()); //4
- resource.getContents().add(EcoreFactory.eINSTANCE.createEEnumLiteral()); //5
- resource.getContents().add(EcoreFactory.eINSTANCE.createEFactory()); //6
- resource.getContents().add(EcoreFactory.eINSTANCE.createEObject()); //7
- resource.getContents().add(EcoreFactory.eINSTANCE.createEOperation()); //8
- resource.getContents().add(EcoreFactory.eINSTANCE.createEPackage()); //9
- resource.getContents().add(EcoreFactory.eINSTANCE.createEParameter()); //10
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEAnnotation()); //0
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEAttribute()); //1
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEClass()); //2
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEDataType()); //3
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEEnum()); //4
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEEnumLiteral()); //5
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEFactory()); //6
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEObject()); //7
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEOperation()); //8
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEPackage()); //9
+ resource.getContents().add(EcoreFactory.eINSTANCE.createEParameter()); //10
List<EObject> initialContents = new ArrayList<EObject>(resource.getContents());
@@ -155,10 +162,10 @@
myAdapter.mergedNotification = null;
// Remove items from the ends
- removedObjects.add(resource.getContents().remove(resource.getContents().size()-1));
+ removedObjects.add(resource.getContents().remove(resource.getContents().size() - 1));
removedObjects.add(resource.getContents().remove(0));
removedObjects.add(resource.getContents().remove(0));
- removedObjects.add(resource.getContents().remove(resource.getContents().size()-1));
+ removedObjects.add(resource.getContents().remove(resource.getContents().size() - 1));
removeNotificationMergeCheck(removedObjects, initialContents, myAdapter.mergedNotification);
// *** Reset
@@ -187,9 +194,9 @@
assertEquals(removedItems.size(), oldValue.size());
assertEquals(removedItems.size(), newValue.length);
- for (int i=0; i < removedItems.size(); i++)
+ for (int i = 0; i < removedItems.size(); i++)
{
- assertTrue(removedItems.contains(oldValue.get(i)) );
+ assertTrue(removedItems.contains(oldValue.get(i)));
assertEquals(oldValue.get(i), initialContents.get(newValue[i]));
}
}
@@ -215,29 +222,38 @@
EStructuralFeature upperBound = EcorePackage.Literals.ETYPED_ELEMENT__UPPER_BOUND;
int upperBoundInt = EcorePackage.ETYPED_ELEMENT__UPPER_BOUND;
- NotificationResult[] expected = new NotificationResult[]
- {
- new NotificationResult(c, Notification.ADD, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, null, a1, false, false, false, 0),
- new NotificationResult(c, Notification.ADD_MANY, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, null, Arrays.asList(a2, a3, a4, a5), true, false, false, 1),
- new NotificationResult(c, Notification.REMOVE, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, a2, null, true, false, false, 1),
- new NotificationResult(c, Notification.REMOVE_MANY, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, Arrays.asList(a3, a4), new int[] { 1, 2 }, true, false, false, 1),
- new NotificationResult(c, Notification.MOVE, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, 1, a5, true, false, false, 0),
- new NotificationResult(c, Notification.MOVE, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, 0, a5, true, true, false, 0),
- new NotificationResult(c, Notification.SET, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, a5, a2, true, false, false, 0),
- new NotificationResult(c, Notification.SET, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, a2, a2, true, true, false, 0),
- new NotificationResult(a1, Notification.SET, EAttribute.class, nameInt, name, "a1", "a1", true, true, false, -1),
- new NotificationResult(a1, Notification.SET, EAttribute.class, nameInt, name, "a1", null, true, false, true, -1),
- new NotificationResult(a1, Notification.SET, EAttribute.class, nameInt, name, null, null, false, true, true, -1),
- new NotificationResult(a1, Notification.SET, EAttribute.class, upperBoundInt, upperBound, 1, 1, false, true, true, -1),
- new NotificationResult(a1, Notification.SET, EAttribute.class, upperBoundInt, upperBound, 1, -1, false, false, false, -1),
- new NotificationResult(a1, Notification.SET, EAttribute.class, upperBoundInt, upperBound, -1, -1, true, true, false, -1)
- };
+ NotificationResult[] expected = new NotificationResult []{
+ new NotificationResult(c, Notification.ADD, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, null, a1, false, false, false, 0),
+ new NotificationResult(c, Notification.ADD_MANY, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, null, Arrays.asList(a2, a3, a4, a5), true, false, false, 1),
+ new NotificationResult(c, Notification.REMOVE, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, a2, null, true, false, false, 1),
+ new NotificationResult(
+ c,
+ Notification.REMOVE_MANY,
+ EClass.class,
+ eStructuralFeaturesInt,
+ eStructuralFeatures,
+ Arrays.asList(a3, a4),
+ new int []{ 1, 2 },
+ true,
+ false,
+ false,
+ 1),
+ new NotificationResult(c, Notification.MOVE, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, 1, a5, true, false, false, 0),
+ new NotificationResult(c, Notification.MOVE, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, 0, a5, true, true, false, 0),
+ new NotificationResult(c, Notification.SET, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, a5, a2, true, false, false, 0),
+ new NotificationResult(c, Notification.SET, EClass.class, eStructuralFeaturesInt, eStructuralFeatures, a2, a2, true, true, false, 0),
+ new NotificationResult(a1, Notification.SET, EAttribute.class, nameInt, name, "a1", "a1", true, true, false, -1),
+ new NotificationResult(a1, Notification.SET, EAttribute.class, nameInt, name, "a1", null, true, false, true, -1),
+ new NotificationResult(a1, Notification.SET, EAttribute.class, nameInt, name, null, null, false, true, true, -1),
+ new NotificationResult(a1, Notification.SET, EAttribute.class, upperBoundInt, upperBound, 1, 1, false, true, true, -1),
+ new NotificationResult(a1, Notification.SET, EAttribute.class, upperBoundInt, upperBound, 1, -1, false, false, false, -1),
+ new NotificationResult(a1, Notification.SET, EAttribute.class, upperBoundInt, upperBound, -1, -1, true, true, false, -1) };
NotificationTester tester = new NotificationTester(expected);
c.eAdapters().add(tester);
c.getEStructuralFeatures().add(a1);
c.getEStructuralFeatures().addAll(Arrays.asList(a2, a3, a4, a5));
- c.getEStructuralFeatures().addAll(Collections.<EStructuralFeature>emptyList()); // noop
+ c.getEStructuralFeatures().addAll(Collections.<EStructuralFeature> emptyList()); // noop
c.getEStructuralFeatures().remove(1);
c.getEStructuralFeatures().remove(a6); // noop
c.getEStructuralFeatures().removeAll(Arrays.asList(a3, a4));
@@ -299,22 +315,42 @@
return end - start;
}
-
class NotificationResult
{
public Notifier notifier;
+
public int eventType;
+
public Class<?> expectedClass;
+
public int featureID;
+
public Object feature;
+
public Object oldValue;
+
public Object newValue;
+
public boolean wasSet;
+
public boolean touch;
+
public boolean reset;
+
public int position;
- public NotificationResult(Notifier notifier, int eventType, Class<?> expectedClass, int featureID, Object feature, Object oldValue, Object newValue, boolean wasSet, boolean touch, boolean reset, int position)
+ public NotificationResult(
+ Notifier notifier,
+ int eventType,
+ Class<?> expectedClass,
+ int featureID,
+ Object feature,
+ Object oldValue,
+ Object newValue,
+ boolean wasSet,
+ boolean touch,
+ boolean reset,
+ int position)
{
this.notifier = notifier;
this.eventType = eventType;
@@ -365,6 +401,7 @@
class NotificationTester extends AdapterImpl
{
NotificationResult[] expected;
+
int notificationCount = 0;
public NotificationTester(NotificationResult[] expected)
diff --git a/tests/org.eclipse.emf.test.ecore.xcore/about.mappings b/tests/org.eclipse.emf.test.ecore.xcore/about.mappings
index f9d94ab..cf26020 100644
--- a/tests/org.eclipse.emf.test.ecore.xcore/about.mappings
+++ b/tests/org.eclipse.emf.test.ecore.xcore/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/tests/org.eclipse.emf.test.tools/copyExampleLib.ant b/tests/org.eclipse.emf.test.tools/copyExampleLib.ant
index 05cfb1c..fb582cf 100644
--- a/tests/org.eclipse.emf.test.tools/copyExampleLib.ant
+++ b/tests/org.eclipse.emf.test.tools/copyExampleLib.ant
@@ -8,7 +8,7 @@
-->
<project name="copyExampleLib" basedir="..">
- <property name="examples.path" value="../../org.eclipse.emf/tests/org.eclipse.emf.test.tools/examples" />
+ <property name="examples.path" value="../tests/org.eclipse.emf.test.tools/examples" />
<basename file="${build.project}" property="project" />
<macrodef name="copyExample">
diff --git a/tests/org.eclipse.emf.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.tests/META-INF/MANIFEST.MF
index 60f7c30..4a550d5 100644
--- a/tests/org.eclipse.emf.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.tests;singleton:=true
-Bundle-Version: 2.8.0.qualifier
+Bundle-Version: 2.9.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.emf.tests/about.mappings b/tests/org.eclipse.emf.tests/about.mappings
index f9d94ab..cf26020 100644
--- a/tests/org.eclipse.emf.tests/about.mappings
+++ b/tests/org.eclipse.emf.tests/about.mappings
@@ -2,4 +2,4 @@
# contains fill-ins for about.properties
0=${build.id}
-1=${emf.commit.id}
+1=${commit.id}
diff --git a/tests/org.eclipse.emf.tests/pom.xml b/tests/org.eclipse.emf.tests/pom.xml
index d664bba..6e56027 100644
--- a/tests/org.eclipse.emf.tests/pom.xml
+++ b/tests/org.eclipse.emf.tests/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.eclipse.emf</groupId>
<artifactId>org.eclipse.emf.tests</artifactId>
- <version>2.8.0-SNAPSHOT</version>
+ <version>2.9.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<build>