return_xml_desc3 - return long description of a xml file
new_tt = return_xml_desc3(fname)
- fname : string. source XML file (path+name)
- new_tt : list
- list_txt() : integer. id of paragraph
- list_txt()(1) : integer. indentation level
- list_txt()(2) : string. title of paragraph
- list_txt()(3) : vector of strings. text of description paragraph
//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
IRCOM Group
Alan Layec