Wordpress PHP kullanarak XSLT ile XML Dönüşümü nasıl

4 Cevap php

Şu anda (Wordpress tabanlı web) Javascript kullanarak bir XSLT stil ile bir XML belgesini dönüştürmek. Bu ancak IE, Firefox ve Chrome çalışıyor. Javascript değilse artı, hiçbir şey göstermek istiyorum.

Yani, benim hedef tercihen PHP kullanarak, sunucu değil istemci üzerinde XHTML, XML / XSLT dönüşümü yapmaktır.

Ben diğer insanların yazılı birçok farklı PHP betikleri (Ben bir acemi değilim) denedim ama onları işe almak olamaz. Ben aşağıda buldum basit bir PHP komut dosyası dahil ettik. Ben dinamik filepath bir sorun olabilir biliyorum, ama ben XML ve XSLT dosyaları bulmak için daha iyi bir yol bilmiyorum.

Ben aşağıda komut dosyası kullandığınızda, ben hata alıyorum: hata ayrıştırma: / home sözdizimi hatası, beklenmedik T_STRING / 42, satırında alan / public_html / wp-content / themes / Yığın / sayfa-renting.php

Alternatif çözümler de hoş olurdu.

<?php

$xml = new DOMDocument();
$xml->load('<?php bloginfo('template_directory'); ?>/rentals/works.xml');

$xsl = new DOMDocument;
$xsl->load('<?php bloginfo('template_directory'); ?>/rentals/works.xsl');

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

echo $proc->transformToXML($xml);

?>

4 Cevap

Sadece doğru bağlamda, bu şekilde PHP bu biraz değiştirmek zorunda:

$xml = new DOMDocument;
$xml->load(get_bloginfo('template_directory') . '/rentals/works.xml');

$xsl = new DOMDocument;
$xsl->load(get_bloginfo('template_directory') . '/rentals/works.xsl');

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

echo $proc->transformToXML($xml);

Başka bir yol da tüm XSLT kullanmak yerine basit bir mark-up kullanarak XML dönüştüren bir eklenti değil olurdu. Bu bak plugin.

Bunu bilgi bloginfo bu kaldırmanız gerekir; bu yük yöntem XML / XSLT dosya adlarını alır.

$xml->load('/rentals/works.xml');
$xsl->load('/rentals/works.xsl');

Tabii ki, onlar doğru yolu XML / XSLT dosyaları belirtmek gerekir

Bunu çözdü.

Josh ve Rubens yukarıdaki önerileri çalıştı, ancak xml ve xsl belgeleri hala bulunamadı. Ama şablon dizine erişmek için farklı bir yol Josh'un fikrinden, ben biraz googled ve bu çözüm bulundu:

İşte PHP kullanarak sunucuda XSLT ile XML dönüştürmek için kullanılan son PHP komut dosyası bulunuyor. Yardımcı olan herkese teşekkürler.

<?php

$xml = new DOMDocument;
$xml->load('./wp-content/themes/Stacked/rentals/WORKS.xml');

$xsl = new DOMDocument;
$xsl->load('./wp-content/themes/Stacked/rentals/WORKS.xsl');

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

echo $proc->transformToXML($xml);

?>

O iş yapmak iki önemli şey:

  1. I daha önce kullandığı olağan wordpress yöntemine alternatif olarak bir dönem ve dosya yolunu kullanarak.

  2. Case-duyarlılığı. Benim dosya adları (Biliyorum, akıllıca değil) büyük harfle idi. Filepaths genellikle küçük harfe duyarlı değildir, ben bunu düşünüyorum, ama bu durumda (ne zaman bir PHP komut dosyası içinde?), Tema adı (yığılmış) ve dosya adı İKİ için uygun durumda kullanılarak (çıkıyor vermedi WORKS.xml, WORKS.xsl) doğru dosyayı bulmak için gereklidir.