- if (debug)
- wrbuf_puts (wr, " Fields: ");
- while (buf[i] != ISO2709_RS && buf[i] != ISO2709_FS && i < end_offset)
- {
- if (memcmp (tag, "00", 2) && identifier_length)
- {
- i++;
- wrbuf_puts (wr, " $");
- for (j = 1; j<identifier_length; j++, i++)
- wrbuf_putc (wr, buf[i]);
- wrbuf_putc (wr, ' ');
- while (buf[i] != ISO2709_RS && buf[i] != ISO2709_IDFS &&
- buf[i] != ISO2709_FS && i < end_offset)
- {
- wrbuf_putc (wr, buf[i]);
- i++;
- }
- }
- else
- {
- wrbuf_putc (wr, buf[i]);
- i++;
- }
+ if (mt->xml)
+ {
+ wrbuf_puts (wr, ">");
+ if (identifier_flag)
+ wrbuf_puts (wr, "\n");
+ }
+ else
+ {
+ if (mt->debug && !mt->xml)
+ wrbuf_puts (wr, " Fields: ");
+ }
+ if (identifier_flag)
+ {
+ while (buf[i] != ISO2709_RS && buf[i] != ISO2709_FS && i < end_offset)
+ {
+ int i0;
+ i++;
+ switch(mt->xml)
+ {
+ case YAZ_MARC_LINE:
+ wrbuf_puts (wr, " $");
+ for (j = 1; j<identifier_length; j++, i++)
+ wrbuf_putc (wr, buf[i]);
+ wrbuf_putc (wr, ' ');
+ break;
+ case YAZ_MARC_SIMPLEXML:
+ wrbuf_puts (wr, " <subfield code=\"");
+ for (j = 1; j<identifier_length; j++, i++)
+ wrbuf_putc (wr, buf[i]);
+ wrbuf_puts (wr, "\">");
+ break;
+ case YAZ_MARC_OAIMARC:
+ wrbuf_puts (wr, " <subfield label=\"");
+ for (j = 1; j<identifier_length; j++, i++)
+ wrbuf_putc (wr, buf[i]);
+ wrbuf_puts (wr, "\">");
+ break;
+ case YAZ_MARC_MARCXML:
+ wrbuf_puts (wr, " <subfield code=\"");
+ for (j = 1; j<identifier_length; j++, i++)
+ wrbuf_putc (wr, buf[i]);
+ wrbuf_puts (wr, "\">");
+ break;
+ }
+ i0 = i;
+ while (buf[i] != ISO2709_RS && buf[i] != ISO2709_IDFS &&
+ buf[i] != ISO2709_FS && i < end_offset)
+ i++;
+ marc_cdata(mt, buf + i0, i - i0, wr);
+
+ if (mt->xml)
+ wrbuf_puts (wr, "</subfield>\n");
+ }
+ }
+ else
+ {
+ int i0 = i;
+ while (buf[i] != ISO2709_RS && buf[i] != ISO2709_FS && i < end_offset)
+ i++;
+ marc_cdata(mt, buf + i0, i - i0, wr);