# 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
}
JUDAS PRIEST (uk) - Hell Bent For Leather (Killing Machine) (1979)

Label : Columbia Records
Sortie du Scud : 9 octobre 1978
Pays : Angleterre
Genre : Heavy Metal
Type : Album
Playtime : 10 Titres - 35 Mins
Il faut savoir battre le fer tant qu’il est encore chaud. Et si ce fer a des airs de Metal lourd, alors tant mieux. JUDAS PRIEST l’a bien compris. Quelques mois à peine après la sortie de Stained Class, le quintet britannique assoit encore sa popularité avec Hell Bent For Leather (Killing Machine), tout en adoptant définitivement ce look « cuir et clous » qui va largement contribuer à sa renommée.
Fait inédit, il s’agit du premier album où le PRIEST conserve son batteur ! Les Binks, cogneur essentiel sur Stained Class, est toujours là et s’affirme comme le moteur du groupe. Et si la plupart des nouvelles compos sont le résultat d’un travail collectif, c’est Glenn Tipton qui signe le titre ultime : « Hell Bent For Leather ». Annoncé par une batterie tribale et des guitares confuses, cet hymne fera office de bande-son indispensable à l’arrivée d’Halford sur scène en Harley Davidson, le tout étant magnifié par le solo plein de mélodie et de feeling de Tipton. Enorme !
Question hymne, JUDAS PRIEST se lance aussi dans le style fédérateur avec « Take On The World », dans le genre chants de supporters ou marche en avant massive. Un titre à reprendre tous ensemble dans un élan de fraternité et de révolution ! On peut voir « Take On The World » comme une réponse au « We Will Rock You » de QUEEN sorti un an plus tôt … Mais comme ce titre tend à unir toutes forces du monde, JUDAS PRIEST sort ses meilleurs atouts et touche à l’excellence dans chaque style abordé. Le Heavy Metal teinté de Blues Rock si cher à nos deux guitaristes (« Delivering The Goods », « Killing Machine », « Evil Fantasies » et son final tant attendu), le pur Metal sans compromis (« Hell Bent For Leather », « Running Wild »), le Hard funky et groovy (« Burnin’ Up »), la ballade pleine d’émotions (« Before The Dawn »), le Hard sexy et entraînant (« Evening Star »), tout y passe et Killing Machine porte bien son nom : cet album tue. Halford chante mieux que jamais, Tipton et Downing se surpassent, Ian Hill fait le boulot et Les Binks apporte son grain de sel à lui.
Il ne sert à rien de s’étendre pendant des heures sur Killing Machine, que ces imbéciles d’Américains ont préféré renommer Hell Bent For Leather pour éviter toute connotation « meurtrière », tant cet album paraît proche de la perfection, comme un Stained Class revisité, plus concis et 100 fois plus fort.
Une seule écoute suffira à vous convaincre.
Discographie Complète de JUDAS PRIEST :
Rocka Rolla (Album - 1974),
Sad Wings Of Destiny (Album - 1976),
Sin After Sin (Album - 1977),
Stained Class (Album - 1978),
Hell Bent For Leather (Killing Machine) (Album - 1979),
Unleashed In The East (Live - 1979),
British Steel (Album - 1980),
Point Of Entry (Album - 1981),
Screaming For Vengeance (Album - 1982),
Defenders Of The Faith (Album - 1984),
Turbo (Album - 1986),
Priest ... Live! (Live - 1987),
Ram It Down (Album - 1988),
Painkiller (Album - 1990),
Metal Works '73-'93 (Best-Of - 1993),
Jugulator (Album - 1997),
Meltdown (Live - 1998),
Demolition (Album - 2001),
British Steel (DVD - 2001),
Live In London (DVD - 2002),
Live In London (Live - 2003),
Electric Eye (DVD - 2003),
Angel Of Retribution (Album - 2005),
Rising In The East (DVD - 2005),
Nostradamus (Album - 2008),
A Touch Of Evil: Live (Live - 2009),
British Steel - 30th Anniversary Deluxe Edition (Album - 2012),
Redeemer Of Souls (Album - 2014),
Battle Cry (Live - 2016)
Ajouté : Mercredi 09 Septembre 2009 Chroniqueur : NicoTheSpur Score :      Lien en relation: Judas Priest Website Hits: 12811
|