version 1.27, 1998/08/03 20:06:17
|
version 1.28, 1998/08/03 21:55:20
|
Line 231 not_blank:
|
Line 231 not_blank:
|
return(in); |
return(in); |
} |
} |
|
|
|
/************************************************************************ |
|
* * |
|
* Commodity functions to handle CHARs * |
|
* * |
|
************************************************************************/ |
|
|
/* |
/* |
* xmlStrndup : a strdup for array of CHAR's |
* xmlStrndup : a strdup for array of CHAR's |
*/ |
*/ |
Line 302 CHAR *xmlStrchr(const CHAR *str, CHAR va
|
Line 308 CHAR *xmlStrchr(const CHAR *str, CHAR va
|
return(NULL); |
return(NULL); |
} |
} |
|
|
|
/************************************************************************ |
|
* * |
|
* Extra stuff for namespace support * |
|
* Relates to http://www.w3.org/TR/WD-xml-names * |
|
* * |
|
************************************************************************/ |
|
|
|
/* |
|
* xmlNamespaceParseNCName : parse an XML namespace name. |
|
* |
|
* [NS 3] NCName ::= (Letter | '_') (NCNameChar)* |
|
* |
|
* [NS 4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | |
|
* CombiningChar | Extender |
|
*/ |
|
|
|
CHAR *xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt) { |
|
const CHAR *q; |
|
CHAR *ret = NULL; |
|
|
|
if (!IS_LETTER(ctxt->cur[0]) && (ctxt->cur[0] != '_')) return(NULL); |
|
q = ctxt->cur++; |
|
|
|
while ((IS_LETTER(ctxt->cur[0])) || (IS_DIGIT(ctxt->cur[0])) || |
|
(ctxt->cur[0] == '.') || (ctxt->cur[0] == '-') || |
|
(ctxt->cur[0] == '_') || |
|
(IS_COMBINING(ctxt->cur[0])) || |
|
(IS_EXTENDER(ctxt->cur[0]))) |
|
ctxt->cur++; |
|
|
|
ret = xmlStrndup(q, ctxt->cur - q); |
|
|
|
return(ret); |
|
} |
|
|
|
/* |
|
* xmlNamespaceParseQName : parse an XML qualified name |
|
* |
|
* [NS 5] QName ::= (Prefix ':')? LocalPart |
|
* |
|
* [NS 6] Prefix ::= NCName |
|
* |
|
* [NS 7] LocalPart ::= NCName |
|
*/ |
|
|
|
CHAR *xmlNamespaceParseQName(xmlParserCtxtPtr ctxt, CHAR **prefix) { |
|
CHAR *ret = NULL; |
|
|
|
*prefix = NULL; |
|
ret = xmlNamespaceParseNCName(ctxt); |
|
if (ctxt->cur[0] == ':') { |
|
*prefix = ret; |
|
ctxt->cur++; |
|
ret = xmlNamespaceParseNCName(ctxt); |
|
} |
|
|
|
return(ret); |
|
} |
|
|
|
/* |
|
* xmlNamespaceParseNSDef : parse a namespace prefix declaration |
|
* |
|
* [NS 1] NSDef ::= PrefixDef Eq SystemLiteral |
|
* |
|
* [NS 2] PrefixDef ::= 'xmlns' (':' NCName)? |
|
*/ |
|
|
|
void xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt) { |
|
CHAR *name = NULL; |
|
|
|
if ((ctxt->cur[0] == 'x') && (ctxt->cur[1] == 'm') && |
|
(ctxt->cur[2] == 'l') && (ctxt->cur[3] == 'n') && |
|
(ctxt->cur[4] == 's')) { |
|
ctxt->cur += 5; |
|
if (ctxt->cur[0] == ':') { |
|
ctxt->cur++; |
|
name = xmlNamespaceParseNCName(ctxt); |
|
} |
|
} |
|
} |
|
|
|
/************************************************************************ |
|
* * |
|
* The parser itself * |
|
* Relates to http://www.w3.org/TR/REC-xml * |
|
* * |
|
************************************************************************/ |
|
|
/* |
/* |
* xmlParseName : parse an XML name. |
* xmlParseName : parse an XML name. |
* |
* |