xscomplextypedecl.java
来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 490 行 · 第 1/2 页
JAVA
490 行
/* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 2001, International * Business Machines, Inc., http://www.apache.org. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */package com.sun.org.apache.xerces.internal.impl.xs;import com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType;import com.sun.org.apache.xerces.internal.xs.*;import com.sun.org.apache.xerces.internal.impl.xs.models.XSCMValidator;import com.sun.org.apache.xerces.internal.impl.xs.models.CMBuilder;import com.sun.org.apache.xerces.internal.impl.xs.util.XSObjectListImpl;import org.w3c.dom.TypeInfo;;/** * The XML representation for a complexType * schema component is a <complexType> element information item * * @author Elena Litani, IBM * @author Sandy Gao, IBM * @version $Id: XSComplexTypeDecl.java,v 1.7 2003/12/12 02:58:29 kk122374 Exp $ */public class XSComplexTypeDecl implements XSComplexTypeDefinition { // name of the complexType String fName = null; // target namespace of the complexType String fTargetNamespace = null; // base type of the complexType XSTypeDefinition fBaseType = null; // derivation method of the complexType short fDerivedBy = XSConstants.DERIVATION_RESTRICTION; // final set of the complexType short fFinal = XSConstants.DERIVATION_NONE; // block set (prohibited substitution) of the complexType short fBlock = XSConstants.DERIVATION_NONE; // flags: whether is abstract; whether contains ID type; // whether it's an anonymous tpye short fMiscFlags = 0; // the attribute group that holds the attribute uses and attribute wildcard XSAttributeGroupDecl fAttrGrp = null; // the content type of the complexType short fContentType = CONTENTTYPE_EMPTY; // if the content type is simple, then the corresponding simpleType XSSimpleType fXSSimpleType = null; // if the content type is element or mixed, the particle XSParticleDecl fParticle = null; // if there is a particle, the content model corresponding to that particle XSCMValidator fCMValidator = null; // list of annotations affiliated with this type XSObjectListImpl fAnnotations = null; public XSComplexTypeDecl() { // do-nothing constructor for now. } public void setValues(String name, String targetNamespace, XSTypeDefinition baseType, short derivedBy, short schemaFinal, short block, short contentType, boolean isAbstract, XSAttributeGroupDecl attrGrp, XSSimpleType simpleType, XSParticleDecl particle, XSObjectListImpl annotations) { fTargetNamespace = targetNamespace; fBaseType = baseType; fDerivedBy = derivedBy; fFinal = schemaFinal; fBlock = block; fContentType = contentType; if(isAbstract) fMiscFlags |= CT_IS_ABSTRACT; fAttrGrp = attrGrp; fXSSimpleType = simpleType; fParticle = particle; fAnnotations = annotations; } public void setName(String name) { fName = name; } public short getTypeCategory() { return COMPLEX_TYPE; } public String getTypeName() { return fName; } public short getFinalSet(){ return fFinal; } public String getTargetNamespace(){ return fTargetNamespace; } // flags for the misc flag private static final short CT_IS_ABSTRACT = 1; private static final short CT_HAS_TYPE_ID = 2; private static final short CT_IS_ANONYMOUS = 4; // methods to get/set misc flag public boolean containsTypeID () { return((fMiscFlags & CT_HAS_TYPE_ID) != 0); } public void setIsAbstractType() { fMiscFlags |= CT_IS_ABSTRACT; } public void setContainsTypeID() { fMiscFlags |= CT_HAS_TYPE_ID; } public void setIsAnonymous() { fMiscFlags |= CT_IS_ANONYMOUS; } public synchronized XSCMValidator getContentModel(CMBuilder cmBuilder) { if (fCMValidator == null) fCMValidator = cmBuilder.getContentModel(this); return fCMValidator; } // some utility methods: // return the attribute group for this complex type public XSAttributeGroupDecl getAttrGrp() { return fAttrGrp; } public String toString() { StringBuffer str = new StringBuffer(); appendTypeInfo(str); return str.toString(); } void appendTypeInfo(StringBuffer str) { String contentType[] = {"EMPTY", "SIMPLE", "ELEMENT", "MIXED"}; String derivedBy[] = {"EMPTY", "EXTENSION", "RESTRICTION"}; str.append("Complex type name='" + fTargetNamespace + "," + getTypeName() + "', "); if (fBaseType != null) str.append(" base type name='" + fBaseType.getName() + "', "); str.append(" content type='" + contentType[fContentType] + "', "); str.append(" isAbstract='" + getAbstract() + "', "); str.append(" hasTypeId='" + containsTypeID() + "', "); str.append(" final='" + fFinal + "', "); str.append(" block='" + fBlock + "', "); if (fParticle != null) str.append(" particle='" + fParticle.toString() + "', "); str.append(" derivedBy='" + derivedBy[fDerivedBy] + "'. "); } public boolean derivedFromType(XSTypeDefinition ancestor, short derivationMethod) { // ancestor is null, retur false if (ancestor == null) return false; // ancestor is anyType, return true if (ancestor == SchemaGrammar.fAnyType) return true; // recursively get base, and compare it with ancestor XSTypeDefinition type = this; while (type != ancestor && // compare with ancestor type != SchemaGrammar.fAnySimpleType && // reached anySimpleType type != SchemaGrammar.fAnyType) { // reached anyType type = type.getBaseType(); } return type == ancestor; } public boolean derivedFrom(String ancestorNS, String ancestorName, short derivationMethod) { // ancestor is null, retur false if (ancestorName == null) return false; // ancestor is anyType, return true if (ancestorNS != null &&
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?