/***********************************************************************
*
*  module   : Marc
*  fichier  : MarcXmlFromIso2709.c
*  Auteur   : Jacques DUCLOY
*  Date     : Juillet 93
*
************************************************************************/

#include "SxmlNode.h"

SxmlNode *isoRecord;
SxmlNode *marcRecord;

int main ()
{
  while ((isoRecord=SxmlInputNextDocumentElement()))
    {
      char *header;
      SxmlNode *isoField;
      marcRecord=SxmlElementCreate("record");
      if ((header=SxmlGetAttribute(isoRecord, "header")))
	SxmlAppendChild(marcRecord, SxmlLeafCreate("leader", header));
      SxmlReset(isoRecord);
      while ((isoField=SxmlNextNode(isoRecord)))
	{
	  char *isoFieldTag;
	  SxmlNode *marcField;
	  isoFieldTag=SxmlNodeName(isoField);
	  if(isoFieldTag[1]=='0')
	    {
	      SxmlAppendChild(marcRecord, marcField=SxmlLeafCreate("controlfield", SxmlLeafText(isoField)));
	      SxmlSetAttribute(marcField, "tag", isoFieldTag+1);
	    }
	  else
	    {
	      SxmlNode *isoSubField;
	      SxmlAppendChild(marcRecord, marcField=SxmlElementCreate("datafield"));
	      SxmlSetAttribute(marcField, "tag", isoFieldTag+1);
	      SxmlReset(isoField);
	      while ((isoSubField=SxmlNextNode(isoField)))
		{
		  SxmlNode *marcSubField;
		  SxmlAppendChild(marcField, marcSubField=SxmlLeafCreate("subfield", SxmlLeafText(isoSubField)));
		  SxmlSetAttribute(marcSubField, "code", SxmlNodeName(isoSubField)+1);
		}
	    }
	  
	}
      SxmlPrint( marcRecord);
      putchar('\n');
      SxmlFree( marcRecord);
    }
   exit (EXIT_SUCCESS);
}
