Я использую XQuery для передачи множества XML-файлов и извлечения индексированных терминов и преобразования их в операторы вставки SQL. Это очень просто:XQuery для генерации отчета DROP TABLE IF EXISTS + INSERT INTO
xquery version "3.0";
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method "text";
for $index in collection(/db/letters/)//index/text()
return
concat("INSERT INTO `indices` SET index='", $index, "';")
Это порождает такие заявления:
INSERT INTO `indices` SET index='foo';
INSERT INTO `indices` SET index='bar';
, который все хорошо и денди. Но я хотел бы вывести текст раз перед тем и один раз после всех этих заявлений, а именно, во-первых:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `indices`
-- ----------------------------
DROP TABLE IF EXISTS `indices`;
CREATE TABLE `indices` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`norm` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT;
и, в конце концов,
SET FOREIGN_KEY_CHECKS = 1;"
В PHP это будет но в XQuery это намного сложнее, особенно для таких не продвинутых пользователей, как я.
Выражения FLOWR кажутся очень легкими и логичными при выводе XML, но я не могу понять, как выполнить кумулятивный возврат с двумя другими строками.
Любые указатели будут тепло оценены.
совершенный. большое спасибо, Дэвид! – Tench