diff options
author | Andrew Haley <aph@redhat.com> | 2016-09-30 16:24:48 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2016-09-30 16:24:48 +0000 |
commit | 07b78716af6a9d7c9fd1e94d9baf94a52c873947 (patch) | |
tree | 3f22b3241c513ad168c8353805614ae1249410f4 /libjava/classpath/gnu/xml/validation/xmlschema | |
parent | eae993948bae8b788c53772bcb9217c063716f93 (diff) | |
download | gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.zip gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.gz gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.bz2 |
Makefile.def: Remove libjava.
2016-09-30 Andrew Haley <aph@redhat.com>
* Makefile.def: Remove libjava.
* Makefile.tpl: Likewise.
* Makefile.in: Regenerate.
* configure.ac: Likewise.
* configure: Likewise.
* gcc/java: Remove.
* libjava: Likewise.
From-SVN: r240662
Diffstat (limited to 'libjava/classpath/gnu/xml/validation/xmlschema')
16 files changed, 0 insertions, 2563 deletions
diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/AnyAttribute.java b/libjava/classpath/gnu/xml/validation/xmlschema/AnyAttribute.java deleted file mode 100644 index 6f94bfe..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/AnyAttribute.java +++ /dev/null @@ -1,66 +0,0 @@ -/* AnyAttribute.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import gnu.xml.validation.datatype.Annotation; - -/** - * An attribute wildcard. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class AnyAttribute -{ - - static final int STRICT = 0; - static final int LAX = 1; - static final int SKIP = 2; - - final String namespace; - - final int processContents; - - Annotation annotation; - - AnyAttribute(String namespace, int processContents) - { - this.namespace = namespace; - this.processContents = processContents; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/AttributeDeclaration.java b/libjava/classpath/gnu/xml/validation/xmlschema/AttributeDeclaration.java deleted file mode 100644 index c475b36..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/AttributeDeclaration.java +++ /dev/null @@ -1,98 +0,0 @@ -/* AttributeDeclaration.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import gnu.xml.validation.datatype.Annotation; -import gnu.xml.validation.datatype.SimpleType; -import javax.xml.namespace.QName; - -/** - * An XML Schema attribute declaration schema component. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class AttributeDeclaration -{ - - static final int NONE = 0; - static final int DEFAULT = 1; - static final int FIXED = 2; - - /** - * The scope of this attribute declaration (global or local). - */ - final boolean scope; - - /** - * The constraint type. - * One of NONE, DEFAULT, FIXED. - */ - final int type; - - /** - * The value constraint. - */ - final String value; - - /** - * The name of the attribute to which this declaration refers. - */ - final QName name; - - /** - * The type definition corresponding to this attribute. - */ - final SimpleType datatype; - - /** - * The annotation associated with this attribute declaration, if any. - */ - final Annotation annotation; - - AttributeDeclaration(boolean scope, int type, String value, QName name, - SimpleType datatype, Annotation annotation) - { - this.scope = scope; - this.type = type; - this.value = value; - this.name = name; - this.datatype = datatype; - this.annotation = annotation; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/AttributeUse.java b/libjava/classpath/gnu/xml/validation/xmlschema/AttributeUse.java deleted file mode 100644 index 9370763..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/AttributeUse.java +++ /dev/null @@ -1,78 +0,0 @@ -/* AttributeUse.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -/** - * An XML Schema attribute use schema component. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class AttributeUse -{ - - /** - * Whether the attribute is required. - */ - final boolean required; - - /** - * The constraint type. - * One of NONE, DEFAULT, FIXED. - */ - final int type; - - /** - * The value constraint. - */ - final String value; - - /** - * The name of the attribute to which this declaration refers. - */ - final AttributeDeclaration declaration; - - AttributeUse(boolean required, int type, String value, - AttributeDeclaration declaration) - { - this.required = required; - this.type = type; - this.value = value; - this.declaration = declaration; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/ComplexType.java b/libjava/classpath/gnu/xml/validation/xmlschema/ComplexType.java deleted file mode 100644 index 826ba32..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/ComplexType.java +++ /dev/null @@ -1,101 +0,0 @@ -/* ComplexType.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import java.util.LinkedHashSet; -import java.util.Set; -import javax.xml.namespace.QName; -import gnu.xml.validation.datatype.Type; - -/** - * A complex type definition. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class ComplexType - extends Type -{ - - /** - * Either a simple type definition or a complex type definition. - */ - QName baseType; - - /** - * Either EXTENSION or RESTRICTION. - */ - int derivationMethod; - - /** - * A subset of {EXTENSION, RESTRICTION}. - */ - final int finality; - - final boolean isAbstract; - - Set attributeUses; - - AnyAttribute attributeWildcard; - - /** - * One of EMPTY, SIMPLE, MIXED, or ELEMENT_ONLY. - */ - int contentType; - - /** - * A simple type definition or a Particle. - */ - Object contentModel; - - final int prohibitedSubstitutions; - - Set annotations; - - ComplexType(QName name, - boolean isAbstract, - int prohibitedSubstitutions, - int finality) - { - super(name); - this.isAbstract = isAbstract; - this.prohibitedSubstitutions = prohibitedSubstitutions; - this.finality = finality; - attributeUses = new LinkedHashSet(); - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/ElementDeclaration.java b/libjava/classpath/gnu/xml/validation/xmlschema/ElementDeclaration.java deleted file mode 100644 index 7392ca5..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/ElementDeclaration.java +++ /dev/null @@ -1,124 +0,0 @@ -/* ElementDeclaration.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import gnu.xml.validation.datatype.Annotation; -import gnu.xml.validation.datatype.Type; -import javax.xml.namespace.QName; - -/** - * An XML Schema element declaration schema component. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class ElementDeclaration -{ - - /** - * The name of the element to which this declaration refers. - */ - final QName name; - - /** - * The type definition corresponding to this element. - */ - Type datatype; - - /** - * The scope of this schema component. - * One of GLOBAL, LOCAL, or ABSENT. - */ - final int scope; - - /** - * If scope is LOCAL, the parent element definition. - */ - final ElementDeclaration parent; - - /** - * The constraint type. - * One of NONE, DEFAULT, FIXED. - */ - final int type; - - /** - * The value constraint. - */ - final String value; - - final boolean nillable; - - // TODO identity-constraint definitions - - final QName substitutionGroup; - - final int substitutionGroupExclusions; - - final int disallowedSubstitutions; - - final boolean isAbstract; - - /** - * The annotation associated with this attribute declaration, if any. - */ - Annotation annotation; - - ElementDeclaration(QName name, - Type datatype, - int scope, ElementDeclaration parent, - int type, String value, - boolean nillable, - QName substitutionGroup, - int substitutionGroupExclusions, - int disallowedSubstitutions, - boolean isAbstract) - { - this.name = name; - this.datatype = datatype; - this.scope = scope; - this.parent = parent; - this.type = type; - this.value = value; - this.nillable = nillable; - this.substitutionGroup = substitutionGroup; - this.substitutionGroupExclusions = substitutionGroupExclusions; - this.disallowedSubstitutions = disallowedSubstitutions; - this.isAbstract = isAbstract; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/Particle.java b/libjava/classpath/gnu/xml/validation/xmlschema/Particle.java deleted file mode 100644 index 5fe4920..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/Particle.java +++ /dev/null @@ -1,60 +0,0 @@ -/* Particle.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -/** - * Container for element content. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class Particle -{ - - final Integer minOccurs; - final Integer maxOccurs; - - final Object term; - - Particle(Integer minOccurs, Integer maxOccurs, Object term) - { - this.minOccurs = minOccurs; - this.maxOccurs = maxOccurs; - this.term = term; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/ValidationException.java b/libjava/classpath/gnu/xml/validation/xmlschema/ValidationException.java deleted file mode 100644 index 716ba88..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/ValidationException.java +++ /dev/null @@ -1,57 +0,0 @@ -/* ValidationException.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import org.xml.sax.Locator; -import org.xml.sax.SAXParseException; - -/** - * An XML Schema validation rule violation. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class ValidationException - extends SAXParseException -{ - - ValidationException(String message, Locator locator) - { - super(message, locator); - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchema.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchema.java deleted file mode 100644 index fb8eb88..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchema.java +++ /dev/null @@ -1,133 +0,0 @@ -/* XMLSchema.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import java.util.LinkedHashMap; -import java.util.Map; -import javax.xml.validation.Schema; -import javax.xml.validation.Validator; -import javax.xml.validation.ValidatorHandler; - -/** - * An XML Schema schema. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class XMLSchema - extends Schema -{ - - static final int FINAL_NONE = 0x00; - static final int FINAL_EXTENSION = 0x01; - static final int FINAL_RESTRICTION = 0x02; - static final int FINAL_LIST = 0x04; - static final int FINAL_UNION = 0x08; - static final int FINAL_ALL = 0x0f; - - static final int BLOCK_NONE = 0x00; - static final int BLOCK_EXTENSION = 0x01; - static final int BLOCK_RESTRICTION = 0x02; - static final int BLOCK_SUBSTITUTION = 0x04; - static final int BLOCK_ALL = 0x07; - - static final int GLOBAL = 0x00; - static final int LOCAL = 0x01; - static final int ABSENT = 0x02; - - static final int CONSTRAINT_NONE = 0x00; - static final int CONSTRAINT_DEFAULT = 0x01; - static final int CONSTRAINT_FIXED = 0x02; - - static final int CONTENT_EMPTY = 0x00; - static final int CONTENT_SIMPLE = 0x01; - static final int CONTENT_MIXED = 0x02; - static final int CONTENT_ELEMENT_ONLY = 0x03; - - final String targetNamespace; - final String version; - final int finalDefault; - final int blockDefault; - final boolean attributeFormQualified; - final boolean elementFormQualified; - - /** - * The element declarations in this schema. - */ - final Map elementDeclarations; - - /** - * The attribute declarations in this schema. - */ - final Map attributeDeclarations; - - /** - * The type declarations in this schema. - */ - final Map types; - - XMLSchema(String targetNamespace, String version, - int finalDefault, int blockDefault, - boolean attributeFormQualified, - boolean elementFormQualified) - { - this.targetNamespace = targetNamespace; - this.version = version; - this.finalDefault = finalDefault; - this.blockDefault = blockDefault; - this.attributeFormQualified = attributeFormQualified; - this.elementFormQualified = elementFormQualified; - elementDeclarations = new LinkedHashMap(); - attributeDeclarations = new LinkedHashMap(); - types = new LinkedHashMap(); - } - - public Validator newValidator() - { - // TODO - //return new XMLSchemaValidator(this); - return null; - } - - public ValidatorHandler newValidatorHandler() - { - // TODO - //return new XMLSchemaValidatorHandler(this); - return null; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaAttributeTypeInfo.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaAttributeTypeInfo.java deleted file mode 100644 index ba83973..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaAttributeTypeInfo.java +++ /dev/null @@ -1,98 +0,0 @@ -/* XMLSchemaAttributeTypeInfo.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import gnu.xml.validation.datatype.SimpleType; - -/** - * Attribute type information provided by validation against an XML Schema. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class XMLSchemaAttributeTypeInfo - extends XMLSchemaTypeInfo -{ - - final XMLSchema schema; - final AttributeDeclaration decl; - final SimpleType type; - boolean id; - final boolean specified; - - XMLSchemaAttributeTypeInfo(XMLSchema schema, AttributeDeclaration decl, - boolean specified) - { - this.schema = schema; - this.decl = decl; - this.specified = specified; - type = (decl == null) ? null : decl.datatype; - } - - public String getTypeName() - { - if (type == null) - { - return "CDATA"; - } - return type.name.getLocalPart(); - } - - public String getTypeNamespace() - { - if (type == null) - { - return ""; - } - return type.name.getNamespaceURI(); - } - - public boolean isDerivedFrom(String typeNamespace, String typeName, - int derivationMethod) - { - if (type == null) - { - return false; - } - else - { - return simpleTypeIsDerivedFrom(type, typeNamespace, typeName, - derivationMethod); - } - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java deleted file mode 100644 index a7bad31..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java +++ /dev/null @@ -1,839 +0,0 @@ -/* XMLSchemaBuilder.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.StringTokenizer; -import javax.xml.XMLConstants; -import javax.xml.namespace.QName; -import org.relaxng.datatype.DatatypeException; -import org.relaxng.datatype.DatatypeLibrary; -import org.relaxng.datatype.helpers.DatatypeLibraryLoader; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import gnu.xml.validation.datatype.Annotation; -import gnu.xml.validation.datatype.SimpleType; -import gnu.xml.validation.datatype.Type; - -/** - * Parses an XML Schema DOM tree, constructing a compiled internal - * representation. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -class XMLSchemaBuilder -{ - - XMLSchema schema; - final DatatypeLibrary typeLibrary; - - XMLSchemaBuilder() - { - final String ns = XMLConstants.W3C_XML_SCHEMA_NS_URI; - typeLibrary = new DatatypeLibraryLoader().createDatatypeLibrary(ns); - } - - void parseSchema(Node node) - throws DatatypeException - { - String uri = node.getNamespaceURI(); - String name = node.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - node.getNodeType() == Node.ELEMENT_NODE) - { - if ("schema".equals(name)) - { - NamedNodeMap attrs = node.getAttributes(); - String targetNamespace = getAttribute(attrs, "targetNamespace"); - String version = getAttribute(attrs, "version"); - String fd = getAttribute(attrs, "finalDefault"); - int finalDefault = parseFullDerivationSet(fd); - String bd = getAttribute(attrs, "blockDefault"); - int blockDefault = parseBlockSet(bd); - String afd = getAttribute(attrs, "attributeFormDefault"); - boolean attributeFormQualified = "qualified".equals(afd); - String efd = getAttribute(attrs, "elementFormDefault"); - boolean elementFormQualified = "qualified".equals(efd); - schema = new XMLSchema(targetNamespace, version, - finalDefault, blockDefault, - attributeFormQualified, - elementFormQualified); - for (Node child = node.getFirstChild(); child != null; - child = child.getNextSibling()) - { - parseTopLevelElement(child); - } - return; - } - } - // TODO throw schema exception - } - - void parseTopLevelElement(Node node) - throws DatatypeException - { - String uri = node.getNamespaceURI(); - String name = node.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - node.getNodeType() == Node.ELEMENT_NODE) - { - if ("element".equals(name)) - { - ElementDeclaration ed = - (ElementDeclaration) parseElement(node, null); - schema.elementDeclarations.put(ed.name, ed); - // TODO - } - else if ("attribute".equals(name)) - { - AttributeDeclaration ad = - (AttributeDeclaration) parseAttribute(node, true); - schema.attributeDeclarations.put(ad.name, ad); - // TODO - } - else if ("type".equals(name)) - { - // TODO - } - else if ("group".equals(name)) - { - // TODO - } - else if ("attributeGroup".equals(name)) - { - // TODO - } - else if ("notation".equals(name)) - { - // TODO - } - else if ("identityConstraint".equals(name)) - { - // TODO - } - } - // TODO throw schema exception - } - - Object parseAttribute(Node node, boolean scope) - throws DatatypeException - { - NamedNodeMap attrs = node.getAttributes(); - String def = getAttribute(attrs, "default"); - String fixed = getAttribute(attrs, "fixed"); - int constraintType = AttributeDeclaration.NONE; - String constraintValue = null; - if (def != null) - { - constraintType = AttributeDeclaration.DEFAULT; - constraintValue = def; - } - else if (fixed != null) - { - constraintType = AttributeDeclaration.FIXED; - constraintValue = fixed; - } - // TODO form = (qualified | unqualified) - String attrName = getAttribute(attrs, "name"); - String attrNamespace = getAttribute(attrs, "targetNamespace"); - String ref = getAttribute(attrs, "ref"); - String use = getAttribute(attrs, "use"); - String type = getAttribute(attrs, "type"); - SimpleType datatype = (type == null) ? null : - parseSimpleType(asQName(type, node)); - Annotation annotation = null; - for (Node child = node.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - annotation = parseAnnotation(child); - } - else if ("simpleType".equals(name)) - { - datatype = parseSimpleType(child); - } - else - { - // TODO throw schema exception - } - } - } - if (scope) - { - return new AttributeDeclaration(scope, - constraintType, - constraintValue, - new QName(attrNamespace, attrName), - datatype, - annotation); - } - else - { - boolean required = "required".equals(use); - // TODO ref - AttributeDeclaration decl = (ref == null) ? - new AttributeDeclaration(scope, - AttributeDeclaration.NONE, - null, - new QName(attrNamespace, attrName), - datatype, - annotation) : - /*schema.getAttributeDeclaration(ref)*/ null; - return new AttributeUse(required, - constraintType, - constraintValue, - decl); - } - } - - int parseFullDerivationSet(String value) - { - int ret = XMLSchema.FINAL_NONE; - if ("#all".equals(value)) - { - ret = XMLSchema.FINAL_ALL; - } - else - { - StringTokenizer st = new StringTokenizer(value, " "); - while (st.hasMoreTokens()) - { - String token = st.nextToken(); - if ("extension".equals(token)) - { - ret |= XMLSchema.FINAL_EXTENSION; - } - else if ("restriction".equals(token)) - { - ret |= XMLSchema.FINAL_RESTRICTION; - } - else if ("list".equals(token)) - { - ret |= XMLSchema.FINAL_LIST; - } - else if ("union".equals(token)) - { - ret |= XMLSchema.FINAL_UNION; - } - } - } - return ret; - } - - int parseSimpleTypeDerivationSet(String value) - { - int ret = XMLSchema.FINAL_NONE; - if ("#all".equals(value)) - { - ret = XMLSchema.FINAL_LIST | - XMLSchema.FINAL_UNION | - XMLSchema.FINAL_RESTRICTION; - } - else - { - StringTokenizer st = new StringTokenizer(value, " "); - while (st.hasMoreTokens()) - { - String token = st.nextToken(); - if ("list".equals(token)) - { - ret |= XMLSchema.FINAL_LIST; - } - else if ("union".equals(token)) - { - ret |= XMLSchema.FINAL_UNION; - } - else if ("restriction".equals(token)) - { - ret |= XMLSchema.FINAL_RESTRICTION; - } - } - } - return ret; - } - - int parseComplexTypeDerivationSet(String value) - { - int ret = XMLSchema.FINAL_NONE; - if ("#all".equals(value)) - { - ret = XMLSchema.FINAL_EXTENSION | XMLSchema.FINAL_RESTRICTION; - } - else - { - StringTokenizer st = new StringTokenizer(value, " "); - while (st.hasMoreTokens()) - { - String token = st.nextToken(); - if ("extension".equals(token)) - { - ret |= XMLSchema.FINAL_EXTENSION; - } - else if ("restriction".equals(token)) - { - ret |= XMLSchema.FINAL_RESTRICTION; - } - } - } - return ret; - } - - int parseBlockSet(String value) - { - int ret = XMLSchema.BLOCK_NONE; - if ("#all".equals(value)) - { - ret = XMLSchema.BLOCK_ALL; - } - else - { - StringTokenizer st = new StringTokenizer(value, " "); - while (st.hasMoreTokens()) - { - String token = st.nextToken(); - if ("extension".equals(token)) - { - ret |= XMLSchema.BLOCK_EXTENSION; - } - else if ("restriction".equals(token)) - { - ret |= XMLSchema.BLOCK_RESTRICTION; - } - else if ("substitution".equals(token)) - { - ret |= XMLSchema.BLOCK_SUBSTITUTION; - } - } - } - return ret; - } - - int parseComplexTypeBlockSet(String value) - { - int ret = XMLSchema.BLOCK_NONE; - if ("#all".equals(value)) - { - ret = XMLSchema.BLOCK_EXTENSION | XMLSchema.BLOCK_RESTRICTION; - } - else - { - StringTokenizer st = new StringTokenizer(value, " "); - while (st.hasMoreTokens()) - { - String token = st.nextToken(); - if ("extension".equals(token)) - { - ret |= XMLSchema.BLOCK_EXTENSION; - } - else if ("restriction".equals(token)) - { - ret |= XMLSchema.BLOCK_RESTRICTION; - } - } - } - return ret; - } - - Object parseElement(Node node, ElementDeclaration parent) - throws DatatypeException - { - NamedNodeMap attrs = node.getAttributes(); - Integer minOccurs = null; - Integer maxOccurs = null; - Node parentNode = node.getParentNode(); - boolean notTopLevel = !"schema".equals(parentNode.getLocalName()); - if (notTopLevel) - { - String ref = getAttribute(attrs, "ref"); - if (ref != null) - { - minOccurs = getOccurrence(getAttribute(attrs, "minOccurs")); - maxOccurs = getOccurrence(getAttribute(attrs, "maxOccurs")); - // TODO resolve top-level element declaration - ElementDeclaration ad = null; - return new Particle(minOccurs, maxOccurs, ad); - } - } - String elementName = getAttribute(attrs, "name"); - String elementNamespace = getAttribute(attrs, "targetNamespace"); - String type = getAttribute(attrs, "type"); - Type datatype = (type != null) ? - parseSimpleType(asQName(type, node)) : null; - int scope = (parent == null) ? - XMLSchema.GLOBAL : - XMLSchema.LOCAL; - String def = getAttribute(attrs, "default"); - String fixed = getAttribute(attrs, "fixed"); - int constraintType = AttributeDeclaration.NONE; - String constraintValue = null; - if (def != null) - { - constraintType = AttributeDeclaration.DEFAULT; - constraintValue = def; - } - else if (fixed != null) - { - constraintType = AttributeDeclaration.FIXED; - constraintValue = fixed; - } - String sg = getAttribute(attrs, "substitutionGroup"); - QName substitutionGroup = QName.valueOf(sg); - String sgPrefix = substitutionGroup.getPrefix(); - if (sgPrefix != null && !"".equals(sgPrefix)) - { - String sgName = substitutionGroup.getLocalPart(); - String sgNamespace = node.lookupNamespaceURI(sgPrefix); - substitutionGroup = new QName(sgNamespace, sgName); - } - - String block = getAttribute(attrs, "block"); - int substitutionGroupExclusions = (block == null) ? - schema.blockDefault : - parseBlockSet(block); - String final_ = getAttribute(attrs, "final"); - int disallowedSubstitutions = (final_ == null) ? - schema.finalDefault : - parseFullDerivationSet(final_); - - boolean nillable = "true".equals(getAttribute(attrs, "nillable")); - boolean isAbstract = "true".equals(getAttribute(attrs, "abstract")); - - if (notTopLevel) - { - minOccurs = getOccurrence(getAttribute(attrs, "minOccurs")); - maxOccurs = getOccurrence(getAttribute(attrs, "maxOccurs")); - String form = getAttribute(attrs, "form"); - if (form != null) - { - if ("qualified".equals(form)) - { - elementNamespace = schema.targetNamespace; - } - } - else if (schema.elementFormQualified) - { - elementNamespace = schema.targetNamespace; - } - } - ElementDeclaration ed = - new ElementDeclaration(new QName(elementNamespace, elementName), - datatype, - scope, parent, - constraintType, constraintValue, - nillable, - substitutionGroup, - substitutionGroupExclusions, - disallowedSubstitutions, - isAbstract); - - for (Node child = node.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - ed.annotation = parseAnnotation(child); - } - else if ("simpleType".equals(name) && datatype == null) - { - ed.datatype = parseSimpleType(child); - } - else if ("complexType".equals(name) && datatype == null) - { - ed.datatype = parseComplexType(child, ed); - } - else - { - // throw schema exception - } - } - } - - if (notTopLevel) - { - return new Particle(minOccurs, maxOccurs, ed); - } - else - { - return ed; - } - } - - Integer getOccurrence(String value) - { - if (value == null) - { - return new Integer(1); - } - else if ("unbounded".equals(value)) - { - return null; - } - else - { - return new Integer(value); - } - } - - SimpleType parseSimpleType(QName typeName) - throws DatatypeException - { - SimpleType type = (SimpleType) schema.types.get(typeName); - if (!XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(typeName.getNamespaceURI())) - return null; - String localName = typeName.getLocalPart(); - return (SimpleType) typeLibrary.createDatatype(localName); - } - - SimpleType parseSimpleType(Node simpleType) - throws DatatypeException - { - NamedNodeMap attrs = simpleType.getAttributes(); - String typeFinal = getAttribute(attrs, "final"); - if (typeFinal == null) - { - Node schema = simpleType.getParentNode(); - while (schema != null && !"schema".equals(schema.getLocalName())) - { - schema = schema.getParentNode(); - } - if (schema != null) - { - NamedNodeMap schemaAttrs = schema.getAttributes(); - typeFinal = getAttribute(schemaAttrs, "finalDefault"); - } - } - int typeFinality = parseSimpleTypeDerivationSet(typeFinal); - QName typeName = asQName(getAttribute(attrs, "name"), simpleType); - int variety = 0; - Set facets = new LinkedHashSet(); - int fundamentalFacets = 0; // TODO - SimpleType baseType = null; // TODO - Annotation annotation = null; - // TODO use DatatypeBuilder - for (Node child = simpleType.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - annotation = parseAnnotation(child); - } - else if ("restriction".equals(name)) - { - // TODO - } - else if ("list".equals(name)) - { - variety = SimpleType.LIST; - // TODO - } - else if ("union".equals(name)) - { - variety = SimpleType.UNION; - // TODO - } - } - } - return new SimpleType(typeName, variety, facets, fundamentalFacets, - baseType, annotation); - } - - Type parseComplexType(Node complexType, ElementDeclaration parent) - throws DatatypeException - { - NamedNodeMap attrs = complexType.getAttributes(); - QName typeName = asQName(getAttribute(attrs, "name"), complexType); - boolean isAbstract = "true".equals(getAttribute(attrs, "abstract")); - String block = getAttribute(attrs, "block"); - int prohibitedSubstitutions = (block == null) ? - schema.blockDefault : - parseComplexTypeBlockSet(block); - String final_ = getAttribute(attrs, "final"); - int finality = (final_ == null) ? - schema.finalDefault : - parseComplexTypeDerivationSet(final_); - ComplexType type = new ComplexType(typeName, isAbstract, - prohibitedSubstitutions, finality); - boolean mixed = "true".equals(getAttribute(attrs, "mixed")); - for (Node child = complexType.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("simpleContent".equals(name)) - { - parseSimpleContent(child, type); - } - } - } - if (mixed) - { - type.contentType = XMLSchema.CONTENT_MIXED; - } - return type; - } - - void parseSimpleContent(Node simpleContent, ComplexType type) - throws DatatypeException - { - for (Node child = simpleContent.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - type.annotations.add(parseAnnotation(child)); - } - else if ("restriction".equals(name)) - { - type.derivationMethod = XMLSchema.FINAL_RESTRICTION; - parseRestriction(child, type); - } - else if ("extension".equals(name)) - { - type.derivationMethod = XMLSchema.FINAL_EXTENSION; - parseExtension(child, type); - } - } - } - } - - void parseRestriction(Node restriction, ComplexType type) - throws DatatypeException - { - NamedNodeMap attrs = restriction.getAttributes(); - String base = getAttribute(attrs, "base"); - QName baseType = asQName(base, restriction); - SimpleType simpleType = null; - for (Node child = restriction.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - type.annotations.add(parseAnnotation(child)); - } - else if ("simpleType".equals(name)) - { - type.contentType = XMLSchema.CONTENT_SIMPLE; - simpleType = parseSimpleType(child); - } - else if ("minExclusive".equals(name)) - { - } - else if ("minInclusive".equals(name)) - { - } - else if ("maxExclusive".equals(name)) - { - } - else if ("maxInclusive".equals(name)) - { - } - else if ("totalDigits".equals(name)) - { - } - else if ("fractionDigits".equals(name)) - { - } - else if ("length".equals(name)) - { - } - else if ("minLength".equals(name)) - { - } - else if ("maxLength".equals(name)) - { - } - else if ("enumeration".equals(name)) - { - } - else if ("whiteSpace".equals(name)) - { - } - else if ("pattern".equals(name)) - { - } - else if ("attribute".equals(name)) - { - AttributeUse use = - (AttributeUse) parseAttribute(child, false); - schema.attributeDeclarations.put(use.declaration.name, - use.declaration); - type.attributeUses.add(use); - } - else if ("attributeGroup".equals(name)) - { - NamedNodeMap agAttrs = child.getAttributes(); - String ref = getAttribute(agAttrs, "ref"); - QName ag = asQName(ref, child); - type.attributeUses.add(ag); - } - else if ("anyAttribute".equals(name)) - { - type.attributeWildcard = parseAnyAttribute(child); - } - } - } - } - - void parseExtension(Node extension, ComplexType type) - throws DatatypeException - { - NamedNodeMap attrs = extension.getAttributes(); - String base = getAttribute(attrs, "base"); - QName baseType = asQName(base, extension); - for (Node child = extension.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - type.annotations.add(parseAnnotation(child)); - } - else if ("attribute".equals(name)) - { - AttributeUse use = - (AttributeUse) parseAttribute(child, false); - schema.attributeDeclarations.put(use.declaration.name, - use.declaration); - type.attributeUses.add(use); - } - else if ("attributeGroup".equals(name)) - { - NamedNodeMap agAttrs = child.getAttributes(); - String ref = getAttribute(agAttrs, "ref"); - QName ag = asQName(ref, child); - type.attributeUses.add(ag); - } - else if ("anyAttribute".equals(name)) - { - type.attributeWildcard = parseAnyAttribute(child); - } - } - } - } - - AnyAttribute parseAnyAttribute(Node node) - { - NamedNodeMap attrs = node.getAttributes(); - String namespace = getAttribute(attrs, "namespace"); - String pc = getAttribute(attrs, "processContents"); - int processContents = AnyAttribute.STRICT; - if ("lax".equals(pc)) - { - processContents = AnyAttribute.LAX; - } - else if ("skip".equals(pc)) - { - processContents = AnyAttribute.SKIP; - } - AnyAttribute ret = new AnyAttribute(namespace, processContents); - for (Node child = node.getFirstChild(); child != null; - child = child.getNextSibling()) - { - String uri = child.getNamespaceURI(); - String name = child.getLocalName(); - if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri) && - child.getNodeType() == Node.ELEMENT_NODE) - { - if ("annotation".equals(name)) - { - ret.annotation = parseAnnotation(child); - } - } - } - return ret; - } - - Annotation parseAnnotation(Node node) - { - // TODO - return null; - } - - private static String getAttribute(NamedNodeMap attrs, String name) - { - Node attr = attrs.getNamedItem(name); - return (attr == null) ? null : attr.getNodeValue(); - } - - private static QName asQName(String text, Node resolver) - { - QName name = QName.valueOf(text); - String prefix = name.getPrefix(); - if (prefix != null && prefix.length() > 0) - { - String uri = resolver.lookupNamespaceURI(prefix); - name = new QName(uri, name.getLocalPart()); - } - return name; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaElementTypeInfo.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaElementTypeInfo.java deleted file mode 100644 index 99a59f3..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaElementTypeInfo.java +++ /dev/null @@ -1,91 +0,0 @@ -/* XMLSchemaElementTypeInfo.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import gnu.xml.validation.datatype.SimpleType; -import gnu.xml.validation.datatype.Type; - -/** - * Element type information provided by validation against an XML Schema. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class XMLSchemaElementTypeInfo - extends XMLSchemaTypeInfo -{ - - final XMLSchema schema; - final ElementDeclaration decl; - final Type type; - boolean nil; - - XMLSchemaElementTypeInfo(XMLSchema schema, ElementDeclaration decl, - Type type) - { - this.schema = schema; - this.decl = decl; - this.type = type; - } - - public String getTypeName() - { - return type.name.getLocalPart(); - } - - public String getTypeNamespace() - { - return type.name.getNamespaceURI(); - } - - public boolean isDerivedFrom(String typeNamespace, String typeName, - int derivationMethod) - { - if (type instanceof SimpleType) - { - SimpleType simpleType = (SimpleType) type; - return simpleTypeIsDerivedFrom(simpleType, typeNamespace, typeName, - derivationMethod); - } - else - { - // TODO - return false; - } - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaSchemaFactory.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaSchemaFactory.java deleted file mode 100644 index 18e91f2..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaSchemaFactory.java +++ /dev/null @@ -1,171 +0,0 @@ -/* XMLSchemaSchemaFactory.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import java.io.IOException; -import java.net.URL; -import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; -import org.relaxng.datatype.DatatypeException; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.ls.LSResourceResolver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * Schema factory for W3C XML Schema schemata. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -public class XMLSchemaSchemaFactory - extends SchemaFactory -{ - - LSResourceResolver resourceResolver; - ErrorHandler errorHandler; - - public LSResourceResolver getResourceResolver() - { - return resourceResolver; - } - - public void setResourceResolver(LSResourceResolver resourceResolver) - { - this.resourceResolver = resourceResolver; - } - - public ErrorHandler getErrorHandler() - { - return this.errorHandler; - } - - public void setErrorHandler(ErrorHandler errorHandler) - { - this.errorHandler = errorHandler; - } - - - public boolean isSchemaLanguageSupported(String schemaLanguage) - { - return XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(schemaLanguage); - } - - public Schema newSchema() - throws SAXException - { - // TODO - throw new UnsupportedOperationException(); - } - - public Schema newSchema(Source[] schemata) - throws SAXException - { - if (schemata == null || schemata.length != 1) - throw new IllegalArgumentException("must specify one source"); - // TODO multiple sources - try - { - Document doc = getDocument(schemata[0]); - XMLSchemaBuilder builder = new XMLSchemaBuilder(); - builder.parseSchema(doc); - return builder.schema; - } - catch (IOException e) - { - SAXException e2 = new SAXException(e.getMessage()); - e2.initCause(e); - throw e2; - } - catch (DatatypeException e) - { - SAXException e2 = new SAXException(e.getMessage()); - e2.initCause(e); - throw e2; - } - } - - private static Document getDocument(Source source) - throws SAXException, IOException - { - if (source instanceof DOMSource) - { - Node node = ((DOMSource) source).getNode(); - if (node != null && node instanceof Document) - return (Document) node; - } - String url = source.getSystemId(); - try - { - InputSource input = new InputSource(url); - if (source instanceof StreamSource) - { - StreamSource streamSource = (StreamSource) source; - input.setByteStream(streamSource.getInputStream()); - input.setCharacterStream(streamSource.getReader()); - } - if (input.getByteStream() == null && - input.getCharacterStream() == null && - url != null) - input.setByteStream(new URL(url).openStream()); - DocumentBuilderFactory f = DocumentBuilderFactory.newInstance(); - f.setNamespaceAware(true); - f.setCoalescing(true); - f.setExpandEntityReferences(true); - f.setIgnoringComments(true); - f.setIgnoringElementContentWhitespace(true); - DocumentBuilder b = f.newDocumentBuilder(); - return b.parse(input); - } - catch (ParserConfigurationException e) - { - SAXException e2 = new SAXException(e.getMessage()); - e2.initCause(e); - throw e2; - } - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfo.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfo.java deleted file mode 100644 index c1ca951..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfo.java +++ /dev/null @@ -1,76 +0,0 @@ -/* XMLSchemaTypeInfo.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import org.w3c.dom.TypeInfo; -import gnu.xml.validation.datatype.SimpleType; - -/** - * Abstract superclass providing simple type derivation. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -abstract class XMLSchemaTypeInfo - implements TypeInfo -{ - - protected boolean simpleTypeIsDerivedFrom(SimpleType simpleType, - String typeNamespace, - String typeName, - int derivationMethod) - { - switch (derivationMethod) - { - case TypeInfo.DERIVATION_RESTRICTION: - SimpleType baseType = simpleType.baseType; - while (baseType != null) - { - if (baseType.name.getNamespaceURI().equals(typeNamespace) && - baseType.name.getLocalPart().equals(typeName)) - { - return true; - } - baseType = baseType.baseType; - } - break; - // TODO other methods - } - return false; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfoProvider.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfoProvider.java deleted file mode 100644 index 4fc80d3..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfoProvider.java +++ /dev/null @@ -1,81 +0,0 @@ -/* XMLSchemaTypeInfoProvider.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import javax.xml.validation.TypeInfoProvider; -import org.w3c.dom.TypeInfo; - -/** - * TypeInfo provider for XML Schema validator handler. - * This simply delegates to the handler. It wouldn't be required if - * TypeInfoProvider were an interface instead of an abstract class. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class XMLSchemaTypeInfoProvider - extends TypeInfoProvider -{ - - final XMLSchemaValidatorHandler handler; - - XMLSchemaTypeInfoProvider(XMLSchemaValidatorHandler handler) - { - this.handler = handler; - } - - public TypeInfo getElementTypeInfo() - { - return handler.getElementTypeInfo(); - } - - public TypeInfo getAttributeTypeInfo(int index) - { - return handler.getAttributeTypeInfo(index); - } - - public boolean isIdAttribute(int index) - { - return handler.isIdAttribute(index); - } - - public boolean isSpecified(int index) - { - return handler.isSpecified(index); - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaValidator.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaValidator.java deleted file mode 100644 index 6239ba6..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaValidator.java +++ /dev/null @@ -1,97 +0,0 @@ -/* XMLSchemaValidator.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import java.io.IOException; -import javax.xml.validation.Validator; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import org.w3c.dom.ls.LSResourceResolver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; - -/** - * JAXP validator for an XML Schema. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class XMLSchemaValidator - extends Validator -{ - - final XMLSchema schema; - - ErrorHandler errorHandler; - LSResourceResolver resourceResolver; - - XMLSchemaValidator(XMLSchema schema) - { - this.schema = schema; - } - - public void reset() - { - } - - public void validate(Source source, Result result) - throws SAXException, IOException - { - // TODO - } - - public ErrorHandler getErrorHandler() - { - return errorHandler; - } - - public void setErrorHandler(ErrorHandler errorHandler) - { - this.errorHandler = errorHandler; - } - - public LSResourceResolver getResourceResolver() - { - return resourceResolver; - } - - public void setResourceResolver(LSResourceResolver resourceResolver) - { - this.resourceResolver = resourceResolver; - } - -} diff --git a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java b/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java deleted file mode 100644 index 6c4f1f3..0000000 --- a/libjava/classpath/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java +++ /dev/null @@ -1,393 +0,0 @@ -/* XMLSchemaValidatorHandler.java -- - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.validation.xmlschema; - -import java.util.ArrayList; -import java.util.LinkedList; -import javax.xml.XMLConstants; -import javax.xml.namespace.QName; -import javax.xml.validation.TypeInfoProvider; -import javax.xml.validation.ValidatorHandler; -import org.relaxng.datatype.DatatypeException; -import org.relaxng.datatype.DatatypeLibrary; -import org.relaxng.datatype.helpers.DatatypeLibraryLoader; -import org.w3c.dom.TypeInfo; -import org.w3c.dom.ls.LSResourceResolver; -import org.xml.sax.Attributes; -import org.xml.sax.ContentHandler; -import org.xml.sax.ErrorHandler; -import org.xml.sax.Locator; -import org.xml.sax.SAXException; -import org.xml.sax.ext.Attributes2Impl; -import org.xml.sax.helpers.NamespaceSupport; -import gnu.xml.validation.datatype.SimpleType; -import gnu.xml.validation.datatype.Type; - -/** - * Streaming validator. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -final class XMLSchemaValidatorHandler - extends ValidatorHandler -{ - - final XMLSchema schema; - final TypeInfoProvider typeInfoProvider; - final NamespaceSupport namespaceSupport; - final DatatypeLibrary typeLibrary; - Locator loc; - ContentHandler contentHandler; - ErrorHandler errorHandler; - LSResourceResolver resourceResolver; - final LinkedList context; // element context - final ArrayList attributes; // attribute context; - - XMLSchemaValidatorHandler(XMLSchema schema) - { - this.schema = schema; - typeInfoProvider = new XMLSchemaTypeInfoProvider(this); - namespaceSupport = new NamespaceSupport(); - context = new LinkedList(); - attributes = new ArrayList(); - final String ns = XMLConstants.W3C_XML_SCHEMA_NS_URI; - typeLibrary = new DatatypeLibraryLoader().createDatatypeLibrary(ns); - } - - public ContentHandler getContentHandler() - { - return contentHandler; - } - - public void setContentHandler(ContentHandler contentHandler) - { - this.contentHandler = contentHandler; - } - - public ErrorHandler getErrorHandler() - { - return errorHandler; - } - - public void setErrorHandler(ErrorHandler errorHandler) - { - this.errorHandler = errorHandler; - } - - public LSResourceResolver getResourceResolver() - { - return resourceResolver; - } - - public void setResourceResolver(LSResourceResolver resourceResolver) - { - this.resourceResolver = resourceResolver; - } - - public TypeInfoProvider getTypeInfoProvider() - { - return typeInfoProvider; - } - - TypeInfo getElementTypeInfo() - { - return (XMLSchemaElementTypeInfo) context.getFirst(); - } - - TypeInfo getAttributeTypeInfo(int index) - { - return (XMLSchemaAttributeTypeInfo) attributes.get(index); - } - - boolean isIdAttribute(int index) - { - XMLSchemaAttributeTypeInfo typeInfo = - (XMLSchemaAttributeTypeInfo) attributes.get(index); - return typeInfo.id; - } - - boolean isSpecified(int index) - { - XMLSchemaAttributeTypeInfo typeInfo = - (XMLSchemaAttributeTypeInfo) attributes.get(index); - return typeInfo.specified; - } - - public void setDocumentLocator(Locator locator) - { - loc = locator; - if (contentHandler != null) - { - contentHandler.setDocumentLocator(locator); - } - } - - public void startDocument() - throws SAXException - { - namespaceSupport.reset(); - context.clear(); - attributes.clear(); - if (contentHandler != null) - { - contentHandler.startDocument(); - } - } - - public void endDocument() - throws SAXException - { - if (contentHandler != null) - { - contentHandler.endDocument(); - } - } - - public void startPrefixMapping(String prefix, String uri) - throws SAXException - { - namespaceSupport.declarePrefix(prefix, uri); - if (contentHandler != null) - { - contentHandler.startPrefixMapping(prefix, uri); - } - } - - public void endPrefixMapping(String prefix) - throws SAXException - { - if (contentHandler != null) - { - contentHandler.endPrefixMapping(prefix); - } - } - - public void startElement(String uri, String localName, String qName, - Attributes atts) - throws SAXException - { - namespaceSupport.pushContext(); - QName name = new QName(uri, localName); - ElementDeclaration decl = - (ElementDeclaration) schema.elementDeclarations.get(name); - // Validation Rule: Element Locally Valid (Element) - String xsiType = - atts.getValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "type"); - xsiType = xsiType.trim(); // normalise - String xsiNil = - atts.getValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "nil"); - Type type = decl.datatype; - if (xsiType.length() > 0) - { - try - { - Type specifiedType = resolveType(xsiType); - // TODO 4.3 - type = specifiedType; - } - catch (DatatypeException e) // 4.1, 4.2 - { - ValidationException e2 = - new ValidationException("Can't resolve type " + xsiType, - loc); - e2.initCause(e); - throw e2; - } - } - XMLSchemaElementTypeInfo typeInfo = - new XMLSchemaElementTypeInfo(schema, decl, type); - if (decl == null) // 1 - { - throw new ValidationException("No declaration for " + name, loc); - } - if (decl.isAbstract) // 2 - { - throw new ValidationException("Declaration for " + name + - " is abstract", loc); - } - if (xsiNil.length() > 0) - { - if (!decl.nillable) // 3.1 - { - throw new ValidationException("Declaration for " + name + - " is nillable but xsi:nil present", - loc); - } - else if ("true".equals(xsiNil)) // 3.2 - { - typeInfo.nil = true; - if (decl.type == XMLSchema.CONSTRAINT_FIXED) // 3.2.2 - { - throw new ValidationException("Declaration for " + name + - " is fixed but xsi:nil is true", - loc); - } - } - } - // TODO 5, 6, 7 - - // parent - if (!context.isEmpty()) - { - XMLSchemaElementTypeInfo parent = - (XMLSchemaElementTypeInfo) context.getFirst(); - if (parent.nil) // Element Locally Valid (Element) 3.2.1 - { - throw new ValidationException("Parent of " + qName + - " is declared xsi:nil", loc); - } - // TODO - } - context.addFirst(typeInfo); - // attributes - int len = atts.getLength(); - Attributes2Impl atts2 = new Attributes2Impl(); - int count = 0; - for (int i = 0; i < len; i++) - { - String attUri = atts.getURI(i); - String attLocalName = atts.getLocalName(i); - String attQName = atts.getQName(i); - String attValue = atts.getValue(i); - - if (XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI.equals(attUri)) - { - continue; // ? - } - - QName attName = new QName(attUri, attLocalName); - AttributeDeclaration attDecl = - (AttributeDeclaration) schema.attributeDeclarations.get(attName); - boolean declared = (attDecl != null); - - String attType = (attDecl != null) ? - attDecl.datatype.toString() : "CDATA"; - XMLSchemaAttributeTypeInfo attTypeInfo = - new XMLSchemaAttributeTypeInfo(schema, attDecl, true); - attributes.add(attTypeInfo); - - atts2.addAttribute(attUri, attLocalName, attQName, attType, attValue); - atts2.setDeclared(count, declared); - atts2.setSpecified(count, true); - count++; - } - // add defaulted attributes to atts2 - // TODO - // atts2.setSpecified(count, false); - if (contentHandler != null) - { - contentHandler.startElement(uri, localName, qName, atts2); - } - } - - public void endElement(String uri, String localName, String qName) - throws SAXException - { - // TODO check all required have been seen - context.removeFirst(); - attributes.clear(); - namespaceSupport.popContext(); - if (contentHandler != null) - { - contentHandler.endElement(uri, localName, qName); - } - } - - public void characters(char[] ch, int start, int length) - throws SAXException - { - XMLSchemaElementTypeInfo parent = - (XMLSchemaElementTypeInfo) context.getFirst(); - if (parent.nil) // Element Locally Valid (Element) 3.2.1 - { - throw new ValidationException(parent.decl.name.toString() + - " is declared xsi:nil", - loc); - } - // TODO - if (contentHandler != null) - { - contentHandler.characters(ch, start, length); - } - } - - public void ignorableWhitespace(char[] ch, int start, int length) - throws SAXException - { - if (contentHandler != null) - { - contentHandler.ignorableWhitespace(ch, start, length); - } - } - - public void processingInstruction(String target, String data) - throws SAXException - { - if (contentHandler != null) - { - contentHandler.processingInstruction(target, data); - } - } - - public void skippedEntity(String name) - throws SAXException - { - if (contentHandler != null) - { - contentHandler.skippedEntity(name); - } - } - - Type resolveType(String value) - throws DatatypeException - { - QName name = QName.valueOf(value); - String prefix = name.getPrefix(); - String localName = name.getLocalPart(); - if (prefix != null && prefix.length() > 0) - { - String uri = namespaceSupport.getURI(prefix); - if (!XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri)) - return null; - } - if ("anyType".equals(localName)) - return Type.ANY_TYPE; - return (SimpleType) typeLibrary.createDatatype(localName); - } - -} |