我正在使用 XQuery 来检查一堆 XML 文件并提取索引术语并将它们转换为 SQL 插入语句。这非常简单:
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 中要困难得多,尤其是对于像我这样的非高级用户。
输出 XML 时,FLOWR 表达式看起来非常简单且合乎逻辑,但我不知道如何将累积返回与其他两个字符串连接起来。
任何指针将不胜感激。