2015-01-10 7 views
1

Как говорится в названии, я пытаюсь преобразовать XML-файл с использованием XSL на сервере. Мой XML-файл сохраняется на сервере и отображается в порядке. Однако, если я попытаюсь преобразовать его, ничего не отображается. Вот этот код.преобразование XML с помощью XSL

xml.php

<?php 
header ("Content-Type:text/xml");//Tell browser to expect xml 
include ("config/init.php"); 
$connection = mysqli_connect($hostname, $username, $password, $databaseName) or die("you did not connect"); 
$query = "SELECT * FROM art"; 
$result = mysqli_query($connection, $query) or die (mysqli_error($connection)); 
//Top of xml file 
$_xml = '<?xml version="1.0"?>'; 
$_xml .="<art>"; 
while($row = mysqli_fetch_array($result)) { 
$_xml .="<art>"; 
$_xml .="<art_name>".$row['name']."</art_name>"; 
$_xml .="<art_category>".$row['category']."</art_category>"; 
$_xml .="<art_price>".$row['price']."</art_price>"; 
$_xml .="</art>"; 
} 
$_xml .="</art>"; 
//Parse and create an xml object using the string 
$xmlobj=new SimpleXMLElement($_xml); 
//And output 
//print $xmlobj->asXML(); 
//or we could write to a file 
$xmlobj->asXML('art.xml'); 
?> 

XSL.PHP

<?php require 'header.php';?> 
<div class="sixteen columns"> 
<?php 
//Create a DomDocument object 

    $xml = new DOMDocument; 

    // Load the XML source 

    $xml -> load('art.xml'); 


//Similar with XSL 

    $xsl = new DOMDocument; 

    $xsl -> load('art.xsl'); 

    // Create and Configure the transformer 

    $proc = new XSLTProcessor; 

    // attach the xsl rules 

    $proc -> importStyleSheet($xsl); 

    //Output 

    echo $proc -> transformToXML($xml); 


?> 
</div> 
<?php require 'footer.php'; ?> 

EDIT

aplogies о конце ответа. При сохранении XML-файл теперь содержит данные. Вот файлы в соответствии с запросами.

art.xml

<?xml version="1.0"?> 
<art><art><art_name>Game Weapons</art_name><art_category>Weapons</art_category><art_price>11</art_price></art><art><art_name>Violet</art_name><art_category>Scenery</art_category><art_price>11</art_price></art><art><art_name>Wolf</art_name><art_category>Character</art_category><art_price>11</art_price></art><art><art_name>A Calvert</art_name><art_category>Character</art_category><art_price>11</art_price></art><art><art_name>Scatter Character</art_name><art_category>Character</art_category><art_price>11</art_price></art><art><art_name>Bonfire</art_name><art_category>Scenery</art_category><art_price>11</art_price></art><art><art_name>Clouds</art_name><art_category>Scenery</art_category><art_price>11</art_price></art><art><art_name>Dawn</art_name><art_category>Scenery</art_category><art_price>11</art_price></art><art><art_name>Face</art_name><art_category>Character</art_category><art_price>11</art_price></art><art><art_name>Scarra</art_name><art_category>Character</art_category><art_price>11</art_price></art><art><art_name>Scatter World</art_name><art_category>Scenery</art_category><art_price>11</art_price></art><art><art_name>Woods</art_name><art_category>Scenery</art_category><art_price>11</art_price></art><art><art_name>f</art_name><art_category>f</art_category><art_price>2</art_price></art></art> 

art.xsl

<!-- Edited with XML Spy v4.2 --> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:template match="/"> 
<html> 
<body> 
<h2>Art</h2> 
<table border="1"> 
<tr bgcolor="#333"> 
<th align="left" style="padding:0 0 0 20px;"><font color="#FFF">Name</font></th> 
<th align="left" style="padding:0 0 0 15px;"><font color="#FFF">Category</font></th> 
<th align="left" style="padding:0 0 0 5px;"><font color="#FFF">Price</font></th> 
</tr> 
<xsl:for-each select="art/art"> 
<tr> 
<td style="padding:10px 15px 10px 0;"> 
<xsl:value-of select="art_name"/> 
</td> 
<td style="padding:10px 15px 10px 15px;"> 
<xsl:value-of select="art_category"/> 
</td> 
<td style="padding:10px 15px 10px 15px;"> 
<xsl:value-of select="art_price"/> 
</td> 
</tr> 
</xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

