⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsdattributetraverser.java

📁 java1.6众多例子参考
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        String  fixedAtt   = (String) attrValues[XSAttributeChecker.ATTIDX_FIXED];        XInt    formAtt    = (XInt)   attrValues[XSAttributeChecker.ATTIDX_FORM];        String  nameAtt    = (String) attrValues[XSAttributeChecker.ATTIDX_NAME];        QName   typeAtt    = (QName)  attrValues[XSAttributeChecker.ATTIDX_TYPE];                // Step 1: get declaration information        XSAttributeDecl attribute = null;        if (fSchemaHandler.fDeclPool !=null) {            attribute = fSchemaHandler.fDeclPool.getAttributeDecl();        } else {            attribute = new XSAttributeDecl();        }                // get 'name'        if (nameAtt != null)            nameAtt = fSymbolTable.addSymbol(nameAtt);                // get 'target namespace'        String tnsAtt = null;        XSComplexTypeDecl enclCT = null;        short scope = XSAttributeDecl.SCOPE_ABSENT;        if (isGlobal) {            tnsAtt = schemaDoc.fTargetNamespace;            scope = XSAttributeDecl.SCOPE_GLOBAL;        }        else {            if (enclosingCT != null) {                enclCT = enclosingCT;                scope = XSAttributeDecl.SCOPE_LOCAL;            }            if (formAtt != null) {                if (formAtt.intValue() == SchemaSymbols.FORM_QUALIFIED)                    tnsAtt = schemaDoc.fTargetNamespace;            } else if (schemaDoc.fAreLocalAttributesQualified) {                tnsAtt = schemaDoc.fTargetNamespace;            }         }        // get 'value constraint'        // for local named attribute, value constraint is absent        ValidatedInfo attDefault = null;        short constraintType = XSConstants.VC_NONE;        if (isGlobal) {            if (fixedAtt != null) {                attDefault = new ValidatedInfo();                attDefault.normalizedValue = fixedAtt;                constraintType = XSConstants.VC_FIXED;            } else if (defaultAtt != null) {                attDefault = new ValidatedInfo();                attDefault.normalizedValue = defaultAtt;                constraintType = XSConstants.VC_DEFAULT;            }         }                // get 'annotation'        Element child = DOMUtil.getFirstChildElement(attrDecl);        XSAnnotationImpl annotation = null;        if (child != null && DOMUtil.getLocalName(child).equals(SchemaSymbols.ELT_ANNOTATION)) {            annotation = traverseAnnotationDecl(child, attrValues, false, schemaDoc);            child = DOMUtil.getNextSiblingElement(child);        }        else {            String text = DOMUtil.getSyntheticAnnotation(attrDecl);            if (text != null) {                annotation = traverseSyntheticAnnotation(attrDecl, text, attrValues, false, schemaDoc);            }        }                // get 'type definition'        XSSimpleType attrType = null;        boolean haveAnonType = false;                // Handle Anonymous type if there is one        if (child != null) {            String childName = DOMUtil.getLocalName(child);                        if (childName.equals(SchemaSymbols.ELT_SIMPLETYPE)) {                attrType = fSchemaHandler.fSimpleTypeTraverser.traverseLocal(child, schemaDoc, grammar);                haveAnonType = true;                child = DOMUtil.getNextSiblingElement(child);            }        }                // Handler type attribute        if (attrType == null && typeAtt != null) {            XSTypeDefinition type = (XSTypeDefinition)fSchemaHandler.getGlobalDecl(schemaDoc, XSDHandler.TYPEDECL_TYPE, typeAtt, attrDecl);            if (type != null && type.getTypeCategory() == XSTypeDefinition.SIMPLE_TYPE)                attrType = (XSSimpleType)type;            else                reportSchemaError("src-resolve", new Object[]{typeAtt.rawname, "simpleType definition"}, attrDecl);        }                if (attrType == null) {            attrType = SchemaGrammar.fAnySimpleType;        }                attribute.setValues(nameAtt, tnsAtt, attrType,                constraintType, scope, attDefault, enclCT, annotation);                // Step 2: register attribute decl to the grammar        if (isGlobal && nameAtt != null)            grammar.addGlobalAttributeDecl(attribute);                // Step 3: check against schema for schemas                // required attributes        if (nameAtt == null) {            if (isGlobal)                reportSchemaError("s4s-att-must-appear", new Object[]{SchemaSymbols.ELT_ATTRIBUTE, SchemaSymbols.ATT_NAME}, attrDecl);            else                reportSchemaError("src-attribute.3.1", null, attrDecl);            nameAtt = NO_NAME;        }                // element        if (child != null) {            reportSchemaError("s4s-elt-must-match.1", new Object[]{nameAtt, "(annotation?, (simpleType?))", DOMUtil.getLocalName(child)}, child);        }                // Step 4: check 3.2.3 constraints                // src-attribute                // 1 default and fixed must not both be present.        if (defaultAtt != null && fixedAtt != null) {            reportSchemaError("src-attribute.1", new Object[]{nameAtt}, attrDecl);        }                // 2 If default and use are both present, use must have the actual value optional.        // This is checked in "traverse" method                // 3 If the item's parent is not <schema>, then all of the following must be true:        // 3.1 One of ref or name must be present, but not both.        // This is checked in XSAttributeChecker                // 3.2 If ref is present, then all of <simpleType>, form and type must be absent.        // Attributes are checked in XSAttributeChecker, elements are checked in "traverse" method                // 4 type and <simpleType> must not both be present.        if (haveAnonType && (typeAtt != null)) {            reportSchemaError( "src-attribute.4", new Object[]{nameAtt}, attrDecl);        }                // Step 5: check 3.2.6 constraints        // check for NOTATION type        checkNotationType(nameAtt, attrType, attrDecl);                // a-props-correct                // 2 if there is a {value constraint}, the canonical lexical representation of its value must be valid with respect to the {type definition} as defined in String Valid (3.14.4).        if (attDefault != null) {            fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport);            try {                checkDefaultValid(attribute);            }            catch (InvalidDatatypeValueException ide) {                reportSchemaError (ide.getKey(), ide.getArgs(), attrDecl);                reportSchemaError ("a-props-correct.2", new Object[]{nameAtt, attDefault.normalizedValue}, attrDecl);            }        }                // 3 If the {type definition} is or is derived from ID then there must not be a {value constraint}.        if (attDefault != null) {            if (attrType.isIDType() ) {                reportSchemaError ("a-props-correct.3", new Object[]{nameAtt}, attrDecl);            }        }                // no-xmlns                // The {name} of an attribute declaration must not match xmlns.        if (nameAtt != null && nameAtt.equals(XMLSymbols.PREFIX_XMLNS)) {            reportSchemaError("no-xmlns", null, attrDecl);        }                // no-xsi                // The {target namespace} of an attribute declaration, whether local or top-level, must not match http://www.w3.org/2001/XMLSchema-instance (unless it is one of the four built-in declarations given in the next section).        if (tnsAtt != null && tnsAtt.equals(SchemaSymbols.URI_XSI)) {            reportSchemaError("no-xsi", new Object[]{SchemaSymbols.URI_XSI}, attrDecl);        }                // Attribute without a name. Return null.        if (attribute.getName() == null)            return null;                return attribute;    }        // throws an error if the constraint value is invalid for the given type    void checkDefaultValid(XSAttributeDecl attribute) throws InvalidDatatypeValueException {        // validate the original lexical rep, and set the actual value        ((XSSimpleType)attribute.getTypeDefinition()).validate(attribute.getValInfo().normalizedValue, fValidationState, attribute.getValInfo());        // validate the canonical lexical rep        ((XSSimpleType)attribute.getTypeDefinition()).validate(attribute.getValInfo().stringValue(), fValidationState, attribute.getValInfo());    }        // throws an error if the constraint value is invalid for the given type    void checkDefaultValid(XSAttributeUseImpl attrUse) throws InvalidDatatypeValueException {        // validate the original lexical rep, and set the actual value        ((XSSimpleType)attrUse.fAttrDecl.getTypeDefinition()).validate(attrUse.fDefault.normalizedValue, fValidationState, attrUse.fDefault);        // validate the canonical lexical rep        ((XSSimpleType)attrUse.fAttrDecl.getTypeDefinition()).validate(attrUse.fDefault.stringValue(), fValidationState, attrUse.fDefault);    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -