# Copyright (C) 2002-2004 gregoire HUBERT.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author : gregoire HUBERT
#
# XML_node.objet
#
# This object is an XML node representation
#
# /- name (string)
# xml_node --- attributes (array)
# \- children (array) or value (string)
class xml_node {
var $name;
var $attributes = array();
var $children = array();
var $value = "";
function xml_node($name,$attributes,$children=array(),$value="") {
$this->name = $name;
if (is_array($attributes)) {
$this->attributes = $attributes;
}
$this->children = $children;
$this->value = $value;
}
}
# Copyright (C) 2003-2004 gregoire HUBERT.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author : gregoire HUBERT
#
# xml_tree class
#
# This object parses an XML stream and offers a tree composed by xml_nodes
#
class xml_tree {
var $xml_stream;
var $current_node;
var $root_node;
var $index;
var $value;
function xml_tree() {
$this->root_node = new xml_node("__ROOT_NODE",array());
$this->current_node = $this->root_node;
}
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;
}
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
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;
}
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
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
}
AXXIS (de) - Utopia (2009)

Label : AFM Records / Underclass
Sortie du Scud : 28 août 2009
Pays : Allemagne
Genre : Heavy Metal mélodique
Type : Album
Playtime : 11 Titres - 49 Mins
« Rob (Schomaker, basse) et Marco (Wriedt, guitares) étaient très enthousiastes pendant les sessions d’enregistrement. Ils ont écrit la chanson « Taste My Blood », juste pour donner à Utopia une autre couleur. Excellent. Quelle déconnade ! » Ah oui alors quelle déconnade ! On le sent bien dans les propos du chanteur Bernhard Weiss … Non pas qu’AXXIS nous fasse mourir de rire, mais plutôt que le combo germanique déconne à bien tube. Ah ça il doit être super bien le morceau « Taste My Blood », sauf qu’il ne s’agit que d’un bonus du nouvel album Utopia, et que pour l’écouter avec la version promo, tu peux toujours aller te brosser Martine …
Et encore je vous épargne le super coup de promo au sujet du titre fêtant les 20 ans de carrière d’AXXIS, une chanson avec les copains d’AXXIS, comme la belle Doro, Schmier (DESTRUCTION), Andi Deris (HELLOWEEN), David Readman (PINK CREAM 69), etc … Etant donné que le label AFM Records n’a pas daigné nous le fournir non plus, quelle délicate attention, qu’est ce qu’on doit faire ? Le télécharger illégalement ? Quoi ? Aller acheter l’album ?!!
Et ben franchement, non merci. Autant jusque là AXXIS avait fait preuve d’une persévérance sans faille, tout en proposant de très bons skeuds comme Paradise In Flames ou Doom Of Destiny, autant la reconnaissance (largement méritée) enfin acquise semble avoir troublé les Weiss et Oellers. Comment pourrait-on appeler ça ? De la suffisance ? Un manque de surprises ? De la routine ? Le fameux « mode automatique » ? Dans tous les cas, voilà un disque bien inégal et qui, surtout, met un moment à démarrer. Les premiers titres ne manquant pas de dynamisme, ce n’est pas le problème. Mais où sont les hymnes ? Les « Dance With The Dead », « I Hear You Cry », « Better Fate », « Bloodangel » ?
Ah ça, pour nous faire le coup de la chanson chantée en Allemand (« Fass Mich An »), AXXIS nous la joue U.D.O. ou Doro. Ce qui veut dire que le procédé a déjà maintes et maintes fois été essayé … Il y a bien cette ballade, « Father’s Eyes », vraiment agréable, mais est-ce là vraiment ce qu’on attend d’un groupe de Heavy Metal (même mélodique) ? D’autant que le père Weiss connaît sur ce titre une sévère baisse de régime, ne chantant pas toujours juste.
Il faut mettre en cause, face à ce relatif échec, la quasi-totalité du line-up. Un duo de compositeurs/producteurs (Weiss et Oellers) qui ne se remettent pas trop en question, un clavier (Harry Oellers toujours) qui occupe beaucoup trop l’espace sonore, un guitariste (Marco Wriedt) fraîchement intégré depuis Doom Of Destiny et qui n’apporte pas le petit grain de folie qu’on attend d’un nouveau membre. Je connais d’ailleurs un groupe finlandais qui vivra bientôt la même expérience …Et heureusement que le nouveau batteur, Alex Landenburg (remplaçant d’Andre Hilgers) envoie la sauce sans jamais faiblir. Et ne me demandez pas qui se cache derrière les inévitables vocaux féminins puisqu’AXXIS a congédié Lakonia depuis l’opus précédent (il se pourrait que ce soit la chanteuse de MAGICA, mais comme les infos ne sont pas légions à ce sujet …).
Reste qu’à mi-chemin d’Utopia, « The Monster Crawl » montre AXXIS sous un meilleur jour. Entre un « Eyes Of A Child » aux couplets et refrains accrocheurs, et un « Heavy Rain » aux faux airs d’EDGUY, l’espoir renaît. Espoir qui survient sûrement bien trop tard, lorsque certains fans auront déjà lâché l’affaire après quelques titres pas transcendants. Le danger pour AXXIS, ce serait de marcher dans les pas d’un GAMMA RAY. La constance ne consiste pas seulement à proposer régulièrement des pochettes somptueuses. Des hymnes, putain, on veut des hymnes !!!
Mais peut-être qu’on en attend trop, confirmant l’excellent choix de titre pour cet album …
Ajouté : Samedi 11 Juillet 2009 Chroniqueur : NicoTheSpur Score :    Lien en relation: Axxis Website Hits: 13803
|