How to extract data from XML file using shell scripting?

Hi ,
I have input file as XML. following are input data
#complex.xml

Code:

<?xml version="1.0" encoding="UTF-8"?><TEST_doc xmlns="http://www.w3.org/2001/XMLSchema-instance">  <ENTRY uid="123456">    <protein>      <name>PROT001</name>      <organism>Human</organism>      <class>cytoplasmic</class>    </protein>    <xrefs>      <xref>          <database>Ensembl</database>          <accn>ENSG00000105829</accn>      </xref>      <xref>          <database>UNIPROT</database>          <accn>Q12345</accn>      </xref>    </xrefs>  </ENTRY>  <ENTRY uid="45678">    <protein>      <name>PROT002</name>      <organism>Human</organism>      <class>nuclear</class>    </protein>    <xrefs>      <xref>          <database>Ensembl</database>          <accn>ENSG00000105333</accn>      </xref>      <xref>          <database>UNIPROT</database>          <accn>Q14789</accn>      </xref>    </xrefs>  </ENTRY></TEST_doc>

i want to extract data from this file and i tried below query.

cat complex.xml | xml sel -t -m //xref -v "concat(../../protein/name,' ',../../protein/class,' ',./database,' ',./accn)" -n

but it is not giving any output...but this query is working when instead of xmlns i am writing xmlns:xsi="...."
but my input file is having only xmlns="..."

please help me ...

Thanks in advance..

Please use code tags
Give an example on what output you like to have

Lik this?

awk '{gsub(/<[^>]*>/, " ");$1=$1}1' complex.xml
PROT001 Human cytoplasmic Ensembl ENSG00000105829 UNIPROT Q12345 PROT002 Human nuclear Ensembl ENSG00000105333 UNIPROT Q14789

EDIT: Some change

awk '{gsub(/<[^>]*>/, " ");$1=$1;gsub(/PROT[0-9]/,"\n&")}1' complex.xml

PROT001 Human cytoplasmic Ensembl ENSG00000105829 UNIPROT Q12345
PROT002 Human nuclear Ensembl ENSG00000105333 UNIPROT Q14789