Genivia Home Documentation
XML namespace tables

updated Tue Nov 23 2021 by Robert van Engelen
 
XML namespace tables

This module defines the Namespace XML namespace structure and function to activate a table. More...

Classes

struct  Namespace
 Structure of each row in a namespace table. More...
 

Functions

int soap_set_namespaces (struct soap *soap, const struct Namespace *namespaces)
 Activates an XML namespace table to generate and resolve xmlns namespace prefixes in XML messages. More...
 

Variables

struct Namespace namespaces []
 The global XML namespaces table with entries defined by the Namespace structure and populated in an .nsmap file generated by soapcpp2. More...
 

Detailed Description

This module defines the Namespace XML namespace structure and function to activate a table.

Function Documentation

◆ soap_set_namespaces()

int soap_set_namespaces ( struct soap soap,
const struct Namespace namespaces 
)

Activates an XML namespace table to generate and resolve xmlns namespace prefixes in XML messages.

This function sets the XML namespace table to be used by the engine to generate and resolve xmlns namespace prefixes in XML messages. Different tables can be set at any time, depending on the XML messaging requirements. However, XML generation and parsing may fail if prefix-URI bindings are missing in the table. Tables are generated by soapcpp2 in .nsmap files, which defines a global table namespaces that is used by default by the engines, but can be replaced by the XML namespace table specified with this function. Returns #SOAP_OK or a soap_status error code.

Example:
#include "soapH.h"
struct Namespace my_namespaces[] = {
{ "SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*soap-envelope", NULL },
{ "SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*soap-encoding", NULL },
{ "xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*XMLSchema-instance", NULL },
{ "xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*XMLSchema", NULL },
{ "ns", "http://tempuri.org/ns.xsd", NULL, NULL },
{ NULL, NULL, NULL, NULL }
};
struct soap *soap = soap_new();
soap_set_namespaces(soap, my_namespaces); // use a specific XML namespace binding table for the next call
if (soap_call_ns__webmethod(soap, endpoint, NULL, ...))
{
}
else
{
...
}
soap_set_namespaces(soap, namespaces); // use the default XML namespace binding table, when defined, for the next call
struct soap * soap_new()
Allocate and initialize a new soap context.
void soap_print_fault(struct soap *soap, FILE *fd)
Print error message on the specified output.
int soap_set_namespaces(struct soap *soap, const struct Namespace *namespaces)
Activates an XML namespace table to generate and resolve xmlns namespace prefixes in XML messages.
struct Namespace namespaces[]
The global XML namespaces table with entries defined by the Namespace structure and populated in an ....
Definition: stdsoap2.h:9320
Structure of each row in a namespace table.
Definition: stdsoap2.h:9305
Context with the engine state.
Definition: stdsoap2.h:2851
char endpoint[SOAP_TAGLEN]
The endpoint URL as received on the server side.
Definition: stdsoap2.h:4065

This example defines SOAP 1.1 namespaces (SOAP-ENV and SOAP-ENC) to be used by default, but also accepts SOAP 1.2 because of the second URI in the third column. XML schema instance namespace xsi is used with xsi:type and xsi:nil and the XML schema namespace xsd is used with XSD types such as xsd:string, which may be used in XML messages. URI patterns in the third column may contain wildcard strings * and wildcard characters -.

Returns
#SOAP_OK or a soap_status error code
Parameters
soap`soap` context
namespacesthe XML namespace table to activate

Variable Documentation

◆ namespaces

struct Namespace namespaces[]

The global XML namespaces table with entries defined by the Namespace structure and populated in an .nsmap file generated by soapcpp2.

This XML namespaces table defines XML namespace prefix-URI pairs for XML generation, parsing and validation. The last row in the table must be followed by a row with a NULL value to indicate the end of the table. The requirement to link this global table can be removed at compile time with #WITH_NONAMESPACES.