Fonction Scilab
eng - fr


return_xml_desc3 - retourne la description longue d'un fichier xml

Librairie

Séquence d'appel

new_tt = return_xml_desc3(fname)

Paramètres

Description

Add here a paragraph of the function description. Other paragraph can be added

Add here a paragraph of the function description

Exemple

Add here scilab instructions and comments

Contenu du fichier


//return_xml_desc3
//fonction qui retourne le texte placé entre
//les deux premiers drapeaux <DESCRIPTION>
//et </DESCRIPTION> trouvés dans le fichier fname
//compatilble avec help_skeleton
//ex : new_tt=return_xml_desc3(SCI+'/man/eng/nonlinear/intc.xml')
//Entrée fname : chemin+nom du fichier xml
//Sortie new_tt()() : une liste 
//             | |
//             | |
//             | |---->  1 : profondeur d'indentation
//             |         2 : le titre du paragraphe
//             |         3 : le texte du paragraphe
//             |---> n° du paragraphe
function new_tt=return_xml_desc3(fname)
 if fileinfo(fname)<>[] then
   txt_temp=mgetl(fname)
   //txt=[]
   if txt_temp<>[] then
   nb_indent=1
   nb_para=1
   n=1
   for i=1:size(txt_temp,'*')
      if strindex(txt_temp(i),'<DESCRIPTION>')<>[] then a=i,
      elseif strindex(txt_temp(i),'</DESCRIPTION>')<>[] then b=i,
      elseif strindex(txt_temp(i),'<DESCRIPTION_INDENT>')<>[] then
       nb_indent=nb_indent+1;
       nb_para=nb_para+1
      elseif strindex(txt_temp(i),'<DESCRIPTION_ITEM')<>[] then
       nb_para=nb_para+1
      elseif strindex(txt_temp(i),'</DESCRIPTION_ITEM')<>[] then
       nb_para=nb_para+1
      elseif strindex(txt_temp(i),'</DESCRIPTION_INDENT>')<>[] then
       nb_para=nb_para+1
       nb_indent=nb_indent-1
      end
      if nb_indent>n then n=nb_indent, end;
   end
 
   //initialisation de la liste de sortie
   tt=list()
   for i=1:nb_para
    tt(i)=list()
    tt(i)(1)=1   //profondeur d'indentation
    tt(i)(2)=""  //le nom du paragraphe
    tt(i)(3)=""  //texte du paragraphe
   end
 
   //remplissage de la liste
   nb_indent=1
   nb_para=1
   for i=a:b
     if strindex(txt_temp(i),'<DESCRIPTION_INDENT>')<>[] then
      nb_indent=nb_indent+1;
      nb_para=nb_para+1
      tt(nb_para)(1)=nb_indent;
      tt(nb_para)(3)=[tt(nb_para)(3);txt_temp(i)];
     elseif strindex(txt_temp(i),'</DESCRIPTION_INDENT>')<>[] then
      tt(nb_para)(1)=nb_indent;
      tt(nb_para)(3)=[tt(nb_para)(3);txt_temp(i)];
      nb_indent=nb_indent-1
      nb_para=nb_para+1
     elseif strindex(txt_temp(i),'<DESCRIPTION_ITEM')<>[] then
       nb_para=nb_para+1
       tt(nb_para)(1)=nb_indent;
       if strindex(txt_temp(i),'<DESCRIPTION_ITEM label')<>[] then
        tt(nb_para)(2)=txt_temp(i);
       else
        tt(nb_para)(3)=[tt(nb_para)(3);txt_temp(i)];
       end
     elseif strindex(txt_temp(i),'</DESCRIPTION_ITEM')<>[] then
       tt(nb_para)(1)=nb_indent;
       tt(nb_para)(3)=[tt(nb_para)(3);txt_temp(i)];
       nb_para=nb_para+1
     else
       tt(nb_para)(1)=nb_indent;
       tt(nb_para)(3)=[tt(nb_para)(3);txt_temp(i)];
     end
   end
 
   //nettoyage de la liste
   for i=1:nb_para
    tt(i)(3)=strsubst(tt(i)(3),'<DESCRIPTION>',"");
    tt(i)(3)=strsubst(tt(i)(3),'</DESCRIPTION>',"");
    tt(i)(3)=strsubst(tt(i)(3),'<DESCRIPTION_INDENT>',"");
    tt(i)(3)=strsubst(tt(i)(3),'</DESCRIPTION_INDENT>',"");
    tt(i)(3)=strsubst(tt(i)(3),'<DESCRIPTION_ITEM>',"");
    tt(i)(3)=strsubst(tt(i)(3),'</DESCRIPTION_ITEM>',"");
    tt(i)(3)=strsubst(tt(i)(3),'<P>',"");
    tt(i)(3)=strsubst(tt(i)(3),'</P>',"");
    tt(i)(3)=strsubst(tt(i)(3),'<P>',"");
    tt(i)(3)=strsubst(tt(i)(3),'<SP>',"");
    tt(i)(3)=strsubst(tt(i)(3),'</SP>',"");
    tt(i)(2)=strsubst(tt(i)(2),'<DESCRIPTION_ITEM label=""',"");
    tt(i)(2)=strsubst(tt(i)(2),'"">',"");
    tt(i)(3)=retrieve_char(tt(i)(3));
    tt(i)(2)=retrieve_char(tt(i)(2));
   end
 
   //Enlève les blancs du début
   for i=1:nb_para
    tt(i)(3)=stripblanks_begin(tt(i)(3));
    tt(i)(2)=stripblanks_begin(tt(i)(2));
   end
 
   //Nettoie les lignes vides
   for i=1:nb_para
    tt_txt=[]
    k=1;
    for j=1:size(tt(i)(3),1)
      if length(tt(i)(3)(j))<>0 then
        tt_txt(k)=tt(i)(3)(j);
        k=k+1;
      end
    end
    tt(i)(3)=tt_txt;
   end
 
   //Enlève les paragraphe vide de la liste
   new_tt=list(list())
   k=1;
   for i=1:nb_para
    if tt(i)(3)<>[] then
     new_tt(k)=tt(i)
     k=k+1
    end
   end
   clear tt
   
   else
    new_tt=list();
    printf("File %s is empty\n",fname)
   end
   
 else
  new_tt=list();
  printf("File %s not found\n",fname)
 end
endfunction

Fonction(s) utilisée(s)

Add here the used function name and references

Auteurs

enter here the author name Add here the author references