+ md = &(service->metadata[i]);
+ wrbuf_puts(w, " <metadata");
+ if (md->name) {
+ wrbuf_puts(w, " name=\"");
+ wrbuf_xmlputs(w, md->name);
+ wrbuf_puts(w, "\"");
+ }
+ if (md->brief) {
+ wrbuf_puts(w, " brief=\"yes\"");
+ }
+ if (md->termlist) {
+ wrbuf_puts(w, " termlist=\"yes\"");
+ }
+ if (md->rank) {
+ wrbuf_puts(w, " rank=\"");
+ wrbuf_xmlputs(w, md->rank);
+ wrbuf_puts(w, "\"");
+ }
+ if (md->sortkey_offset > 0) {
+ wrbuf_puts(w, " sortkey=\"");
+ switch (service->sortkeys[md->sortkey_offset].type) {
+ case Metadata_sortkey_relevance:
+ wrbuf_puts(w, "relevance");
+ break;
+ case Metadata_sortkey_relevance_h:
+ wrbuf_puts(w, "relevance_h");
+ break;
+ case Metadata_sortkey_numeric:
+ wrbuf_puts(w, "numeric");
+ break;
+ case Metadata_sortkey_skiparticle:
+ wrbuf_puts(w, "skiparticle");
+ break;
+ case Metadata_sortkey_string:
+ wrbuf_puts(w, "string");
+ break;
+ case Metadata_sortkey_position:
+ wrbuf_puts(w, "position");
+ break;
+ }
+ wrbuf_puts(w, "\"");
+ }
+
+ switch (md->type) {
+ case Metadata_type_generic:
+ break;
+ case Metadata_type_year:
+ wrbuf_puts(w, " type=\"year\"");
+ break;
+ case Metadata_type_date:
+ wrbuf_puts(w, " type=\"date\"");
+ break;
+ }
+
+ switch (md->merge) {
+ case Metadata_merge_no:
+ break;
+ case Metadata_merge_unique:
+ wrbuf_puts(w, " merge=\"unique\"");
+ break;
+ case Metadata_merge_longest:
+ wrbuf_puts(w, " merge=\"longest\"");
+ break;
+ case Metadata_merge_range:
+ wrbuf_puts(w, " merge=\"range\"");
+ break;
+ case Metadata_merge_all:
+ wrbuf_puts(w, " merge=\"all\"");
+ break;
+ case Metadata_merge_first:
+ wrbuf_puts(w, " merge=\"first\"");
+ break;
+ }
+
+ switch (md->mergekey) {
+ case Metadata_mergekey_no:
+ break;
+ case Metadata_mergekey_optional:
+ wrbuf_puts(w, " mergekey=\"optional\"");
+ break;
+ case Metadata_mergekey_required:
+ wrbuf_puts(w, " mergekey=\"required\"");
+ break;
+ }
+ wrbuf_puts(w, " />\n");