Избитая проблема с саблотроном

Pauliceman

Новичок
Избитая проблема с саблотроном

При выполнении xslt_process() получаю "Warning: Sablotron error on line 1: XML parser error 4: not well-formed (invalid token)". Вот уже опустился до простейшего примера, а результат тот-же... естественно в том-же XMLSpy все трансформится без проблем.
Вот исходный XML:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" ?>
<PERIODIC_TABLE>
  <ATOM STATE="GAS">
    <NAME>Hydrogen</NAME>
    <SYMBOL>H</SYMBOL>
    <ATOMIC_NUMBER>1</ATOMIC_NUMBER>
    <ATOMIC_WEIGHT>1.00794</ATOMIC_WEIGHT>
    <BOILING_POINT UNITS="Kelvin">20.28</BOILING_POINT>
    <MELTING_POINT UNITS="Kelvin">13.81</MELTING_POINT>
    <DENSITY UNITS="grams/cubic centimeter">
      <!-- At 300K, 1 atm -->
      0.0000899
    </DENSITY>
  </ATOM>
  <ATOM STATE="GAS">
    <NAME>Helium</NAME>
    <SYMBOL>He</SYMBOL>
    <ATOMIC_NUMBER>2</ATOMIC_NUMBER>
    <ATOMIC_WEIGHT>4.0026</ATOMIC_WEIGHT>
    <BOILING_POINT UNITS="Kelvin">4.216</BOILING_POINT>
    <MELTING_POINT UNITS="Kelvin">0.95</MELTING_POINT>
    <DENSITY UNITS="grams/cubic centimeter"><!-- At 300K -->
      0.0001785
    </DENSITY>
  </ATOM>
</PERIODIC_TABLE>
Вот XSL шаблон:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="PERIODIC_TABLE">
    <html>
      <xsl:apply-templates/>
    </html>
  </xsl:template>
  <xsl:template match="ATOM">
    <P>
      <xsl:apply-templates/>
    </P>
  </xsl:template>
</xsl:stylesheet>
Есть идеи????
 

chameleon

Новичок
ну даже не знаю. ссылку на xsl из документа пробовал убирать?
 

Pauliceman

Новичок
Ну убираю строку номер 2 в том примере xml-файла, что я привел... ноль на массу........
 

olpa

Новичок
А может быть так, что XML или XSL-файл начинается с байтов "FF FE" или "FE FF"? Notepad их не показывает, spy тоже игнорирует, а многие программы падают.
 

Serguitar

Новичок->продвинутый
стрянно, у мну работает норм.
<html xmlns:fo="http://www.w3.org/1999/XSL/Format">
<P>
Hydrogen
H
1
1.00794
20.28
13.81


0.0000899

</P>
<P>
Helium
He
2
4.0026
4.216
0.95

0.0001785

</P>
</html>
Вот что выводит.
Код элементарен, взят из мана.
PHP:
<?
$xmlData = '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" ?>
<PERIODIC_TABLE>
  <ATOM STATE="GAS">
    <NAME>Hydrogen</NAME>
    <SYMBOL>H</SYMBOL>
    <ATOMIC_NUMBER>1</ATOMIC_NUMBER>
    <ATOMIC_WEIGHT>1.00794</ATOMIC_WEIGHT>
    <BOILING_POINT UNITS="Kelvin">20.28</BOILING_POINT>
    <MELTING_POINT UNITS="Kelvin">13.81</MELTING_POINT>
    <DENSITY UNITS="grams/cubic centimeter">
      <!-- At 300K, 1 atm -->
      0.0000899
    </DENSITY>
  </ATOM>
  <ATOM STATE="GAS">
    <NAME>Helium</NAME>
    <SYMBOL>He</SYMBOL>
    <ATOMIC_NUMBER>2</ATOMIC_NUMBER>
    <ATOMIC_WEIGHT>4.0026</ATOMIC_WEIGHT>
    <BOILING_POINT UNITS="Kelvin">4.216</BOILING_POINT>
    <MELTING_POINT UNITS="Kelvin">0.95</MELTING_POINT>
    <DENSITY UNITS="grams/cubic centimeter"><!-- At 300K -->
      0.0001785
    </DENSITY>
  </ATOM>
</PERIODIC_TABLE>';
$xslData = '<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="PERIODIC_TABLE">
    <html>
      <xsl:apply-templates/>
    </html>
  </xsl:template>
  <xsl:template match="ATOM">
    <P>
      <xsl:apply-templates/>
    </P>
  </xsl:template>
</xsl:stylesheet>';
$xh = xslt_create();

$arguments = array(
'/_xml' => $xmlData,
'/_xsl' => $xslData
);

$result = @xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
if ($result) print ($result);
else {
	print ("There was an error that occurred in the XSL transformation...\n");
	print ("\tError number: " . xslt_errno($xh) . "\n");
	print ("\tError string: " . xslt_error($xh) . "\n");
	exit;
}
?>
 

Pauliceman

Новичок
Тьфу.... это у меня руки корявые.... все уже в норме! Всем спасибо!
 
Сверху