Index: third_party/libxml/src/c14n.c |
diff --git a/third_party/libxml/src/c14n.c b/third_party/libxml/src/c14n.c |
index 9c3cad2a49fae8c618d02ea899dfc24ed6514f33..ca77f922a0f3691fce76c0e2eb704d6d5e02ebde 100644 |
--- a/third_party/libxml/src/c14n.c |
+++ b/third_party/libxml/src/c14n.c |
@@ -1,12 +1,12 @@ |
/* |
- * "Canonical XML" implementation |
+ * "Canonical XML" implementation |
* http://www.w3.org/TR/xml-c14n |
- * |
+ * |
* "Exclusive XML Canonicalization" implementation |
* http://www.w3.org/TR/xml-exc-c14n |
* |
* See Copyright for the status of this software. |
- * |
+ * |
* Author: Aleksey Sanin <aleksey@aleksey.com> |
*/ |
#define IN_LIBXML |
@@ -27,6 +27,8 @@ |
#include <libxml/xpathInternals.h> |
#include <libxml/c14n.h> |
+#include "buf.h" |
+ |
/************************************************************************ |
* * |
* Some declaration better left private ATM * |
@@ -44,7 +46,7 @@ typedef struct _xmlC14NVisibleNsStack { |
int nsPrevStart; /* the begginning of the stack for previous visible node */ |
int nsPrevEnd; /* the end of the stack for previous visible node */ |
int nsMax; /* size of the array as allocated */ |
- xmlNsPtr *nsTab; /* array of ns in no particular order */ |
+ xmlNsPtr *nsTab; /* array of ns in no particular order */ |
xmlNodePtr *nodeTab; /* array of nodes in no particular order */ |
} xmlC14NVisibleNsStack, *xmlC14NVisibleNsStackPtr; |
@@ -52,7 +54,7 @@ typedef struct _xmlC14NCtx { |
/* input parameters */ |
xmlDocPtr doc; |
xmlC14NIsVisibleCallback is_visible_callback; |
- void* user_data; |
+ void* user_data; |
int with_comments; |
xmlOutputBufferPtr buf; |
@@ -60,7 +62,7 @@ typedef struct _xmlC14NCtx { |
xmlC14NPosition pos; |
int parent_is_doc; |
xmlC14NVisibleNsStackPtr ns_rendered; |
- |
+ |
/* C14N mode */ |
xmlC14NMode mode; |
@@ -73,17 +75,17 @@ typedef struct _xmlC14NCtx { |
static xmlC14NVisibleNsStackPtr xmlC14NVisibleNsStackCreate (void); |
static void xmlC14NVisibleNsStackDestroy (xmlC14NVisibleNsStackPtr cur); |
-static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, |
+static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, |
xmlNsPtr ns, |
xmlNodePtr node); |
-static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, |
+static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, |
xmlC14NVisibleNsStackPtr state); |
-static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, |
+static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, |
xmlC14NVisibleNsStackPtr state); |
-static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); |
-static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, |
+static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); |
+static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, |
xmlNsPtr ns); |
-static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, |
+static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, |
xmlNsPtr ns, |
xmlC14NCtxPtr ctx); |
@@ -105,26 +107,26 @@ typedef enum { |
static xmlChar *xmlC11NNormalizeString(const xmlChar * input, |
xmlC14NNormalizationMode mode); |
-#define xmlC11NNormalizeAttr( a ) \ |
+#define xmlC11NNormalizeAttr( a ) \ |
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR) |
-#define xmlC11NNormalizeComment( a ) \ |
+#define xmlC11NNormalizeComment( a ) \ |
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT) |
-#define xmlC11NNormalizePI( a ) \ |
+#define xmlC11NNormalizePI( a ) \ |
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI) |
-#define xmlC11NNormalizeText( a ) \ |
+#define xmlC11NNormalizeText( a ) \ |
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT) |
-#define xmlC14NIsVisible( ctx, node, parent ) \ |
+#define xmlC14NIsVisible( ctx, node, parent ) \ |
(((ctx)->is_visible_callback != NULL) ? \ |
(ctx)->is_visible_callback((ctx)->user_data, \ |
(xmlNodePtr)(node), (xmlNodePtr)(parent)) : 1) |
-#define xmlC14NIsExclusive( ctx ) \ |
+#define xmlC14NIsExclusive( ctx ) \ |
( (ctx)->mode == XML_C14N_EXCLUSIVE_1_0 ) |
/************************************************************************ |
* * |
- * Some factorized error routines * |
+ * Some factorized error routines * |
* * |
************************************************************************/ |
@@ -249,25 +251,25 @@ xmlC14NErr(xmlC14NCtxPtr ctxt, xmlNodePtr node, int error, |
************************************************************************/ |
#define XML_NAMESPACES_DEFAULT 16 |
-static int |
+static int |
xmlC14NIsNodeInNodeset(xmlNodeSetPtr nodes, xmlNodePtr node, xmlNodePtr parent) { |
if((nodes != NULL) && (node != NULL)) { |
if(node->type != XML_NAMESPACE_DECL) { |
return(xmlXPathNodeSetContains(nodes, node)); |
} else { |
xmlNs ns; |
- |
- memcpy(&ns, node, sizeof(ns)); |
- |
+ |
+ memcpy(&ns, node, sizeof(ns)); |
+ |
/* this is a libxml hack! check xpath.c for details */ |
if((parent != NULL) && (parent->type == XML_ATTRIBUTE_NODE)) { |
ns.next = (xmlNsPtr)parent->parent; |
} else { |
- ns.next = (xmlNsPtr)parent; |
+ ns.next = (xmlNsPtr)parent; |
} |
- /* |
- * If the input is an XPath node-set, then the node-set must explicitly |
+ /* |
+ * If the input is an XPath node-set, then the node-set must explicitly |
* contain every node to be rendered to the canonical form. |
*/ |
return(xmlXPathNodeSetContains(nodes, (xmlNodePtr)&ns)); |
@@ -305,12 +307,12 @@ xmlC14NVisibleNsStackDestroy(xmlC14NVisibleNsStackPtr cur) { |
} |
memset(cur, 0, sizeof(xmlC14NVisibleNsStack)); |
xmlFree(cur); |
- |
+ |
} |
-static void |
+static void |
xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node) { |
- if((cur == NULL) || |
+ if((cur == NULL) || |
((cur->nsTab == NULL) && (cur->nodeTab != NULL)) || |
((cur->nsTab != NULL) && (cur->nodeTab == NULL))) { |
xmlC14NErrParam("adding namespace to stack"); |
@@ -328,9 +330,9 @@ xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr n |
memset(cur->nodeTab, 0 , XML_NAMESPACES_DEFAULT * sizeof(xmlNodePtr)); |
cur->nsMax = XML_NAMESPACES_DEFAULT; |
} else if(cur->nsMax == cur->nsCurEnd) { |
- void *tmp; |
+ void *tmp; |
int tmpSize; |
- |
+ |
tmpSize = 2 * cur->nsMax; |
tmp = xmlRealloc(cur->nsTab, tmpSize * sizeof(xmlNsPtr)); |
if (tmp == NULL) { |
@@ -360,7 +362,7 @@ xmlC14NVisibleNsStackSave(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr |
xmlC14NErrParam("saving namespaces stack"); |
return; |
} |
- |
+ |
state->nsCurEnd = cur->nsCurEnd; |
state->nsPrevStart = cur->nsPrevStart; |
state->nsPrevEnd = cur->nsPrevEnd; |
@@ -377,7 +379,7 @@ xmlC14NVisibleNsStackRestore(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStack |
cur->nsPrevEnd = state->nsPrevEnd; |
} |
-static void |
+static void |
xmlC14NVisibleNsStackShift(xmlC14NVisibleNsStackPtr cur) { |
if(cur == NULL) { |
xmlC14NErrParam("shifting namespaces stack"); |
@@ -400,7 +402,7 @@ xmlC14NStrEqual(const xmlChar *str1, const xmlChar *str2) { |
/** |
* xmlC14NVisibleNsStackFind: |
- * @ctx: the C14N context |
+ * @ctx: the C14N context |
* @ns: the namespace to check |
* |
* Checks whether the given namespace was already rendered or not |
@@ -414,14 +416,14 @@ xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns) |
const xmlChar *prefix; |
const xmlChar *href; |
int has_empty_ns; |
- |
+ |
if(cur == NULL) { |
xmlC14NErrParam("searching namespaces stack (c14n)"); |
return (0); |
} |
/* |
- * if the default namespace xmlns="" is not defined yet then |
+ * if the default namespace xmlns="" is not defined yet then |
* we do not want to print it out |
*/ |
prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; |
@@ -432,7 +434,7 @@ xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns) |
int start = (has_empty_ns) ? 0 : cur->nsPrevStart; |
for (i = cur->nsCurEnd - 1; i >= start; --i) { |
xmlNsPtr ns1 = cur->nsTab[i]; |
- |
+ |
if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { |
return(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)); |
} |
@@ -441,20 +443,20 @@ xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns) |
return(has_empty_ns); |
} |
-static int |
+static int |
xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx) { |
int i; |
const xmlChar *prefix; |
const xmlChar *href; |
int has_empty_ns; |
- |
+ |
if(cur == NULL) { |
xmlC14NErrParam("searching namespaces stack (exc c14n)"); |
return (0); |
} |
/* |
- * if the default namespace xmlns="" is not defined yet then |
+ * if the default namespace xmlns="" is not defined yet then |
* we do not want to print it out |
*/ |
prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; |
@@ -465,10 +467,10 @@ xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NC |
int start = 0; |
for (i = cur->nsCurEnd - 1; i >= start; --i) { |
xmlNsPtr ns1 = cur->nsTab[i]; |
- |
+ |
if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { |
if(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)) { |
- return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); |
+ return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); |
} else { |
return(0); |
} |
@@ -483,8 +485,8 @@ xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NC |
/** |
* xmlC14NIsXmlNs: |
- * @ns: the namespace to check |
- * |
+ * @ns: the namespace to check |
+ * |
* Checks whether the given namespace is a default "xml:" namespace |
* with href="http://www.w3.org/XML/1998/namespace" |
* |
@@ -504,7 +506,7 @@ xmlC14NIsXmlNs(xmlNsPtr ns) |
/** |
* xmlC14NNsCompare: |
* @ns1: the pointer to first namespace |
- * @ns2: the pointer to second namespace |
+ * @ns2: the pointer to second namespace |
* |
* Compares the namespaces by names (prefixes). |
* |
@@ -527,7 +529,7 @@ xmlC14NNsCompare(xmlNsPtr ns1, xmlNsPtr ns2) |
/** |
* xmlC14NPrintNamespaces: |
* @ns: the pointer to namespace |
- * @ctx: the C14N context |
+ * @ctx: the C14N context |
* |
* Prints the given namespace to the output buffer from C14N context. |
* |
@@ -545,52 +547,53 @@ xmlC14NPrintNamespaces(const xmlNsPtr ns, xmlC14NCtxPtr ctx) |
if (ns->prefix != NULL) { |
xmlOutputBufferWriteString(ctx->buf, " xmlns:"); |
xmlOutputBufferWriteString(ctx->buf, (const char *) ns->prefix); |
- xmlOutputBufferWriteString(ctx->buf, "=\""); |
+ xmlOutputBufferWriteString(ctx->buf, "="); |
} else { |
- xmlOutputBufferWriteString(ctx->buf, " xmlns=\""); |
+ xmlOutputBufferWriteString(ctx->buf, " xmlns="); |
} |
if(ns->href != NULL) { |
- xmlOutputBufferWriteString(ctx->buf, (const char *) ns->href); |
+ xmlBufWriteQuotedString(ctx->buf->buffer, ns->href); |
+ } else { |
+ xmlOutputBufferWriteString(ctx->buf, "\"\""); |
} |
- xmlOutputBufferWriteString(ctx->buf, "\""); |
return (1); |
} |
/** |
* xmlC14NProcessNamespacesAxis: |
- * @ctx: the C14N context |
+ * @ctx: the C14N context |
* @node: the current node |
* |
* Prints out canonical namespace axis of the current node to the |
- * buffer from C14N context as follows |
+ * buffer from C14N context as follows |
* |
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) |
* |
* Namespace Axis |
- * Consider a list L containing only namespace nodes in the |
- * axis and in the node-set in lexicographic order (ascending). To begin |
- * processing L, if the first node is not the default namespace node (a node |
- * with no namespace URI and no local name), then generate a space followed |
+ * Consider a list L containing only namespace nodes in the |
+ * axis and in the node-set in lexicographic order (ascending). To begin |
+ * processing L, if the first node is not the default namespace node (a node |
+ * with no namespace URI and no local name), then generate a space followed |
* by xmlns="" if and only if the following conditions are met: |
* - the element E that owns the axis is in the node-set |
- * - The nearest ancestor element of E in the node-set has a default |
- * namespace node in the node-set (default namespace nodes always |
+ * - The nearest ancestor element of E in the node-set has a default |
+ * namespace node in the node-set (default namespace nodes always |
* have non-empty values in XPath) |
- * The latter condition eliminates unnecessary occurrences of xmlns="" in |
- * the canonical form since an element only receives an xmlns="" if its |
- * default namespace is empty and if it has an immediate parent in the |
- * canonical form that has a non-empty default namespace. To finish |
- * processing L, simply process every namespace node in L, except omit |
- * namespace node with local name xml, which defines the xml prefix, |
+ * The latter condition eliminates unnecessary occurrences of xmlns="" in |
+ * the canonical form since an element only receives an xmlns="" if its |
+ * default namespace is empty and if it has an immediate parent in the |
+ * canonical form that has a non-empty default namespace. To finish |
+ * processing L, simply process every namespace node in L, except omit |
+ * namespace node with local name xml, which defines the xml prefix, |
* if its string value is http://www.w3.org/XML/1998/namespace. |
* |
* Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) |
- * Canonical XML applied to a document subset requires the search of the |
- * ancestor nodes of each orphan element node for attributes in the xml |
- * namespace, such as xml:lang and xml:space. These are copied into the |
- * element node except if a declaration of the same attribute is already |
- * in the attribute axis of the element (whether or not it is included in |
- * the document subset). This search and copying are omitted from the |
+ * Canonical XML applied to a document subset requires the search of the |
+ * ancestor nodes of each orphan element node for attributes in the xml |
+ * namespace, such as xml:lang and xml:space. These are copied into the |
+ * element node except if a declaration of the same attribute is already |
+ * in the attribute axis of the element (whether or not it is included in |
+ * the document subset). This search and copying are omitted from the |
* Exclusive XML Canonicalization method. |
* |
* Returns 0 on success or -1 on fail. |
@@ -603,7 +606,7 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
xmlListPtr list; |
int already_rendered; |
int has_empty_ns = 0; |
- |
+ |
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { |
xmlC14NErrParam("processing namespaces axis (c14n)"); |
return (-1); |
@@ -622,29 +625,29 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
for(n = cur; n != NULL; n = n->parent) { |
for(ns = n->nsDef; ns != NULL; ns = ns->next) { |
tmp = xmlSearchNs(cur->doc, cur, ns->prefix); |
- |
+ |
if((tmp == ns) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { |
already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); |
if(visible) { |
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); |
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); |
} |
if(!already_rendered) { |
- xmlListInsert(list, ns); |
+ xmlListInsert(list, ns); |
} |
- if(xmlStrlen(ns->prefix) == 0) { |
+ if(xmlStrlen(ns->prefix) == 0) { |
has_empty_ns = 1; |
} |
} |
} |
} |
- |
+ |
/** |
- * if the first node is not the default namespace node (a node with no |
- * namespace URI and no local name), then generate a space followed by |
+ * if the first node is not the default namespace node (a node with no |
+ * namespace URI and no local name), then generate a space followed by |
* xmlns="" if and only if the following conditions are met: |
* - the element E that owns the axis is in the node-set |
- * - the nearest ancestor element of E in the node-set has a default |
- * namespace node in the node-set (default namespace nodes always |
+ * - the nearest ancestor element of E in the node-set has a default |
+ * namespace node in the node-set (default namespace nodes always |
* have non-empty values in XPath) |
*/ |
if(visible && !has_empty_ns) { |
@@ -652,17 +655,17 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
memset(&ns_default, 0, sizeof(ns_default)); |
if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { |
- xmlC14NPrintNamespaces(&ns_default, ctx); |
+ xmlC14NPrintNamespaces(&ns_default, ctx); |
} |
} |
- |
- |
- /* |
- * print out all elements from list |
+ |
+ |
+ /* |
+ * print out all elements from list |
*/ |
xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); |
- /* |
+ /* |
* Cleanup |
*/ |
xmlListDelete(list); |
@@ -672,28 +675,28 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
/** |
* xmlExcC14NProcessNamespacesAxis: |
- * @ctx: the C14N context |
+ * @ctx: the C14N context |
* @node: the current node |
* |
* Prints out exclusive canonical namespace axis of the current node to the |
- * buffer from C14N context as follows |
+ * buffer from C14N context as follows |
* |
* Exclusive XML Canonicalization |
* http://www.w3.org/TR/xml-exc-c14n |
* |
- * If the element node is in the XPath subset then output the node in |
- * accordance with Canonical XML except for namespace nodes which are |
+ * If the element node is in the XPath subset then output the node in |
+ * accordance with Canonical XML except for namespace nodes which are |
* rendered as follows: |
* |
* 1. Render each namespace node iff: |
- * * it is visibly utilized by the immediate parent element or one of |
+ * * it is visibly utilized by the immediate parent element or one of |
* its attributes, or is present in InclusiveNamespaces PrefixList, and |
- * * its prefix and value do not appear in ns_rendered. ns_rendered is |
- * obtained by popping the state stack in order to obtain a list of |
- * prefixes and their values which have already been rendered by |
+ * * its prefix and value do not appear in ns_rendered. ns_rendered is |
+ * obtained by popping the state stack in order to obtain a list of |
+ * prefixes and their values which have already been rendered by |
* an output ancestor of the namespace node's parent element. |
- * 2. Append the rendered namespace node to the list ns_rendered of namespace |
- * nodes rendered by output ancestors. Push ns_rendered on state stack and |
+ * 2. Append the rendered namespace node to the list ns_rendered of namespace |
+ * nodes rendered by output ancestors. Push ns_rendered on state stack and |
* recurse. |
* 3. After the recursion returns, pop thestate stack. |
* |
@@ -710,7 +713,7 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
int has_empty_ns = 0; |
int has_visibly_utilized_empty_ns = 0; |
int has_empty_ns_in_inclusive_list = 0; |
- |
+ |
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { |
xmlC14NErrParam("processing namespaces axis (exc c14n)"); |
return (-1); |
@@ -731,15 +734,15 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
return (-1); |
} |
- /* |
+ /* |
* process inclusive namespaces: |
- * All namespace nodes appearing on inclusive ns list are |
+ * All namespace nodes appearing on inclusive ns list are |
* handled as provided in Canonical XML |
*/ |
if(ctx->inclusive_ns_prefixes != NULL) { |
- xmlChar *prefix; |
+ xmlChar *prefix; |
int i; |
- |
+ |
for (i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) { |
prefix = ctx->inclusive_ns_prefixes[i]; |
/* |
@@ -750,23 +753,23 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
prefix = NULL; |
has_empty_ns_in_inclusive_list = 1; |
} |
- |
- ns = xmlSearchNs(cur->doc, cur, prefix); |
+ |
+ ns = xmlSearchNs(cur->doc, cur, prefix); |
if((ns != NULL) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { |
already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); |
if(visible) { |
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); |
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); |
} |
if(!already_rendered) { |
- xmlListInsert(list, ns); |
+ xmlListInsert(list, ns); |
} |
- if(xmlStrlen(ns->prefix) == 0) { |
+ if(xmlStrlen(ns->prefix) == 0) { |
has_empty_ns = 1; |
} |
} |
} |
} |
- |
+ |
/* add node namespace */ |
if(cur->ns != NULL) { |
ns = cur->ns; |
@@ -775,32 +778,32 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
has_visibly_utilized_empty_ns = 1; |
} |
if((ns != NULL) && !xmlC14NIsXmlNs(ns)) { |
- if(visible && xmlC14NIsVisible(ctx, ns, cur)) { |
+ if(visible && xmlC14NIsVisible(ctx, ns, cur)) { |
if(!xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, ns, ctx)) { |
xmlListInsert(list, ns); |
} |
} |
if(visible) { |
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); |
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); |
} |
if(xmlStrlen(ns->prefix) == 0) { |
has_empty_ns = 1; |
} |
} |
- |
- |
+ |
+ |
/* add attributes */ |
for(attr = cur->properties; attr != NULL; attr = attr->next) { |
- /* |
+ /* |
* we need to check that attribute is visible and has non |
- * default namespace (XML Namespaces: "default namespaces |
- * do not apply directly to attributes") |
+ * default namespace (XML Namespaces: "default namespaces |
+ * do not apply directly to attributes") |
*/ |
if((attr->ns != NULL) && !xmlC14NIsXmlNs(attr->ns) && xmlC14NIsVisible(ctx, attr, cur)) { |
already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, attr->ns, ctx); |
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); |
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); |
if(!already_rendered && visible) { |
- xmlListInsert(list, attr->ns); |
+ xmlListInsert(list, attr->ns); |
} |
if(xmlStrlen(attr->ns->prefix) == 0) { |
has_empty_ns = 1; |
@@ -813,33 +816,33 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
/* |
* Process xmlns="" |
*/ |
- if(visible && has_visibly_utilized_empty_ns && |
+ if(visible && has_visibly_utilized_empty_ns && |
!has_empty_ns && !has_empty_ns_in_inclusive_list) { |
static xmlNs ns_default; |
memset(&ns_default, 0, sizeof(ns_default)); |
- |
+ |
already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default, ctx); |
if(!already_rendered) { |
- xmlC14NPrintNamespaces(&ns_default, ctx); |
+ xmlC14NPrintNamespaces(&ns_default, ctx); |
} |
} else if(visible && !has_empty_ns && has_empty_ns_in_inclusive_list) { |
static xmlNs ns_default; |
memset(&ns_default, 0, sizeof(ns_default)); |
if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { |
- xmlC14NPrintNamespaces(&ns_default, ctx); |
+ xmlC14NPrintNamespaces(&ns_default, ctx); |
} |
} |
- |
- /* |
- * print out all elements from list |
+ |
+ /* |
+ * print out all elements from list |
*/ |
xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); |
- /* |
+ /* |
* Cleanup |
*/ |
xmlListDelete(list); |
@@ -849,8 +852,8 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
/** |
* xmlC14NIsXmlAttr: |
- * @attr: the attr to check |
- * |
+ * @attr: the attr to check |
+ * |
* Checks whether the given attribute is a default "xml:" namespace |
* with href="http://www.w3.org/XML/1998/namespace" |
* |
@@ -861,7 +864,7 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
static int |
xmlC14NIsXmlAttr(xmlAttrPtr attr) |
{ |
- return ((attr->ns != NULL) && |
+ return ((attr->ns != NULL) && |
(xmlC14NIsXmlNs(attr->ns) != 0)); |
} |
@@ -869,7 +872,7 @@ xmlC14NIsXmlAttr(xmlAttrPtr attr) |
/** |
* xmlC14NAttrsCompare: |
* @attr1: the pointer tls o first attr |
- * @attr2: the pointer to second attr |
+ * @attr2: the pointer to second attr |
* |
* Prints the given attribute to the output buffer from C14N context. |
* |
@@ -893,7 +896,7 @@ xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) |
return (xmlStrcmp(attr1->name, attr2->name)); |
} |
- /* |
+ /* |
* Attributes in the default namespace are first |
* because the default namespace is not applied to |
* unqualified attributes |
@@ -918,10 +921,10 @@ xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) |
/** |
* xmlC14NPrintAttrs: |
* @attr: the pointer to attr |
- * @ctx: the C14N context |
+ * @ctx: the C14N context |
* |
* Prints out canonical attribute urrent node to the |
- * buffer from C14N context as follows |
+ * buffer from C14N context as follows |
* |
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) |
* |
@@ -968,7 +971,7 @@ xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx) |
* xmlC14NFindHiddenParentAttr: |
* |
* Finds an attribute in a hidden parent node. |
- * |
+ * |
* Returns a pointer to the attribute node (if found) or NULL otherwise. |
*/ |
static xmlAttrPtr |
@@ -996,7 +999,7 @@ xmlC14NFindHiddenParentAttr(xmlC14NCtxPtr ctx, xmlNodePtr cur, const xmlChar * n |
*/ |
static xmlAttrPtr |
xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) |
-{ |
+{ |
xmlChar * res = NULL; |
xmlNodePtr cur; |
xmlAttrPtr attr; |
@@ -1028,9 +1031,9 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) |
xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); |
return (NULL); |
- } |
+ } |
- /* we need to add '/' if our current base uri ends with '..' or '.' |
+ /* we need to add '/' if our current base uri ends with '..' or '.' |
to ensure that we are forced to go "up" all the time */ |
tmp_str_len = xmlStrlen(tmp_str); |
if(tmp_str_len > 1 && tmp_str[tmp_str_len - 2] == '.') { |
@@ -1047,7 +1050,7 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) |
} |
/* build uri */ |
- tmp_str2 = xmlBuildURI(res, tmp_str); |
+ tmp_str2 = xmlBuildURI(res, tmp_str); |
if(tmp_str2 == NULL) { |
xmlFree(tmp_str); |
xmlFree(res); |
@@ -1080,7 +1083,7 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) |
xmlC14NErrInternal("processing xml:base attribute - can't construct attribute"); |
return (NULL); |
} |
- |
+ |
/* done */ |
xmlFree(res); |
return (attr); |
@@ -1088,33 +1091,33 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) |
/** |
* xmlC14NProcessAttrsAxis: |
- * @ctx: the C14N context |
+ * @ctx: the C14N context |
* @cur: the current node |
* @parent_visible: the visibility of parent node |
* @all_parents_visible: the visibility of all parent nodes |
* |
* Prints out canonical attribute axis of the current node to the |
- * buffer from C14N context as follows |
+ * buffer from C14N context as follows |
* |
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) |
* |
- * Attribute Axis |
- * In lexicographic order (ascending), process each node that |
+ * Attribute Axis |
+ * In lexicographic order (ascending), process each node that |
* is in the element's attribute axis and in the node-set. |
- * |
- * The processing of an element node E MUST be modified slightly |
- * when an XPath node-set is given as input and the element's |
+ * |
+ * The processing of an element node E MUST be modified slightly |
+ * when an XPath node-set is given as input and the element's |
* parent is omitted from the node-set. |
* |
* |
* Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) |
* |
- * Canonical XML applied to a document subset requires the search of the |
- * ancestor nodes of each orphan element node for attributes in the xml |
- * namespace, such as xml:lang and xml:space. These are copied into the |
- * element node except if a declaration of the same attribute is already |
- * in the attribute axis of the element (whether or not it is included in |
- * the document subset). This search and copying are omitted from the |
+ * Canonical XML applied to a document subset requires the search of the |
+ * ancestor nodes of each orphan element node for attributes in the xml |
+ * namespace, such as xml:lang and xml:space. These are copied into the |
+ * element node except if a declaration of the same attribute is already |
+ * in the attribute axis of the element (whether or not it is included in |
+ * the document subset). This search and copying are omitted from the |
* Exclusive XML Canonicalization method. |
* |
* Returns 0 on success or -1 on fail. |
@@ -1123,9 +1126,9 @@ static int |
xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
{ |
xmlAttrPtr attr; |
- xmlListPtr list; |
+ xmlListPtr list; |
xmlAttrPtr attrs_to_delete = NULL; |
- |
+ |
/* special processing for 1.1 spec */ |
xmlAttrPtr xml_base_attr = NULL; |
xmlAttrPtr xml_lang_attr = NULL; |
@@ -1147,19 +1150,19 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
switch(ctx->mode) { |
case XML_C14N_1_0: |
- /* The processing of an element node E MUST be modified slightly when an XPath node-set is |
- * given as input and the element's parent is omitted from the node-set. The method for processing |
- * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's |
- * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such |
- * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes, |
- * remove any that are in E's attribute axis (whether or not they are in the node-set). Then, |
- * lexicographically merge this attribute list with the nodes of E's attribute axis that are in |
- * the node-set. The result of visiting the attribute axis is computed by processing the attribute |
- * nodes in this merged attribute list. |
+ /* The processing of an element node E MUST be modified slightly when an XPath node-set is |
+ * given as input and the element's parent is omitted from the node-set. The method for processing |
+ * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's |
+ * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such |
+ * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes, |
+ * remove any that are in E's attribute axis (whether or not they are in the node-set). Then, |
+ * lexicographically merge this attribute list with the nodes of E's attribute axis that are in |
+ * the node-set. The result of visiting the attribute axis is computed by processing the attribute |
+ * nodes in this merged attribute list. |
*/ |
- |
- /* |
- * Add all visible attributes from current node. |
+ |
+ /* |
+ * Add all visible attributes from current node. |
*/ |
attr = cur->properties; |
while (attr != NULL) { |
@@ -1170,16 +1173,16 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
attr = attr->next; |
} |
- /* |
+ /* |
* Handle xml attributes |
*/ |
- if (parent_visible && (cur->parent != NULL) && |
- (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) |
+ if (parent_visible && (cur->parent != NULL) && |
+ (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) |
{ |
xmlNodePtr tmp; |
/* |
- * If XPath node-set is not specified then the parent is always |
+ * If XPath node-set is not specified then the parent is always |
* visible! |
*/ |
tmp = cur->parent; |
@@ -1200,12 +1203,12 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
/* done */ |
break; |
case XML_C14N_EXCLUSIVE_1_0: |
- /* attributes in the XML namespace, such as xml:lang and xml:space |
- * are not imported into orphan nodes of the document subset |
+ /* attributes in the XML namespace, such as xml:lang and xml:space |
+ * are not imported into orphan nodes of the document subset |
*/ |
- /* |
- * Add all visible attributes from current node. |
+ /* |
+ * Add all visible attributes from current node. |
*/ |
attr = cur->properties; |
while (attr != NULL) { |
@@ -1219,36 +1222,36 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
/* do nothing special for xml attributes */ |
break; |
case XML_C14N_1_1: |
- /* The processing of an element node E MUST be modified slightly when an XPath node-set is |
- * given as input and some of the element's ancestors are omitted from the node-set. |
+ /* The processing of an element node E MUST be modified slightly when an XPath node-set is |
+ * given as input and some of the element's ancestors are omitted from the node-set. |
* |
- * Simple inheritable attributes are attributes that have a value that requires at most a simple |
- * redeclaration. This redeclaration is done by supplying a new value in the child axis. The |
- * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done |
- * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes |
+ * Simple inheritable attributes are attributes that have a value that requires at most a simple |
+ * redeclaration. This redeclaration is done by supplying a new value in the child axis. The |
+ * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done |
+ * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes |
* are xml:lang and xml:space. |
- * |
- * The method for processing the attribute axis of an element E in the node-set is hence enhanced. |
- * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple |
- * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they |
- * are in the node-set). From this list of attributes, any simple inheritable attributes that are |
- * already in E's attribute axis (whether or not they are in the node-set) are removed. Then, |
- * lexicographically merge this attribute list with the nodes of E's attribute axis that are in |
- * the node-set. The result of visiting the attribute axis is computed by processing the attribute |
+ * |
+ * The method for processing the attribute axis of an element E in the node-set is hence enhanced. |
+ * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple |
+ * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they |
+ * are in the node-set). From this list of attributes, any simple inheritable attributes that are |
+ * already in E's attribute axis (whether or not they are in the node-set) are removed. Then, |
+ * lexicographically merge this attribute list with the nodes of E's attribute axis that are in |
+ * the node-set. The result of visiting the attribute axis is computed by processing the attribute |
* nodes in this merged attribute list. |
- * |
- * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is |
+ * |
+ * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is |
* performed. |
- * |
- * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond |
+ * |
+ * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond |
* a simple redeclaration. |
- * |
- * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed |
+ * |
+ * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed |
* as ordinary attributes. |
*/ |
- /* |
- * Add all visible attributes from current node. |
+ /* |
+ * Add all visible attributes from current node. |
*/ |
attr = cur->properties; |
while (attr != NULL) { |
@@ -1265,7 +1268,7 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
if((!matched) && (xml_lang_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "lang")) { |
xml_lang_attr = attr; |
matched = 1; |
- } |
+ } |
if((!matched) && (xml_space_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "space")) { |
xml_space_attr = attr; |
matched = 1; |
@@ -1282,11 +1285,11 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
xmlListInsert(list, attr); |
} |
} |
- |
+ |
/* move to the next one */ |
attr = attr->next; |
} |
- |
+ |
/* special processing for XML attribute kiks in only when we have invisible parents */ |
if ((parent_visible)) { |
@@ -1311,7 +1314,7 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
} |
if(xml_base_attr != NULL) { |
xml_base_attr = xmlC14NFixupBaseAttr(ctx, xml_base_attr); |
- if(xml_base_attr != NULL) { |
+ if(xml_base_attr != NULL) { |
xmlListInsert(list, xml_base_attr); |
/* note that we MUST delete returned attr node ourselves! */ |
@@ -1325,12 +1328,12 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
break; |
} |
- /* |
- * print out all elements from list |
+ /* |
+ * print out all elements from list |
*/ |
xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs, (const void *) ctx); |
- /* |
+ /* |
* Cleanup |
*/ |
xmlFreePropList(attrs_to_delete); |
@@ -1338,7 +1341,7 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) |
return (0); |
} |
-/** |
+/** |
* xmlC14NCheckForRelativeNamespaces: |
* @ctx: the C14N context |
* @cur: the current element node |
@@ -1388,23 +1391,23 @@ xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
/** |
* xmlC14NProcessElementNode: |
- * @ctx: the pointer to C14N context object |
+ * @ctx: the pointer to C14N context object |
* @cur: the node to process |
* @visible: this node is visible |
* @all_parents_visible: whether all the parents of this node are visible |
- * |
+ * |
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) |
* |
* Element Nodes |
- * If the element is not in the node-set, then the result is obtained |
- * by processing the namespace axis, then the attribute axis, then |
- * processing the child nodes of the element that are in the node-set |
- * (in document order). If the element is in the node-set, then the result |
- * is an open angle bracket (<), the element QName, the result of |
- * processing the namespace axis, the result of processing the attribute |
- * axis, a close angle bracket (>), the result of processing the child |
- * nodes of the element that are in the node-set (in document order), an |
- * open angle bracket, a forward slash (/), the element QName, and a close |
+ * If the element is not in the node-set, then the result is obtained |
+ * by processing the namespace axis, then the attribute axis, then |
+ * processing the child nodes of the element that are in the node-set |
+ * (in document order). If the element is in the node-set, then the result |
+ * is an open angle bracket (<), the element QName, the result of |
+ * processing the namespace axis, the result of processing the attribute |
+ * axis, a close angle bracket (>), the result of processing the child |
+ * nodes of the element that are in the node-set (in document order), an |
+ * open angle bracket, a forward slash (/), the element QName, and a close |
* angle bracket. |
* |
* Returns non-negative value on success or negative value on fail |
@@ -1421,7 +1424,7 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
return (-1); |
} |
- /* |
+ /* |
* Check relative relative namespaces: |
* implementations of XML canonicalization MUST report an operation |
* failure on documents containing relative namespace URIs. |
@@ -1432,13 +1435,13 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
} |
- /* |
+ /* |
* Save ns_rendered stack position |
*/ |
memset(&state, 0, sizeof(state)); |
xmlC14NVisibleNsStackSave(ctx->ns_rendered, &state); |
- if (visible) { |
+ if (visible) { |
if (ctx->parent_is_doc) { |
/* save this flag into the stack */ |
parent_is_doc = ctx->parent_is_doc; |
@@ -1468,14 +1471,14 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
if(visible) { |
xmlC14NVisibleNsStackShift(ctx->ns_rendered); |
} |
- |
+ |
ret = xmlC14NProcessAttrsAxis(ctx, cur, visible); |
if (ret < 0) { |
xmlC14NErrInternal("processing attributes axis"); |
- return (-1); |
+ return (-1); |
} |
- if (visible) { |
+ if (visible) { |
xmlOutputBufferWriteString(ctx->buf, ">"); |
} |
if (cur->children != NULL) { |
@@ -1501,7 +1504,7 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
} |
} |
- /* |
+ /* |
* Restore ns_rendered stack position |
*/ |
xmlC14NVisibleNsStackRestore(ctx->ns_rendered, &state); |
@@ -1510,9 +1513,9 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) |
/** |
* xmlC14NProcessNode: |
- * @ctx: the pointer to C14N context object |
+ * @ctx: the pointer to C14N context object |
* @cur: the node to process |
- * |
+ * |
* Processes the given node |
* |
* Returns non-negative value on success or negative value on fail |
@@ -1537,9 +1540,9 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
case XML_TEXT_NODE: |
/* |
* Text Nodes |
- * the string value, except all ampersands are replaced |
- * by &, all open angle brackets (<) are replaced by <, all closing |
- * angle brackets (>) are replaced by >, and all #xD characters are |
+ * the string value, except all ampersands are replaced |
+ * by &, all open angle brackets (<) are replaced by <, all closing |
+ * angle brackets (>) are replaced by >, and all #xD characters are |
* replaced by 
. |
*/ |
/* cdata sections are processed as text nodes */ |
@@ -1559,16 +1562,16 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
} |
break; |
case XML_PI_NODE: |
- /* |
- * Processing Instruction (PI) Nodes- |
- * The opening PI symbol (<?), the PI target name of the node, |
- * a leading space and the string value if it is not empty, and |
- * the closing PI symbol (?>). If the string value is empty, |
- * then the leading space is not added. Also, a trailing #xA is |
- * rendered after the closing PI symbol for PI children of the |
- * root node with a lesser document order than the document |
- * element, and a leading #xA is rendered before the opening PI |
- * symbol of PI children of the root node with a greater document |
+ /* |
+ * Processing Instruction (PI) Nodes- |
+ * The opening PI symbol (<?), the PI target name of the node, |
+ * a leading space and the string value if it is not empty, and |
+ * the closing PI symbol (?>). If the string value is empty, |
+ * then the leading space is not added. Also, a trailing #xA is |
+ * rendered after the closing PI symbol for PI children of the |
+ * root node with a lesser document order than the document |
+ * element, and a leading #xA is rendered before the opening PI |
+ * symbol of PI children of the root node with a greater document |
* order than the document element. |
*/ |
if (visible) { |
@@ -1607,17 +1610,17 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
case XML_COMMENT_NODE: |
/* |
* Comment Nodes |
- * Nothing if generating canonical XML without comments. For |
- * canonical XML with comments, generate the opening comment |
- * symbol (<!--), the string value of the node, and the |
- * closing comment symbol (-->). Also, a trailing #xA is rendered |
- * after the closing comment symbol for comment children of the |
- * root node with a lesser document order than the document |
- * element, and a leading #xA is rendered before the opening |
- * comment symbol of comment children of the root node with a |
- * greater document order than the document element. (Comment |
- * children of the root node represent comments outside of the |
- * top-level document element and outside of the document type |
+ * Nothing if generating canonical XML without comments. For |
+ * canonical XML with comments, generate the opening comment |
+ * symbol (<!--), the string value of the node, and the |
+ * closing comment symbol (-->). Also, a trailing #xA is rendered |
+ * after the closing comment symbol for comment children of the |
+ * root node with a lesser document order than the document |
+ * element, and a leading #xA is rendered before the opening |
+ * comment symbol of comment children of the root node with a |
+ * greater document order than the document element. (Comment |
+ * children of the root node represent comments outside of the |
+ * top-level document element and outside of the document type |
* declaration). |
*/ |
if (visible && ctx->with_comments) { |
@@ -1687,8 +1690,8 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
case XML_XINCLUDE_START: |
case XML_XINCLUDE_END: |
#endif |
- /* |
- * should be ignored according to "W3C Canonical XML" |
+ /* |
+ * should be ignored according to "W3C Canonical XML" |
*/ |
break; |
default: |
@@ -1701,9 +1704,9 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
/** |
* xmlC14NProcessNodeList: |
- * @ctx: the pointer to C14N context object |
+ * @ctx: the pointer to C14N context object |
* @cur: the node to start from |
- * |
+ * |
* Processes all nodes in the row starting from cur. |
* |
* Returns non-negative value on success or negative value on fail |
@@ -1728,7 +1731,7 @@ xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur) |
/** |
* xmlC14NFreeCtx: |
* @ctx: the pointer to C14N context object |
- * |
+ * |
* Cleanups the C14N context object. |
*/ |
@@ -1748,27 +1751,27 @@ xmlC14NFreeCtx(xmlC14NCtxPtr ctx) |
/** |
* xmlC14NNewCtx: |
- * @doc: the XML document for canonization |
- * @is_visible_callback:the function to use to determine is node visible |
+ * @doc: the XML document for canonization |
+ * @is_visible_callback:the function to use to determine is node visible |
* or not |
- * @user_data: the first parameter for @is_visible_callback function |
+ * @user_data: the first parameter for @is_visible_callback function |
* (in most cases, it is nodes set) |
* @mode: the c14n mode (see @xmlC14NMode) |
- * @inclusive_ns_prefixe the list of inclusive namespace prefixes |
+ * @inclusive_ns_prefixe the list of inclusive namespace prefixes |
* ended with a NULL or NULL if there is no |
- * inclusive namespaces (only for ` |
+ * inclusive namespaces (only for ` |
* canonicalization) |
- * @with_comments: include comments in the result (!=0) or not (==0) |
- * @buf: the output buffer to store canonical XML; this |
+ * @with_comments: include comments in the result (!=0) or not (==0) |
+ * @buf: the output buffer to store canonical XML; this |
* buffer MUST have encoder==NULL because C14N requires |
* UTF-8 output |
- * |
+ * |
* Creates new C14N context object to store C14N parameters. |
* |
* Returns pointer to newly created object (success) or NULL (fail) |
*/ |
static xmlC14NCtxPtr |
-xmlC14NNewCtx(xmlDocPtr doc, |
+xmlC14NNewCtx(xmlDocPtr doc, |
xmlC14NIsVisibleCallback is_visible_callback, void* user_data, |
xmlC14NMode mode, xmlChar ** inclusive_ns_prefixes, |
int with_comments, xmlOutputBufferPtr buf) |
@@ -1840,28 +1843,28 @@ xmlC14NNewCtx(xmlDocPtr doc, |
/** |
* xmlC14NExecute: |
- * @doc: the XML document for canonization |
- * @is_visible_callback:the function to use to determine is node visible |
+ * @doc: the XML document for canonization |
+ * @is_visible_callback:the function to use to determine is node visible |
* or not |
- * @user_data: the first parameter for @is_visible_callback function |
+ * @user_data: the first parameter for @is_visible_callback function |
* (in most cases, it is nodes set) |
* @mode: the c14n mode (see @xmlC14NMode) |
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
* ended with a NULL or NULL if there is no |
- * inclusive namespaces (only for exclusive |
+ * inclusive namespaces (only for exclusive |
* canonicalization, ignored otherwise) |
- * @with_comments: include comments in the result (!=0) or not (==0) |
- * @buf: the output buffer to store canonical XML; this |
+ * @with_comments: include comments in the result (!=0) or not (==0) |
+ * @buf: the output buffer to store canonical XML; this |
* buffer MUST have encoder==NULL because C14N requires |
* UTF-8 output |
- * |
+ * |
* Dumps the canonized image of given XML document into the provided buffer. |
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or |
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) |
* |
- * Returns non-negative value on success or a negative value on fail |
+ * Returns non-negative value on success or a negative value on fail |
*/ |
-int |
+int |
xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, |
void* user_data, int mode, xmlChar **inclusive_ns_prefixes, |
int with_comments, xmlOutputBufferPtr buf) { |
@@ -1875,15 +1878,15 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, |
return (-1); |
} |
- /* for backward compatibility, we have to have "mode" as "int" |
+ /* for backward compatibility, we have to have "mode" as "int" |
and here we check that user gives valid value */ |
switch(mode) { |
case XML_C14N_1_0: |
case XML_C14N_EXCLUSIVE_1_0: |
- case XML_C14N_1_1: |
+ case XML_C14N_1_1: |
c14n_mode = (xmlC14NMode)mode; |
break; |
- default: |
+ default: |
xmlC14NErrParam("invalid mode for executing c14n"); |
return (-1); |
} |
@@ -1897,7 +1900,7 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, |
return (-1); |
} |
- ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, |
+ ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, |
c14n_mode, inclusive_ns_prefixes, |
with_comments, buf); |
if (ctx == NULL) { |
@@ -1908,12 +1911,12 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, |
- /* |
+ /* |
* Root Node |
- * The root node is the parent of the top-level document element. The |
- * result of processing each of its child nodes that is in the node-set |
- * in document order. The root node does not generate a byte order mark, |
- * XML declaration, nor anything from within the document type |
+ * The root node is the parent of the top-level document element. The |
+ * result of processing each of its child nodes that is in the node-set |
+ * in document order. The root node does not generate a byte order mark, |
+ * XML declaration, nor anything from within the document type |
* declaration. |
*/ |
if (doc->children != NULL) { |
@@ -1935,7 +1938,7 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, |
return (-1); |
} |
- /* |
+ /* |
* Cleanup |
*/ |
xmlC14NFreeCtx(ctx); |
@@ -1944,30 +1947,30 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, |
/** |
* xmlC14NDocSaveTo: |
- * @doc: the XML document for canonization |
- * @nodes: the nodes set to be included in the canonized image |
- * or NULL if all document nodes should be included |
+ * @doc: the XML document for canonization |
+ * @nodes: the nodes set to be included in the canonized image |
+ * or NULL if all document nodes should be included |
* @mode: the c14n mode (see @xmlC14NMode) |
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
* ended with a NULL or NULL if there is no |
- * inclusive namespaces (only for exclusive |
+ * inclusive namespaces (only for exclusive |
* canonicalization, ignored otherwise) |
- * @with_comments: include comments in the result (!=0) or not (==0) |
- * @buf: the output buffer to store canonical XML; this |
+ * @with_comments: include comments in the result (!=0) or not (==0) |
+ * @buf: the output buffer to store canonical XML; this |
* buffer MUST have encoder==NULL because C14N requires |
* UTF-8 output |
- * |
+ * |
* Dumps the canonized image of given XML document into the provided buffer. |
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or |
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) |
* |
- * Returns non-negative value on success or a negative value on fail |
+ * Returns non-negative value on success or a negative value on fail |
*/ |
int |
xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes, |
int mode, xmlChar ** inclusive_ns_prefixes, |
int with_comments, xmlOutputBufferPtr buf) { |
- return(xmlC14NExecute(doc, |
+ return(xmlC14NExecute(doc, |
(xmlC14NIsVisibleCallback)xmlC14NIsNodeInNodeset, |
nodes, |
mode, |
@@ -1979,24 +1982,24 @@ xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes, |
/** |
* xmlC14NDocDumpMemory: |
- * @doc: the XML document for canonization |
- * @nodes: the nodes set to be included in the canonized image |
- * or NULL if all document nodes should be included |
+ * @doc: the XML document for canonization |
+ * @nodes: the nodes set to be included in the canonized image |
+ * or NULL if all document nodes should be included |
* @mode: the c14n mode (see @xmlC14NMode) |
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
* ended with a NULL or NULL if there is no |
- * inclusive namespaces (only for exclusive |
+ * inclusive namespaces (only for exclusive |
* canonicalization, ignored otherwise) |
- * @with_comments: include comments in the result (!=0) or not (==0) |
- * @doc_txt_ptr: the memory pointer for allocated canonical XML text; |
+ * @with_comments: include comments in the result (!=0) or not (==0) |
+ * @doc_txt_ptr: the memory pointer for allocated canonical XML text; |
* the caller of this functions is responsible for calling |
- * xmlFree() to free allocated memory |
- * |
+ * xmlFree() to free allocated memory |
+ * |
* Dumps the canonized image of given XML document into memory. |
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or |
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) |
* |
- * Returns the number of bytes written on success or a negative value on fail |
+ * Returns the number of bytes written on success or a negative value on fail |
*/ |
int |
xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, |
@@ -2014,7 +2017,7 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, |
*doc_txt_ptr = NULL; |
/* |
- * create memory buffer with UTF8 (default) encoding |
+ * create memory buffer with UTF8 (default) encoding |
*/ |
buf = xmlAllocOutputBuffer(NULL); |
if (buf == NULL) { |
@@ -2033,9 +2036,9 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, |
return (-1); |
} |
- ret = buf->buffer->use; |
+ ret = xmlBufUse(buf->buffer); |
if (ret > 0) { |
- *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret); |
+ *doc_txt_ptr = xmlStrndup(xmlBufContent(buf->buffer), ret); |
} |
(void) xmlOutputBufferClose(buf); |
@@ -2048,26 +2051,26 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, |
/** |
* xmlC14NDocSave: |
- * @doc: the XML document for canonization |
- * @nodes: the nodes set to be included in the canonized image |
- * or NULL if all document nodes should be included |
+ * @doc: the XML document for canonization |
+ * @nodes: the nodes set to be included in the canonized image |
+ * or NULL if all document nodes should be included |
* @mode: the c14n mode (see @xmlC14NMode) |
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes |
* ended with a NULL or NULL if there is no |
- * inclusive namespaces (only for exclusive |
+ * inclusive namespaces (only for exclusive |
* canonicalization, ignored otherwise) |
- * @with_comments: include comments in the result (!=0) or not (==0) |
- * @filename: the filename to store canonical XML image |
- * @compression: the compression level (zlib requred): |
+ * @with_comments: include comments in the result (!=0) or not (==0) |
+ * @filename: the filename to store canonical XML image |
+ * @compression: the compression level (zlib requred): |
* -1 - libxml default, |
- * 0 - uncompressed, |
+ * 0 - uncompressed, |
* >0 - compression level |
- * |
+ * |
* Dumps the canonized image of given XML document into the file. |
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or |
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) |
* |
- * Returns the number of bytes written success or a negative value on fail |
+ * Returns the number of bytes written success or a negative value on fail |
*/ |
int |
xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, |
@@ -2086,7 +2089,7 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, |
compression = xmlGetCompressMode(); |
#endif |
- /* |
+ /* |
* save the content to a temp buffer, use default UTF8 encoding. |
*/ |
buf = xmlOutputBufferCreateFilename(filename, NULL, compression); |
@@ -2106,8 +2109,8 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, |
return (-1); |
} |
- /* |
- * get the numbers of bytes written |
+ /* |
+ * get the numbers of bytes written |
*/ |
ret = xmlOutputBufferClose(buf); |
return (ret); |
@@ -2121,14 +2124,14 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, |
#define growBufferReentrant() { \ |
buffer_size *= 2; \ |
buffer = (xmlChar *) \ |
- xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ |
+ xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ |
if (buffer == NULL) { \ |
xmlC14NErrMemory("growing buffer"); \ |
return(NULL); \ |
} \ |
} |
-/** |
+/** |
* xmlC11NNormalizeString: |
* @input: the input string |
* @mode: the normalization mode (attribute, comment, PI or text) |