Как добраться до href в <?xml-stylesheet

WMix

герр M:)ller
Партнер клуба
Как добраться до href в <?xml-stylesheet

<?xml version="1.0" encoding="windows-1252"?>
<?xml-stylesheet type="text/xsl" href="xsl/html.xsl" ?>

....

bla bla bla


Есть ли возможность добраться до
href="xsl/html.xsl" в обявлении stylesheet , с помошью SAX
 

WMix

герр M:)ller
Партнер клуба
PHP:
<?php
class xsl_href {

	var $xml_parser;

	function xsl_href( $data) {
		$this->xml_parser = xml_parser_create();
		xml_set_object($this->xml_parser, &$this);
		xml_set_processing_instruction_handler($this->xml_parser, "piHandler") ;
		xml_parse( $this->xml_parser, $data  );
	}
	
	function piHandler( $xml_parser, $target, $data ) {
		echo $target."<br />";
		echo $data;
	}
}

$test = new xsl_href("<?xml version=\"1.0\" encoding=\"windows-1252\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"xsl/html.xsl\" ?>
<test>Hallo World</test>");
OUTPUT -----------------------
xml-stylesheet
type="text/xsl" href="xsl/html.xsl"
----------------------------------
но это гон наверно,... хмл процессор запускать, только для вырезки URL!!
как лучше может кто подскажет !!!
Парсирование отдано Sablatron, но он не видит обявления XSLT,....
может лучше через eregi_replace() ????
 

slach

Новичок
в чем ГОН ???
вполне нормальное решение

но если хочешь
можешь пользоваться preg_match

а с чего вдруг Sablotron будет видеть объявление стиля, без указания xslt_set_base или ПОЛНОГО УРЛА ??\
кроме того
как ты вызываешься xslt_proccess ???
 

WMix

герр M:)ller
Партнер клуба
Саблотрон может и это видеть????
Супер Научите !!!!
Код:
/
+-- xml
|    +--xsl
|    +--html
+--php
|    +--modules
|         +-- xmlFile.php
+--index.php
это выглядит так !!!
Саблатрон Запускается через index.php в xmlFile.php
те в index.php стоит строка
include("php/modul/xmlFile.php");

xml лежит в папке xml
xsl лежит в папке xsl
парсированный file ляжет в папку html

какие пути использовать лучше ???

<?xml-stylesheet type="text/xsl" href="xsl/html.xsl" ?>

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

PHP:
<?php
// class xmlFile ... priblizitel'no eto tak !!!


	function createHtml( $xmlSrc, $xslSrc, $htmlSrc ){
		$htmlObj = new Datei( $htmlSrc ); // Object File
		$xmlData = file_get_contents( $xmlSrc );
		$xslData = file_get_contents( $xslSrc );
		$xh = xslt_create();
		
		$arguments = array( '/_xml' => $xmlData, '/_xsl' => $xslData );
		if( $htmlContent = @xslt_process( $xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments )){
			$htmlObj->setContent( $htmlContent );
			$htmlObj->save();
		}
		else{
			return false;
		}
		return true;
	}
 

slach

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

но как ты делаешь через file_get_contents тоже нормально...

тогда придется тебе все таки юзать preg_match чтобы выцепить xsl шаблон... парсить два раза файл... неверное решение...
 

WMix

герр M:)ller
Партнер клуба
Тада наверное получается вот так !!!

PHP:
function createHtml( $xmlSrc,  $htmlSrc ){// xsl-соурс передавать не надо !!!
	$xmlData = file_get_contents( $xmlSrc );
	//-----------------------------------------------------------
    //Вырезаем href в xml-stylesheet
	$pattern = '/href=("|\')?(.*?)(\s|"|\')/i';
	preg_match($pattern, $xmlData, $matches, PREG_OFFSET_CAPTURE);
	$xslSrc = $matches[2][0];
	//-----------------------------------------------------------
	$xslData = file_get_contents( $xslSrc );
	$xh = xslt_create();
	
	$arguments = array( '/_xml' => $xmlData, '/_xsl' => $xslData );
	if( $htmlContent = @xslt_process( $xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments )){
		$htmlObj = new Datei( $htmlSrc );// Object File 
		$htmlObj->setContent( $htmlContent );
		$htmlObj->save();
	}
	else{
		return false;
	}
	return true; 
}
ехехе,.. ну ладно,.. надо значит надо :(

( конечно href указывает на директорию от index.php в моём случии ./xml/xsl/myTemplate.xsl)
 
Сверху