XML_MAX_NAMELEN:
Identifiers can be longer, but this will be more costly at runtime.
INPUT_CHUNK:
The parser tries to always have that amount of input ready. One of the point is providing context when reporting errors.
MIN_STACK_THRESHOLD:
The safty buffer that defines number of bytes from stack overflow.
MAX_STACK_THRESHOLD:
The safty buffer that defines number of bytes from stack overflow. This value is used for SAX parsing - buffer is bigger to account for stack that might be allocated during user callbacks
IS_BYTE_CHAR: Macro to check the following production in the XML spec:
[2] Char ::= #x9 | #xA | #xD | [#x20...] any byte character in the accepted range
IS_CHAR: Macro to check the following production in the XML spec:
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
IS_BLANK: Macro to check the following production in the XML spec:
[3] S ::= (#x20 | #x9 | #xD | #xA)+
IS_BASECHAR: Macro to check the following production in the XML spec:
[85] BaseChar ::= ... long list see REC ...
IS_DIGIT: Macro to check the following production in the XML spec:
[88] Digit ::= ... long list see REC ...
IS_COMBINING: Macro to check the following production in the XML spec:
[87] CombiningChar ::= ... long list see REC ...
IS_EXTENDER: Macro to check the following production in the XML spec:
[89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]
IS_IDEOGRAPHIC: Macro to check the following production in the XML spec:
[86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
IS_LETTER: Macro to check the following production in the XML spec:
[84] Letter ::= BaseChar | Ideographic
IS_PUBIDCHAR: Macro to check the following production in the XML spec:
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#$_%]
XMLPUBVAR const xmlChar | xmlStringTextNoenc |
XMLPUBVAR const xmlChar | xmlStringComment |
XMLPUBFUN int XMLCALL | xmlIsLetter | ( | int | c | ) |
xmlIsLetter: Check whether the character is allowed by the production [84] Letter ::= BaseChar | Ideographic
Returns 0 if not, non-zero otherwise
Parameters | |
---|---|
c | an unicode character (int) |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | xmlCreateFileParserCtxt | ( | const char * | filename | ) |
Parser context.
xmlCreateFileParserCtxt: Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.
Returns the new parser context or NULL
Parameters | |
---|---|
filename | the filename |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | xmlCreateURLParserCtxt | ( | const char * | filename, |
int | options | |||
) |
xmlCreateURLParserCtxt: Create a parser context for a file or URL content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time and for file accesses
Returns the new parser context or NULL
Parameters | |
---|---|
filename | the filename or URL |
options | a combination of xmlParserOption |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | xmlCreateMemoryParserCtxt | ( | const char * | buffer, |
int | size | |||
) |
xmlCreateMemoryParserCtxt: Create a parser context for an XML in-memory document.
Returns the new parser context or NULL
OOM: possible --> returns NULL, OOM flag is set
Parameters | |
---|---|
buffer | a pointer to a char array |
size | the size of the array |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | xmlCreateEntityParserCtxt | ( | const xmlChar * | URL, |
const xmlChar * | ID, | |||
const xmlChar * | base | |||
) |
xmlCreateEntityParserCtxt: Create a parser context for an external entity Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.
Returns the new parser context or NULL
Parameters | |
---|---|
URL | the entity URL |
ID | the entity PUBLIC ID |
base | a possible base for the target URI |
XMLPUBFUN int XMLCALL | xmlSwitchEncoding | ( | xmlParserCtxtPtr | ctxt, |
xmlCharEncoding | enc | |||
) |
xmlSwitchEncoding: change the input functions when discovering the character encoding of a given entity.
Returns 0 in case of success, -1 otherwise
OOM: possible --> OOM flag is set -- check it always!
Parameters | |
---|---|
ctxt | the parser context |
enc | the encoding value (number) |
XMLPUBFUN int XMLCALL | xmlSwitchToEncoding | ( | xmlParserCtxtPtr | ctxt, |
xmlCharEncodingHandlerPtr | handler | |||
) |
xmlSwitchToEncoding: change the input functions when discovering the character encoding of a given entity.
Returns 0 in case of success, -1 otherwise
OOM: possible --> OOM flag is set when -1 is returned
Parameters | |
---|---|
ctxt | the parser context |
handler | the encoding handler |
XMLPUBFUN int XMLCALL | xmlSwitchInputEncoding | ( | xmlParserCtxtPtr | ctxt, |
xmlParserInputPtr | input, | |||
xmlCharEncodingHandlerPtr | handler | |||
) |
xmlSwitchInputEncoding: change the input functions when discovering the character encoding of a given entity.
Returns 0 in case of success, -1 otherwise
OOM: possible --> check OOM flag when -1 is returned
Parameters | |
---|---|
ctxt | the parser context |
input | the input stream |
handler | the encoding handler |
XMLPUBFUN xmlParserInputPtr XMLCALL | xmlNewStringInputStream | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | buffer | |||
) |
Input Streams.
xmlNewStringInputStream: Create a new input stream based on a memory buffer. Returns the new input stream
Parameters | |
---|---|
ctxt | an XML parser context |
buffer | an memory buffer |
XMLPUBFUN xmlParserInputPtr XMLCALL | xmlNewEntityInputStream | ( | xmlParserCtxtPtr | ctxt, |
xmlEntityPtr | entity | |||
) |
xmlNewEntityInputStream: Create a new input stream based on an xmlEntityPtr
Returns the new input stream or NULL
OOM:
Parameters | |
---|---|
ctxt | an XML parser context |
entity | an Entity pointer |
XMLPUBFUN void XMLCALL | xmlPushInput | ( | xmlParserCtxtPtr | ctxt, |
xmlParserInputPtr | input | |||
) |
xmlPushInput: xmlPushInput: switch to a new input stream which is stacked on top of the previous one(s).
Parameters | |
---|---|
ctxt | an XML parser context |
input | an XML parser input fragment (entity, XML fragment ...). |
XMLPUBFUN xmlChar XMLCALL | xmlPopInput | ( | xmlParserCtxtPtr | ctxt | ) |
xmlPopInput: xmlPopInput: the current input pointed by ctxt->input came to an end pop it and return the next char.
Returns the current xmlChar in the parser context
OOM: possible --> check OOM flag!!!
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlFreeInputStream | ( | xmlParserInputPtr | input | ) |
xmlFreeInputStream: Free up an input stream.
OOM: never
Parameters | |
---|---|
input | an xmlParserInputPtr |
XMLPUBFUN xmlParserInputPtr XMLCALL | xmlNewInputFromFile | ( | xmlParserCtxtPtr | ctxt, |
const char * | filename | |||
) |
xmlNewInputFromFile: Create a new input stream based on a file or an URL.
Returns the new input stream or NULL in case of error
OOM: possible --> always check OOM flag
Parameters | |
---|---|
ctxt | an XML parser context |
filename | the filename to use as entity |
XMLPUBFUN xmlParserInputPtr XMLCALL | xmlNewInputStream | ( | xmlParserCtxtPtr | ctxt | ) |
xmlNewInputStream: Create a new input stream structure Returns the new input stream or NULL
OOM: possible --> returns NULL, OOM flag is set
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlSplitQName | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | name, | |||
xmlChar ** | prefix | |||
) |
Namespaces.
xmlSplitQName: parse an UTF8 encoded XML qualified name string
[NS 5] QName ::= (Prefix ':')? LocalPart
[NS 6] Prefix ::= NCName
[NS 7] LocalPart ::= NCName
Returns the local part, and prefix is updated to get the Prefix if any.
OOM: possible --> returns NULL (*prefix is NULL too); always check OOM flag to distinguish OOM and "bad QName"
Parameters | |
---|---|
ctxt | an XML parser context |
name | an XML parser context |
prefix | a xmlChar ** |
XMLPUBFUN xmlChar *XMLCALL | xmlNamespaceParseNCName | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN xmlChar *XMLCALL | xmlNamespaceParseQName | ( | xmlParserCtxtPtr | ctxt, |
xmlChar ** | prefix | |||
) |
XMLPUBFUN xmlChar *XMLCALL | xmlNamespaceParseNSDef | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN xmlChar *XMLCALL | xmlParseQuotedString | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN void XMLCALL | xmlParseNamespace | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN const xmlChar *XMLCALL | xmlParseName | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseName: parse an XML name.
[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
[5] Name ::= (Letter | '_' | ':') (NameChar)*
[6] Names ::= Name (S Name)*
Returns the Name parsed or NULL
OOM: possible --- Review is not finished (for xmlParseNameComplex) --> OOM flag is set when NULL is returned
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParseNmtoken | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseNmtoken: parse an XML Nmtoken.
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (S Nmtoken)*
Returns the Nmtoken parsed or NULL
OOM: possible --> for too long names; check OOM flag
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParseEntityValue | ( | xmlParserCtxtPtr | ctxt, |
xmlChar ** | orig | |||
) |
xmlParseEntityValue: parse a value for ENTITY declarations
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"
Returns the EntityValue parsed with reference substituted or NULL
Parameters | |
---|---|
ctxt | an XML parser context |
orig | if non-NULL store a copy of the original entity value |
XMLPUBFUN xmlChar *XMLCALL | xmlParseAttValue | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseAttValue: parse a value for an attribute Note: the parser won't do substitution of entities here, this will be handled later in xmlStringGetNodeList
[10] AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
a character reference is processed by appending the referenced character to the attribute value
an entity reference is processed by recursively processing the replacement text of the entity
a whitespace character (#x20, #xD, #xA, #x9) is processed by appending #x20 to the normalized value, except that only a single #x20 is appended for a "#xD#xA" sequence that is part of an external parsed entity or the literal entity value of an internal parsed entity
other characters are processed by appending them to the normalized value If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by a single space (#x20) character. All attributes for which no declaration has been read should be treated by a non-validating parser as if declared CDATA.
Returns the AttValue parsed or NULL. The value has to be freed by the caller.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParseSystemLiteral | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseSystemLiteral: parse an XML Literal
[11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
Returns the SystemLiteral parsed or NULL
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParsePubidLiteral | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParsePubidLiteral: parse an XML public literal
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
Returns the PubidLiteral parsed or NULL.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseCharData | ( | xmlParserCtxtPtr | ctxt, |
int | cdata | |||
) |
xmlParseCharData: parse a CharData section. if we are within a CDATA section ']]>' marks an end of section.
The right angle bracket (>) may be represented using the string ">", and must, for compatibility, be escaped using ">" or a character reference when it appears in the string "]]>" in content, when that string is not marking the end of a CDATA section.
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
Parameters | |
---|---|
ctxt | an XML parser context |
cdata | int indicating whether we are within a CDATA section |
XMLPUBFUN xmlChar *XMLCALL | xmlParseExternalID | ( | xmlParserCtxtPtr | ctxt, |
xmlChar ** | publicID, | |||
int | strict | |||
) |
xmlParseExternalID: Parse an External ID or a Public ID
NOTE: Productions [75] and [83] interact badly since [75] can generate 'PUBLIC' S PubidLiteral S SystemLiteral
[75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral
[83] PublicID ::= 'PUBLIC' S PubidLiteral
Returns the function returns SystemLiteral and in the second case publicID receives PubidLiteral, is strict is off it is possible to return NULL and have publicID set.
Parameters | |
---|---|
ctxt | an XML parser context |
publicID | a xmlChar** receiving PubidLiteral |
strict | indicate whether we should restrict parsing to only production [75], see NOTE below |
XMLPUBFUN void XMLCALL | xmlParseComment | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseComment: Skip an XML (SGML) comment The spec says that "For compatibility, the string "--" (double-hyphen) must not occur within comments. "
[15] Comment ::= ''
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN const xmlChar *XMLCALL | xmlParsePITarget | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParsePITarget: parse the name of a PI
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
Returns the PITarget name or NULL
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParsePI | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParsePI: parse an XML Processing Instruction.
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
The processing is transfered to SAX once parsed.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseNotationDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseNotationDecl: parse a notation declaration
[82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'
Hence there is actually 3 choices: 'PUBLIC' S PubidLiteral 'PUBLIC' S PubidLiteral S SystemLiteral and 'SYSTEM' S SystemLiteral
See the NOTE on xmlParseExternalID().
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseEntityDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseEntityDecl: parse <!ENTITY declarations
[70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72] PEDecl ::= '<!ENTITY' S '' S Name S PEDef S? '>'
[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74] PEDef ::= EntityValue | ExternalID
[76] NDataDecl ::= S 'NDATA' S Name
[ VC: Notation Declared ] The Name must match the declared name of a notation.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN int XMLCALL | xmlParseDefaultDecl | ( | xmlParserCtxtPtr | ctxt, |
xmlChar ** | value | |||
) |
xmlParseDefaultDecl: Parse an attribute default declaration
[60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
[ VC: Required Attribute ] if the default declaration is the keyword #REQUIRED, then the attribute must be specified for all elements of the type in the attribute-list declaration.
[ VC: Attribute Default Legal ] The declared default value must meet the lexical constraints of the declared attribute type c.f. xmlValidateAttributeDecl()
[ VC: Fixed Attribute Default ] if an attribute has a default value declared with the #FIXED keyword, instances of that attribute must match the default value.
[ WFC: No < in Attribute Values ] handled in xmlParseAttValue()
returns: XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED or XML_ATTRIBUTE_FIXED.
Parameters | |
---|---|
ctxt | an XML parser context |
value | Receive a possible fixed default value for the attribute |
XMLPUBFUN xmlEnumerationPtr XMLCALL | xmlParseNotationType | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseNotationType: parse an Notation attribute type.
Note: the leading 'NOTATION' S part has already being parsed...
[58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
[ VC: Notation Attributes ] Values of this type must match one of the notation names included in the declaration; all notation names in the declaration must be declared.
Returns: the notation attribute tree built while parsing
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlEnumerationPtr XMLCALL | xmlParseEnumerationType | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseEnumerationType: parse an Enumeration attribute type.
[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
[ VC: Enumeration ] Values of this type must match one of the Nmtoken tokens in the declaration
Returns: the enumeration attribute tree built while parsing
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN int XMLCALL | xmlParseEnumeratedType | ( | xmlParserCtxtPtr | ctxt, |
xmlEnumerationPtr * | tree | |||
) |
xmlParseEnumeratedType: parse an Enumerated attribute type.
[57] EnumeratedType ::= NotationType | Enumeration
[58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
Returns: XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION
Parameters | |
---|---|
ctxt | an XML parser context |
tree | the enumeration tree built while parsing |
XMLPUBFUN int XMLCALL | xmlParseAttributeType | ( | xmlParserCtxtPtr | ctxt, |
xmlEnumerationPtr * | tree | |||
) |
xmlParseAttributeType: parse the Attribute list def for an element
[54] AttType ::= StringType | TokenizedType | EnumeratedType
[55] StringType ::= 'CDATA'
[56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'
Validity constraints for attribute values syntax are checked in xmlValidateAttributeValue()
[ VC: ID ] Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.
[ VC: One ID per Element Type ] No element type may have more than one ID attribute specified.
[ VC: ID Attribute Default ] An ID attribute must have a declared default of #IMPLIED or #REQUIRED.
[ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names; each IDREF Name must match the value of an ID attribute on some element in the XML document; i.e. IDREF values must match the value of some ID attribute.
[ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names; each Entity Name must match the name of an unparsed entity declared in the DTD.
[ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.
Returns the attribute type
Parameters | |
---|---|
ctxt | an XML parser context |
tree | the enumeration tree built while parsing |
XMLPUBFUN void XMLCALL | xmlParseAttributeListDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseAttributeListDecl: : parse the Attribute list def for an element
[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef ::= S Name S AttType S DefaultDecl
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlElementContentPtr XMLCALL | xmlParseElementMixedContentDecl | ( | xmlParserCtxtPtr | ctxt, |
int | inputchk | |||
) |
xmlParseElementMixedContentDecl: parse the declaration for a Mixed Element content The leading '(' and spaces have been skipped in xmlParseElementContentDecl
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | '(' S? '#PCDATA' S? ')'
[ VC: Proper Group/PE Nesting ] applies to [51] too (see [49])
[ VC: No Duplicate Types ] The same name must not appear more than once in a single mixed-content declaration.
returns: the list of the xmlElementContentPtr describing the element choices or NULL if error
Parameters | |
---|---|
ctxt | an XML parser context |
inputchk | the input used for the current entity, needed for boundary checks |
XMLPUBFUN xmlElementContentPtr XMLCALL | xmlParseElementChildrenContentDecl | ( | xmlParserCtxtPtr | ctxt, |
int | inputchk | |||
) |
xmlParseElementChildrenContentDecl: parse the declaration for a Mixed Element content The leading '(' and spaces have been skipped in xmlParseElementContentDecl
[47] children ::= (choice | seq) ('?' | '*' | '+')?
[48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
[49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
[50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
[ VC: Proper Group/PE Nesting ] applies to [49] and [50] Parameter-entity replacement text must be properly nested with parenthesized groups. That is to say, if either of the opening or closing parentheses in a choice, seq, or Mixed construct is contained in the replacement text for a parameter entity, both must be contained in the same replacement text. For interoperability, if a parameter-entity reference appears in a choice, seq, or Mixed construct, its replacement text should not be empty, and neither the first nor last non-blank character of the replacement text should be a connector (| or ,).
Returns the tree of xmlElementContentPtr describing the element hierarchy.
Parameters | |
---|---|
ctxt | an XML parser context |
inputchk | the input used for the current entity, needed for boundary checks |
XMLPUBFUN int XMLCALL | xmlParseElementContentDecl | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | name, | |||
xmlElementContentPtr * | result | |||
) |
xmlParseElementContentDecl: parse the declaration for an Element content either Mixed or Children, the cases EMPTY and ANY are handled directly in xmlParseElementDecl
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
returns: the type of element content XML_ELEMENT_TYPE_xxx or -1 if error
Parameters | |
---|---|
ctxt | an XML parser context |
name | the name of the element being defined. |
result | the Element Content pointer will be stored here if any |
XMLPUBFUN int XMLCALL | xmlParseElementDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseElementDecl: parse an Element declaration.
[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'
[ VC: Unique Element Type Declaration ] No element type may be declared more than once
Returns the type of the element, or -1 in case of error
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseMarkupDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseMarkupDecl: parse Markup declarations
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment
[ VC: Proper Declaration/PE Nesting ] Parameter-entity replacement text must be properly nested with markup declarations. That is to say, if either the first character or the last character of a markup declaration (markupdecl above) is contained in the replacement text for a parameter-entity reference, both must be contained in the same replacement text.
[ WFC: PEs in Internal Subset ] In the internal DTD subset, parameter-entity references can occur only where markup declarations can occur, not within markup declarations. (This does not apply to references that occur in external parameter entities or to the external subset.)
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN int XMLCALL | xmlParseCharRef | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseCharRef: parse Reference declarations
[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
[ WFC: Legal Character ] Characters referred to using character references must match the production for Char.
Returns the value parsed (as an int), 0 in case of error
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlEntityPtr XMLCALL | xmlParseEntityRef | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseEntityRef: parse ENTITY references declarations
[68] EntityRef ::= '&' Name ';'
[ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with "standalone='yes'", the Name given in the entity reference must match that in an entity declaration, except that well-formed documents need not declare any of the following entities: amp, lt, gt, apos, quot. The declaration of a parameter entity must precede any reference to it. Similarly, the declaration of a general entity must precede any reference to it which appears in a default value in an attribute-list declaration. Note that if entities are declared in the external subset or in external parameter entities, a non-validating processor is not obligated to read and process their declarations; for such documents, the rule that an entity must be declared is a well-formedness constraint only if standalone='yes'.
[ WFC: Parsed Entity ] An entity reference must not contain the name of an unparsed entity
Returns the xmlEntityPtr if found, or NULL otherwise.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseReference | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseReference: parse and handle entity references in content, depending on the SAX interface, this may end-up in a call to character() if this is a CharRef, a predefined entity, if there is no reference() callback. or if the parser was asked to switch to that mode.
[67] Reference ::= EntityRef | CharRef
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParsePEReference | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParsePEReference: parse PEReference declarations The entity content is handled directly by pushing it's content as a new input stream.
[69] PEReference ::= '' Name ';'
[ WFC: No Recursion ] A parsed entity must not contain a recursive reference to itself, either directly or indirectly.
[ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with "standalone='yes'", ... ... The declaration of a parameter entity must precede any reference to it...
[ VC: Entity Declared ] In a document with an external subset or external parameter entities with "standalone='no'", ... ... The declaration of a parameter entity must precede any reference to it...
[ WFC: In DTD ] Parameter-entity references may only appear in the DTD. NOTE: misleading but this is handled.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseDocTypeDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseDocTypeDecl: parse a DOCTYPE declaration
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
[ VC: Root Element Type ] The Name in the document type declaration must match the element type of the root element.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN const xmlChar *XMLCALL | xmlParseAttribute | ( | xmlParserCtxtPtr | ctxt, |
xmlChar ** | value | |||
) |
XMLPUBFUN const xmlChar *XMLCALL | xmlParseStartTag | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN void XMLCALL | xmlParseEndTag | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN void XMLCALL | xmlParseCDSect | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseCDSect: Parse escaped pure raw content.
[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] Data ::= (Char* - (Char* ']]>' Char*))
[21] CDEnd ::= ']]>'
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseContent | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseContent: Parse a content:
[43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseElement | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseElement: parse an XML element, this is highly recursive
[39] element ::= EmptyElemTag | STag content ETag
[ WFC: Element Type Match ] The Name in an element's end-tag must match the element type in the start-tag.
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParseVersionNum | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseVersionNum: parse the XML version value.
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
Returns the string giving the XML version number, or NULL
OOM: possible --> sets OOM flag when NULL is returned
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParseVersionInfo | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseVersionInfo: parse the XML version.
[24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ") [25] Eq ::= S? '=' S?
Returns the version string, e.g. "1.0"
OOM:
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN xmlChar *XMLCALL | xmlParseEncName | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseEncName: parse the XML encoding name
[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
Returns the encoding name value or NULL
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN const xmlChar *XMLCALL | xmlParseEncodingDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseEncodingDecl: parse the XML encoding declaration
[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'")
this setups the conversion filters.
Returns the encoding value or NULL
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN int XMLCALL | xmlParseSDDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseSDDecl: parse the XML standalone declaration
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no')'"'))
attributes with default values, if elements to which these attributes apply appear in the document without specifications of values for these attributes, or
entities (other than amp, lt, gt, apos, quot), if references to those entities appear in the document, or
attributes with values subject to normalization, where the attribute appears in the document with a value which will change as a result of normalization, or
element types with element content, if white space occurs directly within any instance of those types.
Returns 1 if standalone, 0 otherwise
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseXMLDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseXMLDecl: parse an XML declaration header
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
OOM:
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseTextDecl | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseTextDecl: parse an XML declaration header for external entities
[77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
Question: Seems that EncodingDecl is mandatory ? Is that a typo ?
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseMisc | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParseMisc: parse an XML Misc* optional field.
[27] Misc ::= Comment | PI | S
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN void XMLCALL | xmlParseExternalSubset | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | ExternalID, | |||
const xmlChar * | SystemID | |||
) |
xmlParseExternalSubset: parse Markup declarations from an external subset
[30] extSubset ::= textDecl? extSubsetDecl
[31] extSubsetDecl ::= (markupdecl | conditionalSect | PEReference | S) *
Parameters | |
---|---|
ctxt | an XML parser context |
ExternalID | the external identifier |
SystemID | the system identifier (or URL) |
XML_SUBSTITUTE_BOTH:
Both general and parameter entities need to be substituted.
XMLPUBFUN xmlChar *XMLCALL | xmlDecodeEntities | ( | xmlParserCtxtPtr | ctxt, |
int | len, | |||
int | what, | |||
xmlChar | end, | |||
xmlChar | end2, | |||
xmlChar | end3 | |||
) |
XMLPUBFUN xmlChar *XMLCALL | xmlStringDecodeEntities | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | str, | |||
int | what, | |||
xmlChar | end, | |||
xmlChar | end2, | |||
xmlChar | end3 | |||
) |
xmlStringDecodeEntities: Takes a entity string content and process to do the adequate substitutions.
[67] Reference ::= EntityRef | CharRef
[69] PEReference ::= '' Name ';'
Returns A newly allocated string with the substitution done. The caller must deallocate it !
Parameters | |
---|---|
ctxt | the parser context |
str | the input string |
what | combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF |
end | an end marker xmlChar, 0 if none |
end2 | an end marker xmlChar, 0 if none |
end3 | an end marker xmlChar, 0 if none |
XMLPUBFUN xmlChar *XMLCALL | xmlStringLenDecodeEntities | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | str, | |||
int | len, | |||
int | what, | |||
xmlChar | end, | |||
xmlChar | end2, | |||
xmlChar | end3 | |||
) |
xmlStringLenDecodeEntities: Takes a entity string content and process to do the adequate substitutions.
[67] Reference ::= EntityRef | CharRef
[69] PEReference ::= '' Name ';'
Returns A newly allocated string with the substitution done. The caller must deallocate it !
Parameters | |
---|---|
ctxt | the parser context |
str | the input string |
len | the string length |
what | combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF |
end | an end marker xmlChar, 0 if none |
end2 | an end marker xmlChar, 0 if none |
end3 | an end marker xmlChar, 0 if none |
XMLPUBFUN int XMLCALL | nodePush | ( | xmlParserCtxtPtr | ctxt, |
xmlNodePtr | value | |||
) |
nodePush: Pushes a new element node on top of the node stack
Returns 0 in case of error, the index in the stack otherwise
Parameters | |
---|---|
ctxt | an XML parser context |
value | the element node |
XMLPUBFUN xmlNodePtr XMLCALL | nodePop | ( | xmlParserCtxtPtr | ctxt | ) |
nodePop: Pops the top element node from the node stack
Returns the node just removed
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN int XMLCALL | inputPush | ( | xmlParserCtxtPtr | ctxt, |
xmlParserInputPtr | value | |||
) |
inputPush: Pushes a new parser input on top of the input stack
Returns -1 in case of error, the index in the stack otherwise
OOM: possible --> returns -1 and OOM flag is set
Parameters | |
---|---|
ctxt | an XML parser context |
value | the parser input |
XMLPUBFUN xmlParserInputPtr XMLCALL | inputPop | ( | xmlParserCtxtPtr | ctxt | ) |
inputPop: Pops the top parser input from the input stack
Returns the input just removed
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN const xmlChar *XMLCALL | namePop | ( | xmlParserCtxtPtr | ctxt | ) |
namePop: Pops the top element name from the name stack
Returns the name just removed
Parameters | |
---|---|
ctxt | an XML parser context |
XMLPUBFUN int XMLCALL | namePush | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | value | |||
) |
namePush: Pushes a new element name on top of the name stack
Returns -1 in case of error, the index in the stack otherwise
Parameters | |
---|---|
ctxt | an XML parser context |
value | the element name |
XMLPUBFUN int XMLCALL | xmlSkipBlankChars | ( | xmlParserCtxtPtr | ctxt | ) |
xmlSkipBlankChars: skip all blanks character found at that point in the input streams. It pops up finished entities in the process if allowable at that point.
Returns the number of space chars skipped
OOM: possible -->
Parameters | |
---|---|
ctxt | the XML parser context |
XMLPUBFUN int XMLCALL | xmlStringCurrentChar | ( | xmlParserCtxtPtr | ctxt, |
const xmlChar * | cur, | |||
int * | len | |||
) |
xmlStringCurrentChar: The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer.
Returns the current char value and its length
Parameters | |
---|---|
ctxt | the XML parser context |
cur | pointer to the beginning of the char |
len | pointer to the length of the char read |
XMLPUBFUN void XMLCALL | xmlParserHandlePEReference | ( | xmlParserCtxtPtr | ctxt | ) |
xmlParserHandlePEReference: [69] PEReference ::= '' Name ';'
[ WFC: No Recursion ] A parsed entity must not contain a recursive reference to itself, either directly or indirectly.
[ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with "standalone='yes'", ... ... The declaration of a parameter entity must precede any reference to it...
[ VC: Entity Declared ] In a document with an external subset or external parameter entities with "standalone='no'", ... ... The declaration of a parameter entity must precede any reference to it...
[ WFC: In DTD ] Parameter-entity references may only appear in the DTD. NOTE: misleading but this is handled.
Included in literal in entity values
Included as Parameter Entity reference within DTDs
OOM: possible ------ review NOT FINISHED YET
Parameters | |
---|---|
ctxt | the parser context |
XMLPUBFUN void XMLCALL | xmlParserHandleReference | ( | xmlParserCtxtPtr | ctxt | ) |
XMLPUBFUN int XMLCALL | xmlCheckLanguageID | ( | const xmlChar * | lang | ) |
xmlCheckLanguageID: Checks that the value conforms to the LanguageID production:
NOTE: this is somewhat deprecated, those productions were removed from the XML Second edition.
[33] LanguageID ::= Langcode ('-' Subcode)* [34] Langcode ::= ISO639Code | IanaCode | UserCode [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+ [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+
Returns 1 if correct 0 otherwise
Parameters | |
---|---|
lang | pointer to the string value |
XMLPUBFUN int XMLCALL | xmlCurrentChar | ( | xmlParserCtxtPtr | ctxt, |
int * | len | |||
) |
xmlCurrentChar: The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer. Implement the end of line normalization: 2.11 End-of-Line Handling Wherever an external parsed entity or the literal entity value of an internal parsed entity contains either the literal two-character sequence "#xD#xA" or a standalone literal #xD, an XML processor must pass to the application the single character #xA. This behavior can conveniently be produced by normalizing all line breaks to #xA on input, before parsing.)
Returns the current char value and its length
OOM: possible --> OOM flag is set when returns 0
Parameters | |
---|---|
ctxt | the XML parser context |
len | pointer to the length of the char read |
XMLPUBFUN int XMLCALL | xmlCopyCharMultiByte | ( | xmlChar * | out, |
int | val | |||
) |
xmlCopyCharMultiByte: append the char value in the array
Returns the number of xmlChar written
OOM: never
Parameters | |
---|---|
out | pointer to an array of xmlChar |
val | the char value |
XMLPUBFUN int XMLCALL | xmlCopyChar | ( | int | len, |
xmlChar * | out, | |||
int | val | |||
) |
xmlCopyChar: append the char value in the array
Returns the number of xmlChar written
Parameters | |
---|---|
len | Ignored, compatibility |
out | pointer to an array of xmlChar |
val | the char value |
XMLPUBFUN void XMLCALL | xmlNextChar | ( | xmlParserCtxtPtr | ctxt | ) |
xmlNextChar: Skip to the next char input char.
OOM (REVIEW NOT FINISHED): possible --> check OOM flag
Parameters | |
---|---|
ctxt | the XML parser context |
XMLPUBFUN void XMLCALL | xmlParserInputShrink | ( | xmlParserInputPtr | in | ) |
xmlParserInputShrink: This function removes used input for the parser.
Parameters | |
---|---|
in | an XML parser input |
typedef void(* | xmlEntityReferenceFunc |
xmlEntityReferenceFunc: Callback function used when one needs to be able to track back the provenance of a chunk of nodes inherited from an entity replacement.