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

📄 xmlschemastypes.c

📁 libxml,在UNIX/LINUX下非常重要的一个库,为XML相关应用提供方便.目前上载的是最新版本,若要取得最新版本,请参考里面的readme.
💻 C
📖 第 1 页 / 共 5 页
字号:
    xmlSchemaTypeIdrefsDef = xmlSchemaInitBasicType("IDREFS",                                                    XML_SCHEMAS_IDREFS,						    xmlSchemaTypeIdrefDef);        xmlSchemaTypeNmtokensDef = xmlSchemaInitBasicType("NMTOKENS",                                                      XML_SCHEMAS_NMTOKENS,						      xmlSchemaTypeNmtokenDef);    xmlSchemaTypeEntityDef = xmlSchemaInitBasicType("ENTITY",                                                    XML_SCHEMAS_ENTITY,						    xmlSchemaTypeNCNameDef);    xmlSchemaTypeEntitiesDef = xmlSchemaInitBasicType("ENTITIES",                                                      XML_SCHEMAS_ENTITIES,						      xmlSchemaTypeNCNameDef);    xmlSchemaTypesInitialized = 1;}/** * xmlSchemaCleanupTypes: * * Cleanup the default XML Schemas type library */void	xmlSchemaCleanupTypes(void) {    if (xmlSchemaTypesInitialized == 0)	return;    xmlSchemaFreeWildcard(xmlSchemaTypeAnyTypeDef->attributeWildcard);    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);    }}/** * xmlSchemaNewValue: * @type:  the value type * * Allocate a new simple type value * * Returns a pointer to the new value or NULL in case of error */static xmlSchemaValPtrxmlSchemaNewValue(xmlSchemaValType type) {    xmlSchemaValPtr value;    value = (xmlSchemaValPtr) xmlMalloc(sizeof(xmlSchemaVal));    if (value == NULL) {	return(NULL);    }    memset(value, 0, sizeof(xmlSchemaVal));    value->type = type;    return(value);}/** * xmlSchemaNewStringValue: * @type:  the value type * @value:  the value * * Allocate a new simple type value. The type can be  * of XML_SCHEMAS_STRING.  * WARNING: This one is intended to be expanded for other * string based types. We need this for anySimpleType as well. * * Returns a pointer to the new value or NULL in case of error */xmlSchemaValPtrxmlSchemaNewStringValue(xmlSchemaValType type,			const xmlChar *value){    xmlSchemaValPtr val;    if (type != XML_SCHEMAS_STRING)	return(NULL);    val = (xmlSchemaValPtr) xmlMalloc(sizeof(xmlSchemaVal));    if (val == NULL) {	return(NULL);    }    memset(val, 0, sizeof(xmlSchemaVal));    val->type = type;    val->value.str = (xmlChar *) value;    return(val);}/** * xmlSchemaNewNOTATIONValue: * @name:  the notation name * @ns: the notation namespace name or NULL * * Allocate a new NOTATION value. * * Returns a pointer to the new value or NULL in case of error */xmlSchemaValPtrxmlSchemaNewNOTATIONValue(const xmlChar *name,			  const xmlChar *ns){    xmlSchemaValPtr val;    val = xmlSchemaNewValue(XML_SCHEMAS_NOTATION);    if (val == NULL)	return (NULL);    val->value.qname.name = (xmlChar *)name;    if (ns != NULL)	val->value.qname.uri = (xmlChar *)ns;    return(val);}/** * xmlSchemaFreeValue: * @value:  the value to free * * Cleanup the default XML Schemas type library */void	xmlSchemaFreeValue(xmlSchemaValPtr value) {    if (value == NULL)	return;    switch (value->type) {        case XML_SCHEMAS_STRING:        case XML_SCHEMAS_NORMSTRING:        case XML_SCHEMAS_TOKEN:        case XML_SCHEMAS_LANGUAGE:        case XML_SCHEMAS_NMTOKEN:        case XML_SCHEMAS_NMTOKENS:        case XML_SCHEMAS_NAME:        case XML_SCHEMAS_NCNAME:        case XML_SCHEMAS_ID:        case XML_SCHEMAS_IDREF:        case XML_SCHEMAS_IDREFS:        case XML_SCHEMAS_ENTITY:        case XML_SCHEMAS_ENTITIES:                case XML_SCHEMAS_ANYURI:	    if (value->value.str != NULL)		xmlFree(value->value.str);	    break;	case XML_SCHEMAS_NOTATION:        case XML_SCHEMAS_QNAME:	    if (value->value.qname.uri != NULL)		xmlFree(value->value.qname.uri);	    if (value->value.qname.name != NULL)		xmlFree(value->value.qname.name);	    break;        case XML_SCHEMAS_HEXBINARY:	    if (value->value.hex.str != NULL)		xmlFree(value->value.hex.str);	    break;        case XML_SCHEMAS_BASE64BINARY:	    if (value->value.base64.str != NULL)		xmlFree(value->value.base64.str);	    break;	default:	    break;    }    xmlFree(value);}/** * xmlSchemaGetPredefinedType: * @name: the type name * @ns:  the URI of the namespace usually "http://www.w3.org/2001/XMLSchema" * * Lookup a type in the default XML Schemas type library * * Returns the type if found, NULL otherwise */xmlSchemaTypePtrxmlSchemaGetPredefinedType(const xmlChar *name, const xmlChar *ns) {    if (xmlSchemaTypesInitialized == 0)	xmlSchemaInitTypes();    if (name == NULL)	return(NULL);    return((xmlSchemaTypePtr) xmlHashLookup2(xmlSchemaTypesBank, name, ns));}/** * xmlSchemaGetBuiltInListSimpleTypeItemType: * @type: the built-in simple type. * * Lookup function * * Returns the item type of @type as defined by the built-in datatype * hierarchy of XML Schema Part 2: Datatypes, or NULL in case of an error. */xmlSchemaTypePtrxmlSchemaGetBuiltInListSimpleTypeItemType(xmlSchemaTypePtr type){    if ((type == NULL) || (type->type != XML_SCHEMA_TYPE_BASIC))	return (NULL);    switch (type->builtInType) {	case XML_SCHEMAS_NMTOKENS: 	    return (xmlSchemaTypeNmtokenDef );	case XML_SCHEMAS_IDREFS: 	    return (xmlSchemaTypeIdrefDef);	case XML_SCHEMAS_ENTITIES:	    return (xmlSchemaTypeEntityDef);	default:	    return (NULL);    }}/**************************************************************** *								* *		Convenience macros and functions		* *								* ****************************************************************/#define IS_TZO_CHAR(c)						\	((c == 0) || (c == 'Z') || (c == '+') || (c == '-'))#define VALID_YEAR(yr)          (yr != 0)#define VALID_MONTH(mon)        ((mon >= 1) && (mon <= 12))/* VALID_DAY should only be used when month is unknown */#define VALID_DAY(day)          ((day >= 1) && (day <= 31))#define VALID_HOUR(hr)          ((hr >= 0) && (hr <= 23))#define VALID_MIN(min)          ((min >= 0) && (min <= 59))#define VALID_SEC(sec)          ((sec >= 0) && (sec < 60))#define VALID_TZO(tzo)          ((tzo > -1440) && (tzo < 1440))#define IS_LEAP(y)						\	(((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))static const unsigned int daysInMonth[12] =	{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };static const unsigned int daysInMonthLeap[12] =	{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };#define MAX_DAYINMONTH(yr,mon)                                  \        (IS_LEAP(yr) ? daysInMonthLeap[mon - 1] : daysInMonth[mon - 1])#define VALID_MDAY(dt)						\	(IS_LEAP(dt->year) ?				        \	    (dt->day <= daysInMonthLeap[dt->mon - 1]) :	        \	    (dt->day <= daysInMonth[dt->mon - 1]))#define VALID_DATE(dt)						\	(VALID_YEAR(dt->year) && VALID_MONTH(dt->mon) && VALID_MDAY(dt))#define VALID_TIME(dt)						\	(VALID_HOUR(dt->hour) && VALID_MIN(dt->min) &&		\	 VALID_SEC(dt->sec) && VALID_TZO(dt->tzo))#define VALID_DATETIME(dt)					\	(VALID_DATE(dt) && VALID_TIME(dt))#define SECS_PER_MIN            (60)

⌨️ 快捷键说明

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