XSLT (PHP4) İşlevleri
PHP Manual

xslt_process

(PHP 4 >= 4.0.3)

xslt_processBir XSLT dönüşümü gerçekleştirir

Açıklama

mixed xslt_process ( resource $işlemci , string $xml_taşıyıcı , string $xsl_taşıyıcı [, string $sonuç_taşıyıcı [, array $taşıyıcılar [, array $değiştirgeler ]]] )

xslt_process() işlevi asıl dönüşümün yapıldığı işlevdir. Dönüşüm için hemen hemen her tür girdi kaynağının (taşıyıcı) kullanımını mümkün kılar. Bu değiştirge olarak belirtilen tamponlarla sağlanır. Buradaki tampon kavramı Sablotron XSLTişlemcisine özgüdür (şimdilik bunu destekleyen tek XSLT işlemcidir). Girdi taşıyıcıları öntanımlı olarak işlenecek dosyayı içeren (taşıyan) birer dosya ismidir.

Değiştirgeler

işlemci

xslt_create() tarafından oluşturulmuş bir XSLT işlemci özkaynağı.

xml_taşıyıcı

XML dosyasının yolu veya XML değiştirgesi için yer tutucu.

xsl_taşıyıcı

XSL dosyasının yolu veya XSL değiştirgesi için yer tutucu.

sonuç_taşıyıcı

Öntanımlı olarak, dönüşümün sonucunda elde edilen belgeyi içeren dosyanın ismidir. Bu değiştirgede NULL belirtilirse sonuç, işlevin dönüş değeri olur.

taşıyıcılar

Bir dizi olup, XML ve XSLT değiştirgelerinde dosya ismi yerine bu dizinin anahtarları birer yer tutucu olarak belirtilir.

değiştirgeler

XSLT belgesine aktarılacak üst düzey değiştirgeleri içeren dizi. Bunlar, XSL dosyalarında <xsl:param name="değiştirge_ismi"> ifadeleriyle erişilebilen değiştirgelerdir. Değiştirgeler UTF-8 ile kodlanmış, Sablotron tarafından birer dizge olarak işlenebilir değerler içermelidir. Başka bir deyişle, XSLT belgeye değiştirge olarak işlenmek üzere bir düğüm kümesi aktaramazsınız.

Taşıyıcılar, taşıyıcılar dizisi üzerinden de aktarılabilir (örneklere bakınız).

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner. Sonuç taşıyıcısı olarak NULL belirtilirse, sonuç, işlevin dönüş değeri olur.

Sürüm Bilgisi

Sürüm: Açıklama
4.0.6 xml_taşıyıcı ve xsl_taşıyıcı değiştirgelerinde artık XML dizgeleri kabul edilmiyor. Sablotron'un 0.95 veya üstü sürümlerine XML içeren bir dizgenin aktarılması artık bir parçalanma arızasına sebep olmaktadır.

Örnekler

xslt_process() işlevi ile yapılan en basit dönüşüm türü, bir XML dosyayı bir XSLT dosya ile işleyip sonucu (XML veya HTML olarak) üçüncü bir dosyaya yerleştirmektir. Sablotron ile bunu yapmak çok kolaydır.

Örnek 1 - Bir XML dosyayı bir XSLT dosya ile işleyip sonucu bir XML dosyaya yazmak

<?php

// Yeni bir XSLT işlemcisi ayıralım
$xh xslt_create();

// Belgeyi dönüştürelim
if (xslt_process($xh'örnek.xml''örnek.xsl''sonuç.xml')) {
    echo 
"TAMAMDIR, örnek.xml, örnek.xsl tarafından sonuç.xml dosyasına ";
    echo 
"dönüştürüldü. sonuç.xml dosyasının içeriği:\n<br />\n";
    echo 
"<pre>\n";
    
readfile('sonuç.xml');
    echo 
"</pre>\n";
} else {
    echo 
"OLMADI, örnek.xml, örnek.xsl tarafından sonuç.xml dosyasına ";
    echo 
"dönüştürülemedi. Bunun sebebi: " xslt_error($xh) . " ve ";
    echo 
"hata kodu: " xslt_errno($xh);
}

xslt_free($xh);

?>

Bu önemli bir işlevsellik olsa da özellikle HTML sayfalarda sonuç doğrudan gösterilmek istenir. Üçüncü değiştirgeye NULL belirterek XSLT dönüşüm sonucunun bir dosya yerine doğrudan işlevin dönüş değeri olarak çıktılanmasını sağlayabilirsiniz.

