From a9aea16f3a9a0df2a592554d2f074fcfa9768e26 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Sun, 10 Mar 2024 10:23:51 -0400 Subject: [PATCH] Save work on docos. --- doc/body.md | 84 ++++++++++++++++++++++++++------------------------ doc/mxml.3 | 39 ++++++++--------------- doc/mxml.epub | Bin 720548 -> 720417 bytes doc/mxml.html | 44 ++++++++------------------ 4 files changed, 69 insertions(+), 98 deletions(-) diff --git a/doc/body.md b/doc/body.md index 5504068..284e58c 100644 --- a/doc/body.md +++ b/doc/body.md @@ -45,13 +45,13 @@ I then replied with: > Given the limited scope of what you use in XML, it should be trivial to code a > mini-XML API in a few hundred lines of code. -I took my own challenge and coded furiously for two days to produced the initial +I took my own challenge and coded furiously for two days to produce the initial public release of Mini-XML, total lines of code: 696. Robert promptly integrated Mini-XML into Gutenprint and removed libxml2. Thanks to lots of feedback and support from various developers, Mini-XML has evolved since then to provide a more complete XML implementation and now stands -at a whopping 3,839 lines of code, compared to 175,808 lines of code for libxml2 +at a whopping 3,875 lines of code, compared to 175,808 lines of code for libxml2 version 2.11.7. @@ -62,6 +62,9 @@ The Mini-XML home page can be found at . From there you can download the current version of Mini-XML, access the issue tracker, and find other resources. +Mini-XML v4 has a slightly different API than prior releases. See the +[Migrating from Mini-XML v3.x](@) chapter for details. + Legal Stuff ----------- @@ -90,17 +93,20 @@ proper compiler and linker options for your installation: gcc `pkg-config --cflags mxml4` -o myprogram myprogram.c `pkg-config --libs mxml4` +> Note: The library name "mxml4" is a configure-time option. If you use the +> `--disable-libmxml4-prefix` configure option the library is named "mxml". + Loading an XML File ------------------- -You load an XML file using the `mxmlLoadFile` function: +You load an XML file using the [mxmlLoadFile](@@) function: ```c mxml_node_t * -mxmlLoadFile(mxml_node_t *top, FILE *fp, - mxml_load_cb_t load_cb, void *load_cbdata, - mxml_sax_cb_t sax_cb, void *sax_cbdata); +mxmlLoadFilename(mxml_node_t *top, const char *filename, + mxml_load_cb_t load_cb, void *load_cbdata, + mxml_sax_cb_t sax_cb, void *sax_cbdata); ``` The `load_cb` argument specifies a function that assigns child (value) node @@ -110,18 +116,16 @@ nodes. For example, to load the XML file "filename.xml" containing literal strings you can use: ```c -FILE *fp; mxml_node_t *tree; mxml_type_t type = MXML_TYPE_OPAQUE; -fp = fopen("filename.xml", "r"); -tree = mxmlLoadFile(/*top*/NULL, fp, /*load_cb*/NULL, &type, - /*sax_cb*/NULL, /*sax_cbdata*/NULL); -fclose(fp); +tree = mxmlLoadFilename(/*top*/NULL, "filename.xml", + /*load_cb*/NULL, /*load_cbdata*/&type, + /*sax_cb*/NULL, /*sax_cbdata*/NULL); ``` -Mini-XML also provides functions to load from a named file, a file descriptor, -or string: +Mini-XML also provides functions to load from a `FILE` pointer, a file +descriptor, or string: ```c mxml_node_t * @@ -130,9 +134,9 @@ mxmlLoadFd(mxml_node_t *top, int fd, mxml_sax_cb_t sax_cb, void *sax_cbdata); mxml_node_t * -mxmlLoadFilename(mxml_node_t *top, const char *filename, - mxml_load_cb_t load_cb, void *load_cbdata, - mxml_sax_cb_t sax_cb, void *sax_cbdata); +mxmlLoadFile(mxml_node_t *top, FILE *fp, + mxml_load_cb_t load_cb, void *load_cbdata, + mxml_sax_cb_t sax_cb, void *sax_cbdata); mxml_node_t * mxmlLoadString(mxml_node_t *top, const char *s, @@ -143,18 +147,19 @@ mxmlLoadString(mxml_node_t *top, const char *s, ### Load Callbacks -The `load_xxx` arguments to the `mxmlLoad` functions are a callback function and -a data pointer which are used to determine the value type of each data node in -an XML document. The default (`NULL`) callback expects the `load_cbdata` -argument to be a pointer to a `mxml_type_t` variable - if `NULL` it returns the -`MXML_TYPE_TEXT` type. +The `load_xxx` arguments to the mxmlLoadXxx functions are a callback function +and a data pointer which are used to determine the value type of each data node +in an XML document. The default (`NULL`) callback expects the `load_cbdata` +argument to be a pointer to a `mxml_type_t` variable that contains the desired +value node type - if `NULL`, it uses the `MXML_TYPE_TEXT` (whitespace-separated +text) type. -You can provide your own callback functions for more complex XML documents. -Your callback function will receive a pointer to the current element node and -must return the value type of the immediate children for that element node: +You can provide your own callback function for more complex XML documents. Your +callback function will receive a pointer to the current element node and must +return the value type of the immediate children for that element node: `MXML_TYPE_CUSTOM`, `MXML_TYPE_INTEGER`, `MXML_TYPE_OPAQUE`, `MXML_TYPE_REAL`, or `MXML_TYPE_TEXT`. The function is called *after* the element and its -attributes have been read, so you can look at the element name, attributes, and +attributes have been read so you can look at the element name, attributes, and attribute values to determine the proper value type to return. The following callback function looks for an attribute named "type" or the @@ -162,7 +167,7 @@ element name to determine the value type for its child nodes: ```c mxml_type_t -type_cb(void *cbdata, mxml_node_t *node) +my_load_cb(void *cbdata, mxml_node_t *node) { const char *type; @@ -174,6 +179,8 @@ type_cb(void *cbdata, mxml_node_t *node) type = mxmlElementGetAttr(node, "type"); if (type == NULL) type = mxmlGetElement(node); + if (type == NULL) + type = "text"; if (!strcmp(type, "integer")) return (MXML_TYPE_INTEGER); @@ -186,18 +193,15 @@ type_cb(void *cbdata, mxml_node_t *node) } ``` -To use this callback function, simply use the name when you call any of the load +To use this callback function, simply specify it when you call any of the load functions: ```c -FILE *fp; mxml_node_t *tree; -fp = fopen("filename.xml", "r"); -tree = mxmlLoadFile(/*top*/NULL, fp, - type_cb, /*load_cbdata*/NULL, - /*sax_cb*/NULL, /*sax_cbata*/NULL); -fclose(fp); +tree = mxmlLoadFilename(/*top*/NULL, "filename.xml", + my_load_cb, /*load_cbdata*/NULL, + /*sax_cb*/NULL, /*sax_cbdata*/NULL); ``` @@ -242,7 +246,7 @@ the node tree for the file would look like the following in memory: where "-" is a pointer to the sibling node and "|" is a pointer to the first child or parent node. -The `mxmlGetType` function gets the type of a node: +The [mxmlGetType](@@) function gets the type of a node: ```c mxml_type_t @@ -261,10 +265,10 @@ mxmlGetType(mxml_node_t *node); - `MXML_TYPE_REAL` : A whitespace-delimited floating point value, or - `MXML_TYPE_TEXT` : A whitespace-delimited text (fragment) value. -The parent and sibling nodes are accessed using the `mxmlGetParent`, -`mxmlGetNextSibling`, and `mxmlGetPreviousSibling` functions, while the children -of an element node are accessed using the `mxmlGetFirstChild` or -`mxmlGetLastChild` functions: +The parent and sibling nodes are accessed using the [mxmlGetParent](@@), +[mxmlGetNextSibling](@@), and [mxmlGetPreviousSibling](@@) functions, while the +children of an element node are accessed using the [mxmlGetFirstChild](@@) or +[mxmlGetLastChild](@@) functions: ```c mxml_node_t * @@ -283,8 +287,8 @@ mxml_node_t * mxmlGetPrevSibling(mxml_node_t *node); ``` -The `mxmlGetUserData` function gets any user (application) data associated with -the node: +The [mxmlGetUserData](@@) function gets any user (application) data associated +with the node: ```c void * diff --git a/doc/mxml.3 b/doc/mxml.3 index 0b6eaac..a9f5525 100644 --- a/doc/mxml.3 +++ b/doc/mxml.3 @@ -1,4 +1,4 @@ -.TH mxml 3 "Mini-XML API" "2024-03-06" "Mini-XML API" +.TH mxml 3 "Mini-XML API" "2024-03-07" "Mini-XML API" .SH NAME mxml \- Mini-XML API .SH INCLUDE FILE @@ -1315,22 +1315,6 @@ bool mxmlSetCustom ( .fi .PP The node is not changed if it (or its first child) is not a custom node. -.SS mxmlSetCustomCallbacks -Set the handling functions for custom data. -.PP -.nf -void mxmlSetCustomCallbacks ( - mxml_custom_load_cb_t load_cb, - mxml_custom_save_cb_t save_cb, - void *cbdata -); -.fi -.PP -The load function accepts a node pointer and a data string and must -return 0 on success and non-zero on error. -.PP -The save function accepts a node pointer and must return a malloc'd -string on success and \fBNULL\fR on error. .SS mxmlSetDeclaration Set a comment to a literal string. .PP @@ -1380,15 +1364,6 @@ bool mxmlSetElement ( .fi .PP The node is not changed if it is not an element node. -.SS mxmlSetErrorCallback -Set the error message callback. -.PP -.nf -void mxmlSetErrorCallback ( - mxml_error_cb_t cb, - void *cbdata -); -.fi .SS mxmlSetInteger Set the value of an integer node. .PP @@ -1591,6 +1566,18 @@ SAX event type. .nf typedef enum mxml_sax_event_e mxml_sax_event_t; .fi +.SS mxml_strcopy_cb_t +String copy/allocation callback +.PP +.nf +typedef char *(*)(void *cbdata const char *s) mxml_strcopy_cb_t; +.fi +.SS mxml_strfree_cb_t +String free callback +.PP +.nf +typedef void(*)(void *cbdata char *s) mxml_strfree_cb_t; +.fi .SS mxml_type_t The XML node type. .PP diff --git a/doc/mxml.epub b/doc/mxml.epub index da8a44203dc671ab839c0139196d212bf680eede..cae7f734262466cade52ec78752a32d1031fb761 100644 GIT binary patch delta 23191 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 U|524(rTRZ%(x7p|F<-9wAEE{cX#fBK delta 23284 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 diff --git a/doc/mxml.html b/doc/mxml.html index e2d957a..3e83dd4 100644 --- a/doc/mxml.html +++ b/doc/mxml.html @@ -356,13 +356,11 @@ span.string {
  • mxmlSetComment
  • mxmlSetCommentf
  • mxmlSetCustom
  • -
  • mxmlSetCustomCallbacks
  • mxmlSetDeclaration
  • mxmlSetDeclarationf
  • mxmlSetDirective
  • mxmlSetDirectivef
  • mxmlSetElement
  • -
  • mxmlSetErrorCallback
  • mxmlSetInteger
  • mxmlSetOpaque
  • mxmlSetOpaquef
  • @@ -389,6 +387,8 @@ span.string {
  • mxml_save_cb_t
  • mxml_sax_cb_t
  • mxml_sax_event_t
  • +
  • mxml_strcopy_cb_t
  • +
  • mxml_strfree_cb_t
  • mxml_type_t
  • mxml_write_cb_t
  • mxml_ws_t
  • @@ -2600,25 +2600,6 @@ bool mxmlSetCustom(mxml_node_t *node, void *data, true on success, false on failure

    Discussion

    The node is not changed if it (or its first child) is not a custom node.

    -

    mxmlSetCustomCallbacks

    -

    Set the handling functions for custom data.

    -

    -void mxmlSetCustomCallbacks(mxml_custom_load_cb_t load_cb, mxml_custom_save_cb_t save_cb, void *cbdata);

    -

    Parameters

    - - - - - - - -
    load_cbLoad callback function
    save_cbSave callback function
    cbdataCallback data
    -

    Discussion

    -

    The load function accepts a node pointer and a data string and must -return 0 on success and non-zero on error.
    -
    -The save function accepts a node pointer and must return a malloc'd -string on success and NULL on error.

    mxmlSetDeclaration

    Set a comment to a literal string.

    @@ -2690,17 +2671,6 @@ bool mxmlSetElement(mxml_node_t *node, const char *na

    true on success, false on failure

    Discussion

    The node is not changed if it is not an element node.

    -

    mxmlSetErrorCallback

    -

    Set the error message callback.

    -

    -void mxmlSetErrorCallback(mxml_error_cb_t cb, void *cbdata);

    -

    Parameters

    - - - - - -
    cbError callback function
    cbdataError callback data

    mxmlSetInteger

    Set the value of an integer node.

    @@ -2932,6 +2902,16 @@ typedef bool (*mxml_sax_cb_t)(void *cbdata mxml_node_t typedef enum mxml_sax_event_e mxml_sax_event_t;

    +

    mxml_strcopy_cb_t

    +

    String copy/allocation callback

    +

    +typedef char *(*mxml_strcopy_cb_t)(void *cbdata const char *s); +

    +

    mxml_strfree_cb_t

    +

    String free callback

    +

    +typedef void (*mxml_strfree_cb_t)(void *cbdata char *s); +

    mxml_type_t

    The XML node type.