X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsoap.c;h=2d1910173e07abe2dc461665906e8709e8a69d9c;hb=5443d85bcd6ac9a3ca444586ab7a83c3ba85bc6b;hp=96a9ac1d0daeed7e4bf1ee5b46d2c39d2844c592;hpb=c82bbc07fb53f78aab88bb4121629daeef42ed2a;p=yaz-moved-to-github.git diff --git a/src/soap.c b/src/soap.c index 96a9ac1..2d19101 100644 --- a/src/soap.c +++ b/src/soap.c @@ -1,8 +1,8 @@ /* - * Copyright (c) 2002-2003, Index Data. + * Copyright (c) 2002-2004, Index Data. * See the file LICENSE for details. * - * $Id: soap.c,v 1.4 2004-01-05 09:34:42 adam Exp $ + * $Id: soap.c,v 1.6 2004-01-07 21:02:42 adam Exp $ */ #include @@ -14,10 +14,11 @@ static const char *soap_v1_1 = "http://schemas.xmlsoap.org/soap/envelope/"; static const char *soap_v1_2 = "http://www.w3.org/2001/06/soap-envelope"; -int z_soap_codec_enc(ODR o, Z_SOAP **pp, - char **content_buf, int *content_len, - Z_SOAP_Handler *handlers, - const char *encoding) +int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, + char **content_buf, int *content_len, + Z_SOAP_Handler *handlers, + const char *encoding, + const char *stylesheet) { if (o->direction == ODR_DECODE) { @@ -203,6 +204,15 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, { xmlDocSetRootElement(doc, body_ptr->children); } + if (stylesheet) + { + char *content = odr_malloc(o, strlen(stylesheet) + 40); + + xmlNodePtr pi, ptr = xmlDocGetRootElement(doc); + sprintf(content, "type=\"text/xsl\" href=\"%s\"", stylesheet); + pi = xmlNewPI("xml-stylesheet", content); + xmlAddPrevSibling(ptr, pi); + } if (1) { xmlChar *buf_out; @@ -222,9 +232,10 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, return 0; } #else -int z_soap_codec_enc(ODR o, Z_SOAP **pp, - char **content_buf, int *content_len, - Z_SOAP_Handler *handlers, const char *encoding) +int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, + char **content_buf, int *content_len, + Z_SOAP_Handler *handlers, const char *encoding, + const char *stylesheet) { static char *err_xml = "\n" @@ -246,6 +257,15 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, return -1; } #endif +int z_soap_codec_enc(ODR o, Z_SOAP **pp, + char **content_buf, int *content_len, + Z_SOAP_Handler *handlers, + const char *encoding) +{ + return z_soap_codec_enc_xsl(o, pp, content_buf, content_len, handlers, + encoding, 0); +} + int z_soap_codec(ODR o, Z_SOAP **pp, char **content_buf, int *content_len, Z_SOAP_Handler *handlers)