Örnek 2 - Bir XML dosyayı bir XSLT dosya ile işleyip sonucu bir değişkene atamak

<?php

// Yeni bir XSLT işlemcisi ayıralım
$xh xslt_create();

// Belgeyi dönüştürelim, sonucu $sonuç değişkeninde döndürelim
$sonuç xslt_process($xh'örnek.xml''örnek.xsl');
if (
$sonuç) {
    echo 
"TAMAMDIR, örnek.xml, örnek.xsl tarafından dönüştürülüp \$sonuç ";
    echo 
"değişkenine atandı. \$sonuç değişkeninin içeriği:\n<br />\n";
    echo 
"<pre>\n";
    echo 
$sonuç;
    echo 
"</pre>\n";
} else {
    echo 
"OLMADI, örnek.xml, örnek.xsl tarafından dönüştürülemedi. ";
    echo 
"Bunun sebebi: " xslt_error($xh) . " ve hata kodu: ";
    echo 
"xslt_errno($xh);
}

xslt_free(
$xh);

?>

Yukarıdaki örneklerde, XSLT dönüşümünün en basit ve en çok kullanılan iki kullanımını gösterilmiştir. Ancak bazı durumlarda XML içeriğin ve XSLT kodunun bir veritabanı veya soket gibi harici kaynaklardan alınması gerekir. Bu gibi durumlarda, XML ve/veya XSLT verisini bir değişkene atamak zorunda kalabilirsiniz. Bu noktada XSLT'nin "değiştirge" sözdizimi imdada koşar. XML ve XSLT değiştirgelerinde dosya ismi yerine 5. değiştirgedeki dizinin anahtarları birer "yer tutucu" olarak belirtilir. Aşağıdaki örnekte bu durum örneklenmiştir.

Örnek 3 - Bir değişkendeki XML veriyi bir değişkendeki XSLT kodlarıyla işleyip sonucu bir değişkene atamak

<?php
// $xml ve $xsl, XML ve XSL veriyi içersin

$taşıyıcılar = array(
     
'/_xml' => $xml,
     
'/_xsl' => $xsl
);

// Yeni bir XSLT işlemcisi ayıralım
$xh xslt_create();

// Belgeyi dönüştürelim
$sonuç xslt_process($xh'arg:/_xml''arg:/_xsl'NULL$taşıyıcılar);
if (
$sonuç) {
    echo 
"TAMAMDIR, örnek.xml, örnek.xsl tarafından dönüştürülüp \$sonuç ";
    echo 
"değişkenine atandı. \$sonuç değişkeninin içeriği:\n<br />\n";
    echo 
"<pre>\n";
    echo 
$sonuç;
    echo 
"</pre>\n";
} else {
    echo 
"OLMADI, örnek.xml, örnek.xsl tarafından dönüştürülemedi. ";
    echo 
"Bunun sebebi: " xslt_error($xh) . " ve hata kodu: ";
    echo 
"xslt_errno($xh);
}
xslt_free(
$xh);
?>

Örnek 4 - XSL dosyalara PHP değişkenlerinin aktarılması

<?php

// XML dizgesi
$xml '<?xml version="1.0"?>
<para>
 Beni dönüştür
</para>'
;

// XSL dizgesi
$xsl '
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" indent="no"
 omit-xml-declaration="yes"  media-type="text/html"/>
 <xsl:param name="myvar"/>
 <xsl:param name="mynode"/>
 <xsl:template match="/">
PHP değişkeni: <xsl:value-of select="$myvar"/><br />
Düğüm kümesi: <xsl:value-of select="$mynode"/>
 </xsl:template>
</xsl:stylesheet>'
;


$xh xslt_create();

// İkinci değiştirge bir dizge olarak yorumlanacak
$parameters = array (
  
'myvar' => 'test',
  
'mynode' => '<foo>bar</foo>'
);

$arguments = array (
  
'/_xml' => $xml,
  
'/_xsl' => $xsl
);

echo 
xslt_process($xh'arg:/_xml''arg:/_xsl',
                  
NULL$taşıyıcılar$değiştirgeler);

?>

Yukarıdaki örneğin çıktısı:

PHP değişkeni: test<br>
Düğüm kümesi: &lt;foo&gt;bar&lt;/foo&gt;

Notlar

Bilginize:

file:// şemasının Windows kullanırken dosya yolunun önünde gerekli oluşuna lütfen dikkat ediniz.


XSLT (PHP4) İşlevleri
PHP Manual