# # XML_node.objet # # This object is an XML node representation # # /- name (string) # xml_node --- attributes (array) # \- children (array) or value (string) class xml_node { public $name; public $attributes = array(); public $children = array(); public $value = ""; public function xml_node($name,$attributes,$children=array(),$value="") { $this->name = $name; if (is_array($attributes)) { $this->attributes = $attributes; } $this->children = $children; $this->value = $value; } } # # xml_tree class # # This object parses an XML stream and offers a tree composed by xml_nodes # class xml_tree { private $xml_stream; public $current_node; protected $root_node; private $index; private $value; public function xml_tree() { $this->root_node = new xml_node("__ROOT_NODE",array()); $this->current_node = $this->root_node; } public function add_tree($xml_stream) { # Managing the parser $this->xml_stream = $xml_stream; $xml_parser = xml_parser_create(); xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1); if (!xml_parse_into_struct($xml_parser,$this->xml_stream,$this->value,$this->index)) { xml_parser_free($xml_parser); die("XML Parse error"); } xml_parser_free($xml_parser); # Now, $this->value and $this->index are informed, we can use the get_node methode. $tab_result = $this->get_node(0,count($this->value) - 1); $this->root_node->children[] = $tab_result[0]; $this->current_node = $this->root_node; } protected function get_node($index_start,$index_stop) { #echo "
\n"; #echo "GET-NODE($index_start,$index_stop)
\n"; # What we are going to return is an array of xml_nodes $return_tab = array(); # depth is only here to check if everything is all right $tab_node = $this->value[$index_start]; $depth = $tab_node["level"]-1; # Now we have to be sure we do not forget a single node for ($index = $index_start;$index <= $index_stop;$index++) { #echo "\$index = $index
"; # get the current node $tab_node = $this->value[$index]; # what type of node is it ? switch($tab_node["type"]) { case "complete" : # Depth integrity check if ($tab_node["level"] != $depth+1) { die("ERREUR # contrainte d'intégrité au noeud complet $index, niveau $depth + 1 au lieu de ".$tab_node["level"]); } #echo "Noeud complet trouvé position $index TAG ".$tab_node["tag"]."
\n"; # Easy one, no children to manage, only a value... $return_tab[] = new xml_node($tab_node["tag"],$tab_node["attributes"],"",$tab_node["value"]); break; case "open" : # Depth integrity check if ($tab_node["level"] != $depth +1 ) { die("ERREUR # contrainte d'intégrité au noeud ouvert $index, niveau $depth au lieu de ".$tab_node["level"]); } # Open tag, we re-use this methode to return its children # Where is the correspondong close tag ? $node_index = $this->index[$tab_node["tag"]]; $flipped_node_index = array_flip($node_index); #echo "This ".$tab_node["tag"]." is at coords ".$flipped_node_index[$index]."
"; $i=1; do { $next_index = $node_index[$flipped_node_index[$index] + $i++]; $next_tag=$this->value[$next_index]; } while ($next_tag["level"]!=$tab_node["level"]); #echo "Ouverture de noeud détectée pos $index TAG ".$tab_node["tag"]."
\n   Parcours jusqu au $next_index
\n"; # good, we can now instanciate our node $return_tab[] = new xml_node($tab_node["tag"],$tab_node["attributes"],$this->get_node($index+1,$next_index),""); # As we called the get_node methode, we are sure that nodes have been parsed to the corresponding close tag $index = $next_index; break; case "close" : # Depth integrity check if ($tab_node["level"] != $depth ){ die("ERREUR # contrainte d'intégrité au noeud fermé $index, niveau $depth au lieu de ".$tab_node["level"]); } #echo "Fermeture de noeud detectée pos $index TAG ".$tab_node["tag"]."

