public void handleXML(OperationContext context, Node root, XPath xpath)
throws Exception {
// initialize
LOGGER.finer("Handling csw:DescribeRecord request XML...");
DescribeRecordOptions drOptions = context.getRequestOptions().getDescribeRecordOptions();
ServiceProperties svcProps = context.getServiceProperties();
ParseHelper pHelper = new ParseHelper();
ValidationHelper vHelper = new ValidationHelper();
String locator;
String[] parsed;
ISupportedValues supported;
// service and version are parsed by the parent RequestHandler
// output format
locator = "@outputFormat";
parsed = pHelper.getParameterValues(root,xpath,locator);
supported = svcProps.getSupportedValues(CswConstants.Parameter_OutputFormat);
context.getOperationResponse().setOutputFormat(
vHelper.validateValue(supported,locator,parsed,false));
// schema language
locator = "@schemaLanguage";
parsed = pHelper.getParameterValues(root,xpath,locator);
supported = svcProps.getSupportedValues(CswConstants.Parameter_SchemaLanguage);
drOptions.setSchemaLanguage(vHelper.validateValue(supported,locator,parsed,false));
// type names
locator = "csw:TypeName";
parsed = pHelper.getParameterValues(root,xpath,locator);
drOptions.setTypeNames(vHelper.validateValues(locator,parsed,false));
// execute
this.execute(context);
}