allora io ho risolto cambiando il dtd e di conseguenza tutto il resto, diciamo che l'ho fatto meno automatico :P
adesso ho impostato dtd e xml in questo modo e funzia:
codice:
<!ELEMENT root (offerte+)>
<!ELEMENT offerte (it,eu,altr)>
<!ELEMENT it (name_it)>
<!ELEMENT name_it (#PCDATA)>
<!ATTLIST name_it link CDATA #REQUIRED>
<!ATTLIST name_it scad_gg CDATA #REQUIRED>
<!ATTLIST name_it scad_mm CDATA #REQUIRED>
<!ATTLIST name_it scad_aa CDATA #REQUIRED>
<!ELEMENT eu (name_eu)>
<!ELEMENT name_eu (#PCDATA)>
<!ATTLIST name_eu link CDATA #REQUIRED>
<!ATTLIST name_eu scad_gg CDATA #REQUIRED>
<!ATTLIST name_eu scad_mm CDATA #REQUIRED>
<!ATTLIST name_eu scad_aa CDATA #REQUIRED>
<!ELEMENT altr (name_altr)>
<!ELEMENT name_altr (#PCDATA)>
<!ATTLIST name_altr link CDATA #REQUIRED>
<!ATTLIST name_altr scad_gg CDATA #REQUIRED>
<!ATTLIST name_altr scad_mm CDATA #REQUIRED>
<!ATTLIST name_altr scad_aa CDATA #REQUIRED>
e quindi l'xsl in questo modo:
codice:
<TABLE border="2" align="center" width="100%">
<TR>
<TH>ITALIA</TH>
<TH>EUROPA</TH>
<TH>ALTRO</TH>
</TR>
<xsl:for-each select="root/offerte">
<xsl:sort select="it/name_it" order="ascending" />
<xsl:sort select="eu/name_eu" order="ascending" />
<xsl:sort select="altr/name_altr" order="ascending" />
<TR>
<TD><xsl:value-of select="it/name_it" /></TD>
<TD><xsl:value-of select="eu/name_eu" /></TD>
<TD><xsl:value-of select="altr/name_altr" /></TD>
</TR>
</xsl:for-each>
</TABLE>
mi scuso per aver sbagliato sezione