\n"; # This ugly thing is useless because reaching a close tag means that $index==$index_stop but who knows ? =) # it will be skipped soon $index = $index_stop; break; default: die("Erreur de type de TAG non déterminé :'".$tab_node["type"]."'"); } } # We are out ... returns the array with collected children... return ($return_tab); } # this function browse the xml tree and set the current node to the selected node public function give_node($path) { if ($path[0]=="/") { $current_node=$this->root_node; $path=substr($path,1); #echo "ABSOLUTE PATH GIVEN=$path
"; } else { $current_node = $this->current_node; } #echo "PATH GIVEN=$path
"; $tab_path = split("/",$path); foreach ($tab_path as $node_expr) { #echo "STUDYING EXPR='$node_expr'
"; $node = $current_node; $expr_tab = split("\?",$node_expr); $node_name = $expr_tab[0]; $attr_tab = 0; if (count($expr_tab)>1) { ##echo "TROUVE AU MOINS UNE CONDITION SUR LES ATTRIBUTS...
"; $attr_expr_tab=split(",",$expr_tab[1]); $attr_tab=array(); foreach($attr_expr_tab as $attr_expr) { $attr_split_expr=split("=",$attr_expr); $attr_tab[$attr_split_expr[0]]=$attr_split_expr[1]; } } $last=0; foreach ($node->children as $children) { #echo "COMPARING WITH '$children->name'
"; if ($children->name == $node_name) { ##echo "TROUVE NOEUD CORRESPONDANT $node_name
"; if (is_array($attr_tab)) { $node_attributes = $children->attributes; foreach ($attr_tab as $key=>$value) { if ($node_attributes[$key] == $value) { #echo "ATTRIBUTE & CHANGE CURRENT NODE TO ".$children->name."
"; $current_node = $children; $last = 1; } } } else { ##echo "CHILD=".$children->name."
"; #echo "CHANGE CURRENT NODE TO ".$children->name."
"; $current_node = $children; $last=1; } } if ($last) { break; } } if (!$last) { #echo "PATH ERROR $node_name
"; #die("MMmmmh It seems that this file is not a DIA XML format...sorry..."); return 0; } } return $current_node; } public function browse_tree($path) { $node = $this->give_node($path); if (is_object($node)) { $this->current_node = $node; return 1; } return 0; } # this method dumps an html representation of the xml tree public function xml_show($node = "",$level=0,$last=0) { if ($node=="") { $node=$this->root_node; } if (!is_object($node)) { die("ERROR : node is not an object"); } $line=""; for($i=1;$i<=$level;$i++) { if ((i==$level-1) and ($last)) { $line.="      "; } else { $line.="     |"; } if ($i==$level) { $line.="`-"; } } $line.=$node->name; #echo $line; $line.="".count($node->children).""; if (count($node->children)==1) { $line.=" (".$node->value.")
\n"; echo "$line"; } else { $line.="
\n"; echo "$line"; $i=1; foreach($node->children as $children) { if ($i==count($node->children)) { $this->xml_show($children,$level+1,1); } else { $this->xml_show($children,$level+1); } $i++; } } } #END_CLASS } La Transhumance en Aubrac - Artefact Photographie
 

Outils

Delicious Sauvegarder sur Delicious

Facebook Partager sur Facebook

Digg Envoyer sur Digg

Technorati Ajouter à Technorati

StumbleUpon Ajouter à StumbleUpon

Reportages Vous êtes ici :   Accueil   >   Actus   >   Reportages

La Transhumance en Aubrac

30/03/09 - 22:54 - Année 2008

A l’aube de l’été 2008, nous partons pour la région de l’Aubrac, où nous avons trouvé à la dernière minute deux places dans un gîte pas trop cher (en expliquant que nous venons photographier la transhumance). C’est le résultat d’échanges avec l’office du tourisme local, qui contre des photos, nous met en contact avec des éleveurs faisant la transhumance, pour vivre ce passage en Aubrac au cœur de l’évènement.
Arrivés sur place, la météo s’annonce compliquée et ventée, mais cela n’est pas bien grave, l’austérité et la rigueur du plateau n’en sera que plus belle et plus renforcée.

La rencontre avec notre contact à l’office du tourisme se passe bien, et nous obtenons comme prévu les adresses des éleveurs. Nous nous rendons immédiatement chez l’un d’eux pour suivre les préparatifs : il parcourt durant les deux jours de la transhumance près de 40 kilomètres à pieds avec ses bêtes, en remontant la belle vallée du Lot jusqu’à Saint-Côme d’Olt (estampillé « Plus beau village de France »), puis en suivant la petite Boralde de Saint-Chély d'Aubrac (un petit affluent du Lot) jusqu’à Aubrac, où il part ensuite dans les montagnes pour arriver à l’estive (lieu de pâturage pour l’été). La rencontre est cordiale et simple, et nous sommes à présent « les photographes de Lyon » – difficile de passer inaperçu apparemment. On nous emmène faire un tour sur la route environnante pour accompagner un attelage à l’ancienne (avec le fameux joug autour du cou des bœufs). On nous donne aussi l’occasion de le mener (à la baquette). Une belle expérience, pleine d’humanité avec des anciens agriculteurs et éleveurs, très volontaires pour partager leurs expériences passées, mais aussi pour en savoir plus sur ce qui nous motive à les suivre et sur l’actualité des « grandes villes ». S’ensuit un apéritif pour patienter pendant la cuisson du pain dans le four à pain, fait symbolique qui ne se produit à présent plus qu’à de rares occasions, dont la transhumance.

Après ce moment très sympathique, premier contact avec l’éleveur que nous allions suivre la journée du samedi, nous avons l’occasion de découvrir un peu les environs au niveau du paysage (malgré une météo et une lumière toujours très incertaines).

La journée du samedi est donc dédiée à la transhumance avec l’éleveur rencontré la veille. Il parcourt avec le bétail et son équipe – surtout constituée de membres du cercle familial – ce jour-là près de 30km sur les petites routes, reliant Rodelle à une localité près d’Aubrac. Ce furent les seuls instants de soleil durant la transhumance 2008, avec notamment deux moments forts lors du passage près de la « coulée de lave » et la halte à Saint-Côme d’Olt, permettant aux bêtes et aux hommes de se désaltérer (les uns avec autre chose que de l’eau !). Ce moment fort nous a permis de rencontrer également d’autres personnes très attachantes et hautes en couleurs.

Le lendemain, jour de la « fête de la transhumance » au village d’Aubrac (lieu de passage tous les éleveurs), nous rencontrons dès l’aube un éleveur qui parcourt une distance plus modeste (environ 10 km), mais avec un troupeau beaucoup plus imposant. Nous sommes cordialement conviés à assister au rituel des préparatifs : décoration du bétail, petit-déjeuner à base de soupe à l’oignon/fromage, verres de rouge…Cela dépasse le cadre du cercle familial ici, l’éleveur ayant convié la presse, sans tomber non plus dans une « opération de communication ». L’ambiance demeure conviviale et on a la sensation d’appartenir à la famille l’espace d’une matinée. Malheureusement, le temps est gâté et la pluie tombe à verse dès le départ du troupeau vers Aubra    c. Lassés par la pluie qui joue contre nous depuis trois jours et pour préserver le matériel, nous ne prenons en photo que le début de la transhumance de cet éleveur sympathique. L’occasion de faire quelques portraits sous la pluie, dans des conditions assez extrêmes.
Nous avons envoyé à chaque éleveur plusieurs tirages de photos que nous jugions sympa, en signe de remerciement.

Nous remercions chaleureusement l’Office de Tourisme de Saint-Chély d’Aubrac ainsi que les éleveurs Serge et Christian pour leur confiance et leur accueil. Rendez-vous en 2009.

Reportage par OlivierL et Thomas C. le 30/03/09 - 22:54

Ecrire un commentaire Voir les commentaires

0 commentaires

Identification

Publicité