| 436 | */ |
| 437 | |
| 438 | xmlNodePtr msOWSCommonExceptionReport(xmlNsPtr psNsOws, int ows_version, const char *schemas_location, const char *version, const char *language, const char *exceptionCode, const char *locator, const char *ExceptionText) { |
| 439 | char *xsi_schemaLocation = NULL; |
| 440 | char szVersionBuf[OWS_VERSION_MAXLEN]; |
| 441 | |
| 442 | xmlNsPtr psNsXsi = NULL; |
| 443 | xmlNodePtr psRootNode = NULL; |
| 444 | xmlNodePtr psMainNode = NULL; |
| 445 | xmlNodePtr psNode = NULL; |
| 446 | |
| 447 | psRootNode = xmlNewNode(psNsOws, BAD_CAST "ExceptionReport"); |
| 448 | |
| 449 | psNsXsi = xmlNewNs(psRootNode, BAD_CAST MS_OWSCOMMON_W3C_XSI_NAMESPACE_URI, BAD_CAST MS_OWSCOMMON_W3C_XSI_NAMESPACE_PREFIX); |
| 450 | |
| 451 | /* add attributes to root element */ |
| 452 | xmlNewProp(psRootNode, BAD_CAST "version", BAD_CAST version); |
| 453 | |
| 454 | if (ows_version == OWS_1_0_0) { |
| 455 | xmlNewProp(psRootNode, BAD_CAST "language", BAD_CAST language); |
| 456 | } |
| 457 | if (ows_version == OWS_1_1_0) { |
| 458 | xmlNewProp(psRootNode, BAD_CAST "xml:lang", BAD_CAST language); |
| 459 | } |
| 460 | |
| 461 | xsi_schemaLocation = msStrdup((char *)psNsOws->href); |
| 462 | xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, " "); |
| 463 | xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, (char *)schemas_location); |
| 464 | xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, "/ows/"); |
| 465 | xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, (char *)msOWSGetVersionString(ows_version, szVersionBuf)); |
| 466 | xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, "/owsExceptionReport.xsd"); |
| 467 | |
| 468 | /* add namespace'd attributes to root element */ |
| 469 | xmlNewNsProp(psRootNode, psNsXsi, BAD_CAST "schemaLocation", BAD_CAST xsi_schemaLocation); |
| 470 | |
| 471 | /* add child element */ |
| 472 | psMainNode = xmlNewChild(psRootNode, NULL, BAD_CAST "Exception", NULL); |
| 473 | |
| 474 | /* add attributes to child */ |
| 475 | xmlNewProp(psMainNode, BAD_CAST "exceptionCode", BAD_CAST exceptionCode); |
| 476 | |
| 477 | if (locator != NULL) { |
| 478 | xmlNewProp(psMainNode, BAD_CAST "locator", BAD_CAST locator); |
| 479 | } |
| 480 | |
| 481 | if (ExceptionText != NULL) { |
| 482 | psNode = xmlNewChild(psMainNode, NULL, BAD_CAST "ExceptionText", BAD_CAST ExceptionText); |
| 483 | } |
| 484 | |
| 485 | free(xsi_schemaLocation); |
| 486 | return psRootNode; |
| 487 | } |
| 488 | |
| 489 | /** |
| 490 | * msOWSCommonBoundingBox() |
no test coverage detected