EDIT

Оказывается, там было заметить, не так с кодом. На сервере отключен XSL ... теперь работает. Спасибо за помощь

+0

Как выглядит XML, как XSLT? Какой результат вы хотите, какой из них вы получаете? –

+0

У меня есть две страницы, XML.php просто отображает ее в порядке. Но XSL.php ничего не отображает – Calv

+0

Я думаю, вы неправильно поняли. Посмотрите, как выглядят 'art.xml' и' art.xsl'. –

ответ

0

Я сохранил содержимое art.xml в файле, который называется именно так, и сохранил содержимое вашего преобразования в другом файле с именем arttrans.xsl в той же локализации.

Затем работает этот очень простой скрипт в PHP

<h1>something</h1> 
<?php 
    $xml = new DOMDocument; 
    $xml->load('art.xml'); 

    $xsl = new DOMDocument; 
    $xsl->load('arttrans.xsl'); 

    // Configure the transformer 
    $proc = new XSLTProcessor; 
    $proc->importStyleSheet($xsl); // attach the xsl rules 

    echo $proc->transformToXML($xml); 
?> 

дает следующий результат:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body> 
<h2>Art</h2> 
<table border="1"> 
<tr bgcolor="#333"> 
<th align="left" style="padding:0 0 0 20px;"><font color="#FFF">Name</font></th> 
<th align="left" style="padding:0 0 0 15px;"><font color="#FFF">Category</font></th> 
<th align="left" style="padding:0 0 0 5px;"><font color="#FFF">Price</font></th> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Game Weapons</td> 
<td style="padding:10px 15px 10px 15px;">Weapons</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Violet</td> 
<td style="padding:10px 15px 10px 15px;">Scenery</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Wolf</td> 
<td style="padding:10px 15px 10px 15px;">Character</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">A Calvert</td> 
<td style="padding:10px 15px 10px 15px;">Character</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Scatter Character</td> 
<td style="padding:10px 15px 10px 15px;">Character</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Bonfire</td> 
<td style="padding:10px 15px 10px 15px;">Scenery</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Clouds</td> 
<td style="padding:10px 15px 10px 15px;">Scenery</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Dawn</td> 
<td style="padding:10px 15px 10px 15px;">Scenery</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Face</td> 
<td style="padding:10px 15px 10px 15px;">Character</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Scarra</td> 
<td style="padding:10px 15px 10px 15px;">Character</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Scatter World</td> 
<td style="padding:10px 15px 10px 15px;">Scenery</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">Woods</td> 
<td style="padding:10px 15px 10px 15px;">Scenery</td> 
<td style="padding:10px 15px 10px 15px;">11</td> 
</tr> 
<tr> 
<td style="padding:10px 15px 10px 0;">f</td> 
<td style="padding:10px 15px 10px 15px;">f</td> 
<td style="padding:10px 15px 10px 15px;">2</td> 
</tr> 
</table> 
</body></html> 

Я генерируемый этот результат с помощью PHP работает в Apache в XAMPP. Преобразование выглядит отлично, поэтому, возможно, проблема заключается в том, что входной сигнал.

EDIT: Я вставил заголовок. Этот заголовок печатается, выполняется ли преобразование или нет - просто убедитесь, что вы нацеливаете правильную веб-страницу.

+0

@AndresNK, что вы понимаете под вход? – Calv

+0

Вход в преобразование - вы абсолютно уверены, что используете преобразование предоставленных данных XML, а не что-то еще? Потому что, когда я запускаю преобразование на 'art.xml', я получаю результат выше – Andersnk

+0

@AndresNK. Я только что сделал, как вы, скопировал содержимое art.xml и art.xsl в новые файлы и загрузил их на сервер. Затем я использовал ваш php-скрипт, но не повезло. Все та же проблема. Отображение ничего – Calv