Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


тут возникал вопрос о том как можно выдирать какиенибуть данные из XML, и нашол следуещее решение:

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" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<xsl:output method="text"/>
<xsl:template match="/">
    <xsl:for-each select="//node()[name() = 'country']">
        <xsl:value-of select="concat('$countryDirs[] = "', @name, '";')"/>        
    </xsl:for-each>
    <xsl:for-each select="//node()[name() = 'info']">
        <xsl:value-of select="concat('$infoDirs[] = "', ./../../node()/@name, '/', @name, '";')"/>        
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

PHP код: Выделить весь код

<?

function xml2html($f1$f2$debug 0)
{
  
$XML implode (''file($f1));
  
$XSL implode (''file($f2));

  
$arguments = array('/_xml' => $XML,'/_xsl' => $XSL);

  
// Allocate a new XSLT processor
  
$xh xslt_create();

  
// Process the document
  
$HTML xslt_process($xh'arg:/_xml''arg:/_xsl'NULL$arguments);
  if(
$debug)
  {
    
header('Content-type: application/xml');
    print 
$XML;
  }
  else
  {
    if (
$HTML)
    {
      return 
str_replace('&''&'$HTML);
    }
    else
    {
      echo 
" Sorry, sample.xml could not be transformed by sample.xsl into";
      echo 
" the \$XML variable the reason is that " xslt_error($xh);
      echo 
" and the error code is " xslt_errno($xh);
    }
  }
  
xslt_free($xh);
}

eval(
xml2html('./geo.xml''./geo1.xslt'));
?>
<pre>
<?
print_r
($countryDirs);
print_r($infoDirs);
?>
</pre>

вроде все очень просто и понятно...

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 17:34, 12-06-2006 | #168