- ptr = xmlNewChild(record_ptr, ns_record, BAD_CAST "datafield", 0);
- xmlNewProp(ptr, BAD_CAST "tag", BAD_CAST n->u.datafield.tag);
- if (n->u.datafield.indicator)
- {
- int i;
- for (i = 0; n->u.datafield.indicator[i]; i++)
- {
- char ind_str[6];
- char ind_val[2];
-
- sprintf(ind_str, "ind%d", i+1);
- ind_val[0] = n->u.datafield.indicator[i];
- ind_val[1] = '\0';
- xmlNewProp(ptr, BAD_CAST ind_str, BAD_CAST ind_val);
- }
- }
- for (s = n->u.datafield.subfields; s; s = s->next)
- {
- xmlNode *ptr_subfield;
- size_t using_code_len = get_subfield_len(mt, s->code_data,
- identifier_length);
- wrbuf_rewind(wr_cdata);
- wrbuf_iconv_puts(wr_cdata, mt->iconv_cd,
- s->code_data + using_code_len);
- marc_iconv_reset(mt, wr_cdata);
- ptr_subfield = xmlNewTextChild(
- ptr, ns_record,
- BAD_CAST "subfield", BAD_CAST wrbuf_cstr(wr_cdata));
-
- wrbuf_rewind(wr_cdata);
- wrbuf_iconv_write(wr_cdata, mt->iconv_cd,
- s->code_data, using_code_len);
- xmlNewProp(ptr_subfield, BAD_CAST "code",
- BAD_CAST wrbuf_cstr(wr_cdata));
- }