У меня есть следующая вспомогательная функция для преобразования XML через XSLT:
- (NSXMLDocument *)transform:(NSString *)xml :(NSString *)xslt
{
NSError *xmlDocErr = nil;
NSXMLDocument *transformedXmlDoc = nil;
NSXMLDocument *xmlDoc = [[NSXMLDocument alloc]
initWithXMLString:xml
options:NSXMLDocumentValidate
error:&xmlDocErr];
if (xmlDocErr) {
NSLog(@"Error: %@", [xmlDocErr localizedDescription]);
}
else {
transformedXmlDoc = [xmlDoc objectByApplyingXSLTString:xslt
arguments:nil
error:&xmlDocErr];
if (xmlDocErr) {
NSLog(@"Error: %@", [xmlDocErr localizedDescription]);
}
}
return transformedXmlDoc;
}
Он работает, как и ожидалось, но есть небольшая особенность, с которой мне не помешала бы помощь.
Когда я пытаюсь использовать XSLT-функцию, неизвестную NSXMLDocument (скажем, EXSLT в node-set()
), я получаю вывод в Xcode, аналогичный приведенному ниже - первая строка, в частности интересует:
xmlXPathCompOpEval: набор узлов функции не найден
Ошибка XPath: незарегистрированная среда выполнения функции
ошибка: элемент для каждого
Не удалось оценить выражение "выбрать".
Это классно; это именно то, что я ожидал.
Однако мне интересно то, что вывод нигде не содержит "Error: "
(что должно быть в том случае, если этот вывод был захвачен моими вызовами [xmlDocErr localizedDescription]
).
Итак, вот вопрос: как я могу получить приведенный выше вывод (чтобы я мог использовать его для отображения соответствующих сообщений моему пользователю)?
Большое спасибо!