Данные из XSL

Lvenok1987

Новичок
Данные из XSL

Имеется файл *.xsl. Файл отвечает за показ статистики по интернет-радио. В этом файле выводится одна строчка типа "Track #1" (отображение текущей песни). Код отображения текущей песни:
PHP:
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" />
Имеется файл *.php. В нем должно быть отображение текущей песни. Показ текущей песни в *.php сделан так:

PHP:
$handle = fopen("status3.xsl", "rb");  $contents = '';  while (!feof($handle)) {  $contents .= fread($handle, 8192);  }  fclose($handle);  echo "$contents";
Все отображается, хорошо. Теперь другая проблема: нужно как-то название текущей песни вбить в переменную php.

Если переменной "ff" присвоить значение $contents, и потом вбить ее в ссылку, то будет следующее:
PHP:
http://test1.ru/index.php?ff=<xsl:stylesheet xmlns:xsl =
Тоесть даже если эту переменную записывать в БД, запись в БД будет содержать "<xsl:stylesheet xmlns:xsl", а не "Track #1".

Хотя бы в каком файле (php или xsl) нужно менять, и приблизительно что именно?
 

atv

Новичок
Менять нужно в голове, и приблизительно мозги, хотя, всё может обойтись генетическим кодом.
 

Lvenok1987

Новичок
Так...для "умных": в каком файле ковырять и что приблизительно, или другой вариант, как можно решить проблему...Тоесть мы не рассматриваем вселенную, автомобиль, человека (в частности его генетический код, мозг...)и т.д.
 

slach

Новичок
Lvenok, atv совершенно прав
ты не понимаешь вообще как работает XSL
явно не читал(а) мануалов
http://php.net/manual/ru/book.xsl.php

и код который ты приводишь, ну ничего кроме истерического смеха не вызывает

твоих данных по треку просто НЕТ внутри *.XSL
они там появляются когда XSL файл натравливают на XML данные и происходит XSLT преобразование

прочти мануал
попробуй найти где у тебя в системе генерируются XML данные которые обрабатываются твоим XSL файлом

и дальше уже
читай
http://php.net/manual/ru/book.xml.php
http://php.net/manual/ru/book.simplexml.php
для того чтобы распарсить его и вытащить твой трек в переменную на PHP
 

Lvenok1987

Новичок
Глупо смеяться истерическим смехом над убогими ) Но ничего, и atv тоже когда-нибудь подрастет...

Спасибо за дельный ответ.

-~{}~ 06.06.09 00:45:

Не усну же до утра...

Нашел XML файл. Распарсил его. Распарсил с помощью "xml_parser_create();". Имена элементов, их значения отображаются.

Так же делал "XSLTProcessor::transformToXML". Код:
PHP:
<?

$xml = new DOMDocument;
$xml->load('C:\Program Files\Icecast2 Win32\icecast.xml');

$xsl = new DOMDocument;
$xsl->load('C:\Program Files\Icecast2 Win32\web\status.xsl');

$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);

?>
Тут выводятся просто значения элементов, без имен.

Далее нужно как-то использовать "XSLTProcessor::getParameter" - правильно?

-~{}~ 06.06.09 00:53:

В XML прописано вот это:
PHP:
<paths>
        <alias source="/" dest="/status.xsl"/>
    </paths>
В XSL нам нужно вывести вот это:
PHP:
<tr><td>Current Song:</td><td class="streamdata"> 
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" /></td></tr>

Можно ли в XML прописать вывод "artist"?

-~{}~ 06.06.09 17:00:

PHP:
<?

$xml = new DOMDocument;
$xml->load('C:\Program Files\Icecast2 Win32\icecast.xml');

$xsl = new DOMDocument;
$xsl->load('C:\Program Files\Icecast2 Win32\web\status.xsl');

$proc = new XSLTProcessor;
$ty=$proc->getParameter('C:\Program Files\Icecast2 Win32\web\status.xsl', 'artist'); 

echo "$ty";

?>
Вот так правильно будет?
 

slach

Новичок
причем тут getParametr вообще???

ищи в XML файле
<artist>
и <title>

теги


почитай этот форум
тут есть ссылки на zvon.org и обучалки по XSLT \ XPath
пока ты не будешь понимать что у тебя в XSL написано
 

Lvenok1987

Новичок
В XML файле artist не будет, т.к. оно находится в XSL файле, на который в XML указывает строка:
PHP:
<paths> 
        <alias source="/" dest="/status.xsl"/> 
    </paths>
Ладно, бесполезно это :) Спасибо за помощь.
 
Сверху