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

📄 xmlschemastypes.c

📁 xml开源解析代码.版本为libxml2-2.6.29,可支持GB3212.网络消息发送XML时很有用.
💻 C
📖 第 1 页 / 共 5 页
字号:
    * primitive datatypes    */    xmlSchemaTypeStringDef = xmlSchemaInitBasicType("string",                                                    XML_SCHEMAS_STRING,						    xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeDecimalDef = xmlSchemaInitBasicType("decimal",                                                     XML_SCHEMAS_DECIMAL,						     xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeDateDef = xmlSchemaInitBasicType("date",                                                  XML_SCHEMAS_DATE,						  xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeDatetimeDef = xmlSchemaInitBasicType("dateTime",                                                      XML_SCHEMAS_DATETIME,						      xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeTimeDef = xmlSchemaInitBasicType("time",                                                  XML_SCHEMAS_TIME,						  xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeGYearDef = xmlSchemaInitBasicType("gYear",                                                   XML_SCHEMAS_GYEAR,						   xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeGYearMonthDef = xmlSchemaInitBasicType("gYearMonth",                                                        XML_SCHEMAS_GYEARMONTH,							xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeGMonthDef = xmlSchemaInitBasicType("gMonth",                                                    XML_SCHEMAS_GMONTH,						    xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeGMonthDayDef = xmlSchemaInitBasicType("gMonthDay",                                                       XML_SCHEMAS_GMONTHDAY,						       xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeGDayDef = xmlSchemaInitBasicType("gDay",                                                  XML_SCHEMAS_GDAY,						  xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeDurationDef = xmlSchemaInitBasicType("duration",                                                      XML_SCHEMAS_DURATION,						      xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeFloatDef = xmlSchemaInitBasicType("float",                                                   XML_SCHEMAS_FLOAT,						   xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeDoubleDef = xmlSchemaInitBasicType("double",                                                    XML_SCHEMAS_DOUBLE,						    xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeBooleanDef = xmlSchemaInitBasicType("boolean",                                                     XML_SCHEMAS_BOOLEAN,						     xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeAnyURIDef = xmlSchemaInitBasicType("anyURI",                                                    XML_SCHEMAS_ANYURI,						    xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeHexBinaryDef = xmlSchemaInitBasicType("hexBinary",                                                     XML_SCHEMAS_HEXBINARY,						     xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeBase64BinaryDef        = xmlSchemaInitBasicType("base64Binary", XML_SCHEMAS_BASE64BINARY,	xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeNotationDef = xmlSchemaInitBasicType("NOTATION",                                                    XML_SCHEMAS_NOTATION,						    xmlSchemaTypeAnySimpleTypeDef);        xmlSchemaTypeQNameDef = xmlSchemaInitBasicType("QName",                                                   XML_SCHEMAS_QNAME,						   xmlSchemaTypeAnySimpleTypeDef);    /*     * derived datatypes     */    xmlSchemaTypeIntegerDef = xmlSchemaInitBasicType("integer",                                                     XML_SCHEMAS_INTEGER,						     xmlSchemaTypeDecimalDef);    xmlSchemaTypeNonPositiveIntegerDef =        xmlSchemaInitBasicType("nonPositiveInteger",                               XML_SCHEMAS_NPINTEGER,			       xmlSchemaTypeIntegerDef);    xmlSchemaTypeNegativeIntegerDef =        xmlSchemaInitBasicType("negativeInteger", XML_SCHEMAS_NINTEGER,	xmlSchemaTypeNonPositiveIntegerDef);    xmlSchemaTypeLongDef =        xmlSchemaInitBasicType("long", XML_SCHEMAS_LONG,	xmlSchemaTypeIntegerDef);    xmlSchemaTypeIntDef = xmlSchemaInitBasicType("int", XML_SCHEMAS_INT,	xmlSchemaTypeLongDef);    xmlSchemaTypeShortDef = xmlSchemaInitBasicType("short",                                                   XML_SCHEMAS_SHORT,						   xmlSchemaTypeIntDef);    xmlSchemaTypeByteDef = xmlSchemaInitBasicType("byte",                                                  XML_SCHEMAS_BYTE,						  xmlSchemaTypeShortDef);    xmlSchemaTypeNonNegativeIntegerDef =        xmlSchemaInitBasicType("nonNegativeInteger",                               XML_SCHEMAS_NNINTEGER,			       xmlSchemaTypeIntegerDef);    xmlSchemaTypeUnsignedLongDef =        xmlSchemaInitBasicType("unsignedLong", XML_SCHEMAS_ULONG,	xmlSchemaTypeNonNegativeIntegerDef);    xmlSchemaTypeUnsignedIntDef =        xmlSchemaInitBasicType("unsignedInt", XML_SCHEMAS_UINT,	xmlSchemaTypeUnsignedLongDef);    xmlSchemaTypeUnsignedShortDef =        xmlSchemaInitBasicType("unsignedShort", XML_SCHEMAS_USHORT,	xmlSchemaTypeUnsignedIntDef);    xmlSchemaTypeUnsignedByteDef =        xmlSchemaInitBasicType("unsignedByte", XML_SCHEMAS_UBYTE,	xmlSchemaTypeUnsignedShortDef);    xmlSchemaTypePositiveIntegerDef =        xmlSchemaInitBasicType("positiveInteger", XML_SCHEMAS_PINTEGER,	xmlSchemaTypeNonNegativeIntegerDef);    xmlSchemaTypeNormStringDef = xmlSchemaInitBasicType("normalizedString",                                                        XML_SCHEMAS_NORMSTRING,							xmlSchemaTypeStringDef);    xmlSchemaTypeTokenDef = xmlSchemaInitBasicType("token",                                                   XML_SCHEMAS_TOKEN,						   xmlSchemaTypeNormStringDef);    xmlSchemaTypeLanguageDef = xmlSchemaInitBasicType("language",                                                      XML_SCHEMAS_LANGUAGE,						      xmlSchemaTypeTokenDef);    xmlSchemaTypeNameDef = xmlSchemaInitBasicType("Name",                                                  XML_SCHEMAS_NAME,						  xmlSchemaTypeTokenDef);    xmlSchemaTypeNmtokenDef = xmlSchemaInitBasicType("NMTOKEN",                                                     XML_SCHEMAS_NMTOKEN,						     xmlSchemaTypeTokenDef);    xmlSchemaTypeNCNameDef = xmlSchemaInitBasicType("NCName",                                                    XML_SCHEMAS_NCNAME,						    xmlSchemaTypeNameDef);    xmlSchemaTypeIdDef = xmlSchemaInitBasicType("ID", XML_SCHEMAS_ID,						    xmlSchemaTypeNCNameDef);    xmlSchemaTypeIdrefDef = xmlSchemaInitBasicType("IDREF",                                                   XML_SCHEMAS_IDREF,						   xmlSchemaTypeNCNameDef);            xmlSchemaTypeEntityDef = xmlSchemaInitBasicType("ENTITY",                                                    XML_SCHEMAS_ENTITY,						    xmlSchemaTypeNCNameDef);    /*    * Derived list types.    */    /* ENTITIES */    xmlSchemaTypeEntitiesDef = xmlSchemaInitBasicType("ENTITIES",                                                      XML_SCHEMAS_ENTITIES,						      xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeEntitiesDef->subtypes = xmlSchemaTypeEntityDef;    /* IDREFS */    xmlSchemaTypeIdrefsDef = xmlSchemaInitBasicType("IDREFS",                                                    XML_SCHEMAS_IDREFS,						    xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeIdrefsDef->subtypes = xmlSchemaTypeIdrefDef;    /* NMTOKENS */    xmlSchemaTypeNmtokensDef = xmlSchemaInitBasicType("NMTOKENS",                                                      XML_SCHEMAS_NMTOKENS,						      xmlSchemaTypeAnySimpleTypeDef);    xmlSchemaTypeNmtokensDef->subtypes = xmlSchemaTypeNmtokenDef;    xmlSchemaTypesInitialized = 1;}/** * xmlSchemaCleanupTypes: * * Cleanup the default XML Schemas type library */void	xmlSchemaCleanupTypes(void) {    if (xmlSchemaTypesInitialized == 0)	return;    /*    * Free xs:anyType.    */    {	xmlSchemaParticlePtr particle;	/* Attribute wildcard. */	xmlSchemaFreeWildcard(xmlSchemaTypeAnyTypeDef->attributeWildcard);	/* Content type. */	particle = (xmlSchemaParticlePtr) xmlSchemaTypeAnyTypeDef->subtypes;	/* Wildcard. */	xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) 	    particle->children->children->children);	xmlFree((xmlSchemaParticlePtr) particle->children->children);	/* Sequence model group. */	xmlFree((xmlSchemaModelGroupPtr) particle->children);	xmlFree((xmlSchemaParticlePtr) particle);	xmlSchemaTypeAnyTypeDef->subtypes = NULL;	    }    xmlHashFree(xmlSchemaTypesBank, (xmlHashDeallocator) xmlSchemaFreeType);    xmlSchemaTypesInitialized = 0;}/** * xmlSchemaIsBuiltInTypeFacet: * @type: the built-in type * @facetType:  the facet type * * Evaluates if a specific facet can be * used in conjunction with a type. * * Returns 1 if the facet can be used with the given built-in type, * 0 otherwise and -1 in case the type is not a built-in type. */intxmlSchemaIsBuiltInTypeFacet(xmlSchemaTypePtr type, int facetType){    if (type == NULL)	return (-1);    if (type->type != XML_SCHEMA_TYPE_BASIC)	return (-1);    switch (type->builtInType) {	case XML_SCHEMAS_BOOLEAN:	    if ((facetType == XML_SCHEMA_FACET_PATTERN) ||		(facetType == XML_SCHEMA_FACET_WHITESPACE))		return (1);	    else		return (0);		case XML_SCHEMAS_STRING:	case XML_SCHEMAS_NOTATION:	case XML_SCHEMAS_QNAME:	case XML_SCHEMAS_ANYURI:	    	case XML_SCHEMAS_BASE64BINARY:    	case XML_SCHEMAS_HEXBINARY:	    if ((facetType == XML_SCHEMA_FACET_LENGTH) ||		(facetType == XML_SCHEMA_FACET_MINLENGTH) ||		(facetType == XML_SCHEMA_FACET_MAXLENGTH) ||		(facetType == XML_SCHEMA_FACET_PATTERN) ||		(facetType == XML_SCHEMA_FACET_ENUMERATION) ||		(facetType == XML_SCHEMA_FACET_WHITESPACE))		return (1);	    else		return (0);	case XML_SCHEMAS_DECIMAL:	    if ((facetType == XML_SCHEMA_FACET_TOTALDIGITS) ||		(facetType == XML_SCHEMA_FACET_FRACTIONDIGITS) ||		(facetType == XML_SCHEMA_FACET_PATTERN) ||		(facetType == XML_SCHEMA_FACET_WHITESPACE) ||		(facetType == XML_SCHEMA_FACET_ENUMERATION) ||		(facetType == XML_SCHEMA_FACET_MAXINCLUSIVE) ||		(facetType == XML_SCHEMA_FACET_MAXEXCLUSIVE) ||		(facetType == XML_SCHEMA_FACET_MININCLUSIVE) ||		(facetType == XML_SCHEMA_FACET_MINEXCLUSIVE))		return (1);	    else		return (0); 	case XML_SCHEMAS_TIME:	case XML_SCHEMAS_GDAY: 	case XML_SCHEMAS_GMONTH:	case XML_SCHEMAS_GMONTHDAY: 	case XML_SCHEMAS_GYEAR: 	case XML_SCHEMAS_GYEARMONTH:	case XML_SCHEMAS_DATE:	case XML_SCHEMAS_DATETIME:	case XML_SCHEMAS_DURATION:	case XML_SCHEMAS_FLOAT:	case XML_SCHEMAS_DOUBLE:	    if ((facetType == XML_SCHEMA_FACET_PATTERN) ||		(facetType == XML_SCHEMA_FACET_ENUMERATION) ||		(facetType == XML_SCHEMA_FACET_WHITESPACE) ||		(facetType == XML_SCHEMA_FACET_MAXINCLUSIVE) ||		(facetType == XML_SCHEMA_FACET_MAXEXCLUSIVE) ||		(facetType == XML_SCHEMA_FACET_MININCLUSIVE) ||		(facetType == XML_SCHEMA_FACET_MINEXCLUSIVE))		return (1);	    else		return (0);	    				 	default:	    break;    }    return (0);}/** * xmlSchemaGetBuiltInType: * @type:  the type of the built in type * * Gives you the type struct for a built-in * type by its type id. * * Returns the type if found, NULL otherwise. */xmlSchemaTypePtrxmlSchemaGetBuiltInType(xmlSchemaValType type){    if (xmlSchemaTypesInitialized == 0)	xmlSchemaInitTypes();    switch (type) {		case XML_SCHEMAS_ANYSIMPLETYPE:	    return (xmlSchemaTypeAnySimpleTypeDef);	case XML_SCHEMAS_STRING:	    return (xmlSchemaTypeStringDef);	case XML_SCHEMAS_NORMSTRING:	    return (xmlSchemaTypeNormStringDef);	case XML_SCHEMAS_DECIMAL:	    return (xmlSchemaTypeDecimalDef);	case XML_SCHEMAS_TIME:	    return (xmlSchemaTypeTimeDef);	case XML_SCHEMAS_GDAY:	    return (xmlSchemaTypeGDayDef);	case XML_SCHEMAS_GMONTH:	    return (xmlSchemaTypeGMonthDef);	case XML_SCHEMAS_GMONTHDAY:    	    return (xmlSchemaTypeGMonthDayDef);	case XML_SCHEMAS_GYEAR:	    return (xmlSchemaTypeGYearDef);	case XML_SCHEMAS_GYEARMONTH:	    return (xmlSchemaTypeGYearMonthDef);	case XML_SCHEMAS_DATE:	    return (xmlSchemaTypeDateDef);	case XML_SCHEMAS_DATETIME:	    return (xmlSchemaTypeDatetimeDef);	case XML_SCHEMAS_DURATION:	    return (xmlSchemaTypeDurationDef);	case XML_SCHEMAS_FLOAT:	    return (xmlSchemaTypeFloatDef);	case XML_SCHEMAS_DOUBLE:	    return (xmlSchemaTypeDoubleDef);	case XML_SCHEMAS_BOOLEAN:	    return (xmlSchemaTypeBooleanDef);	case XML_SCHEMAS_TOKEN:	    return (xmlSchemaTypeTokenDef);	case XML_SCHEMAS_LANGUAGE:	    return (xmlSchemaTypeLanguageDef);	case XML_SCHEMAS_NMTOKEN:	    return (xmlSchemaTypeNmtokenDef);	case XML_SCHEMAS_NMTOKENS:	    return (xmlSchemaTypeNmtokensDef);	case XML_SCHEMAS_NAME:	    return (xmlSchemaTypeNameDef);	case XML_SCHEMAS_QNAME:	    return (xmlSchemaTypeQNameDef);	case XML_SCHEMAS_NCNAME:	    return (xmlSchemaTypeNCNameDef);	case XML_SCHEMAS_ID:	    return (xmlSchemaTypeIdDef);	case XML_SCHEMAS_IDREF:	    return (xmlSchemaTypeIdrefDef);	case XML_SCHEMAS_IDREFS:	    return (xmlSchemaTypeIdrefsDef);	case XML_SCHEMAS_ENTITY:	    return (xmlSchemaTypeEntityDef);	case XML_SCHEMAS_ENTITIES:	    return (xmlSchemaTypeEntitiesDef);	case XML_SCHEMAS_NOTATION:	    return (xmlSchemaTypeNotationDef);	case XML_SCHEMAS_ANYURI:	    return (xmlSchemaTypeAnyURIDef);	case XML_SCHEMAS_INTEGER:	    return (xmlSchemaTypeIntegerDef);	case XML_SCHEMAS_NPINTEGER:	    return (xmlSchemaTypeNonPositiveIntegerDef);	case XML_SCHEMAS_NINTEGER:	    return (xmlSchemaTypeNegativeIntegerDef);	case XML_SCHEMAS_NNINTEGER:	    return (xmlSchemaTypeNonNegativeIntegerDef);	case XML_SCHEMAS_PINTEGER:	    return (xmlSchemaTypePositiveIntegerDef);	case XML_SCHEMAS_INT:	    return (xmlSchemaTypeIntDef);	case XML_SCHEMAS_UINT:	    return (xmlSchemaTypeUnsignedIntDef);	case XML_SCHEMAS_LONG:	    return (xmlSchemaTypeLongDef);	case XML_SCHEMAS_ULONG:	    return (xmlSchemaTypeUnsignedLongDef);	case XML_SCHEMAS_SHORT:	    return (xmlSchemaTypeShortDef);	case XML_SCHEMAS_USHORT:	    return (xmlSchemaTypeUnsignedShortDef);	case XML_SCHEMAS_BYTE:	    return (xmlSchemaTypeByteDef);	case XML_SCHEMAS_UBYTE:	    return (xmlSchemaTypeUnsignedByteDef);	case XML_SCHEMAS_HEXBINARY:	    return (xmlSchemaTypeHexBinaryDef);	case XML_SCHEMAS_BASE64BINARY:	    return (xmlSchemaTypeBase64BinaryDef);	case XML_SCHEMAS_ANYTYPE:	    return (xmlSchemaTypeAnyTypeDef);	    	default:	    return (NULL);    }}/** * xmlSchemaValueAppend: * @prev: the value * @cur: the value to be appended * * Appends a next sibling to a list of computed values. * * Returns 0 if succeeded and -1 on API errors. */intxmlSchemaValueAppend(xmlSchemaValPtr prev, xmlSchemaValPtr cur) {    if ((prev == NULL) || (cur == NULL))	return (-1);    prev->next = cur;    return (0);}/** * xmlSchemaValueGetNext: * @cur: the value * * Accessor for the next sibling of a list of computed values. * * Returns the next value or NULL if there was none, or on *         API errors. */xmlSchemaValPtrxmlSchemaValueGetNext(xmlSchemaValPtr cur) {    if (cur == NULL)	return (NULL);    return (cur->next);}/** * xmlSchemaValueGetAsString: * @val: the value * * Accessor for the string value of a computed value. * * Returns the string value or NULL if there was none, or on *         API errors. */const xmlChar *xmlSchemaValueGetAsString(xmlSchemaValPtr val){        if (val == NULL)	return (NULL);    switch (val->type) {	case XML_SCHEMAS_STRING:	case XML_SCHEMAS_NORMSTRING:	case XML_SCHEMAS_ANYSIMPLETYPE:	case XML_SCHEMAS_TOKEN:        case XML_SCHEMAS_LANGUAGE:        case XML_SCHEMAS_NMTOKEN:        case XML_SCHEMAS_NAME:        case XML_SCHEMAS_NCNAME:        case XML_SCHEMAS_ID:        case XML_SCHEMAS_IDREF:        case XML_SCHEMAS_ENTITY:        case XML_SCHEMAS_ANYURI:	    return (BAD_CAST val->value.str);	default:	    break;    }    return (NULL);}/** * xmlSchemaValueGetAsBoolean: * @val: the value * * Accessor for the boolean value of a computed value. * * Returns 1 if true and 0 if false, or in case of an error. Hmm. */intxmlSchemaValueGetAsBoolean(xmlSchemaValPtr val){        if ((val == NULL) || (val->type != XML_SCHEMAS_BOOLEAN))	return (0);    return (val->value.b);}

⌨️ 快捷键说明

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