2011-03-11 82 views
0

我有一個用於Google Weather API的XML輸出代碼,我想知道如何將它輸出到HTML中。我知道必須有一些PHP參與,但我在PHP中非常有限。XML到HTML(PHP)

下面的代碼:

<forecast_information> 
    <city data="Toronto, ON"/> 
    <postal_code data="Toronto"/> 
    <latitude_e6 data=""/> 
    <longitude_e6 data=""/> 
    <forecast_date data="2011-03-11"/> 
    <current_date_time data="2011-03-11 15:07:00 +0000"/> 
    <unit_system data="US"/> 
</forecast_information> 
<current_conditions> 
    <condition data="Rain and Snow"/> 
    <temp_f data="36"/> 
    <temp_c data="2"/> 
    <humidity data="Humidity: 100%"/> 
    <icon data="/ig/images/weather/rain_snow.gif"/> 
    <wind_condition data="Wind: S at 6 mph"/> 
</current_conditions> 
<forecast_conditions> 
    <day_of_week data="Fri"/> 
    <low data="31"/> 
    <high data="37"/> 
    <icon data="/ig/images/weather/rain_snow.gif"/> 
    <condition data="Rain and Snow"/> 
</forecast_conditions> 
<forecast_conditions> 
    <day_of_week data="Sat"/> 
    <low data="28"/><high data="38"/> 
    <icon data="/ig/images/weather/rain_snow.gif"/> 
    <condition data="Rain and Snow"/> 
</forecast_conditions> 
<forecast_conditions> 
    <day_of_week data="Sun"/> 
    <low data="18"/> 
    <high data="32"/> 
    <icon data="/ig/images/weather/snow.gif"/> 
    <condition data="Snow Showers"/> 
</forecast_conditions> 
<forecast_conditions> 
    <day_of_week data="Mon"/> 
    <low data="23"/><high data="32"/> 
    <icon data="/ig/images/weather/partly_cloudy.gif"/> 
    <condition data="Partly Cloudy"/> 
</forecast_conditions> 

一個可能的HTML輸出格式可以是這樣的:

<div id="forecast_information"> 
    <div id="city_data">Ex: Toronto </div> 
    <div id="current_date_time_data">EX: 2011-03-11</div> 
    <div id="forecast_date">EX: 2011-03-11</div> 
    <div id="unit_system_data">Ex: US </div> 
</div> 
<div id="current_conditions"> 
    <div id="condition_data">Ex: Rain and Snow</div> 
    <div id="temp_c_data">Temperature in Celcius</div> 
    <div id="humidity_data">Humidity</div> 
    <div id="wind_condition_data">ex: SW at 23 km/h</div> 
    <div id="icon">ex: rain.gif</div> 
</div> 
<div id="forecast_conditions"> 
    <div id="day_of_week_data">Ex: Friday</div> 
    <div id="low_data">Temperature in Celcius</div> 
    <div id="high_data">Temperature in Celcius</div> 
    <div id="condition_data">Ex: Rain</div> 
<div id="icon">ex: rain.gif</div> 
</div> 
<div id="forecast_conditions"> 
    <div id="day_of_week_data">Ex: Saturday</div> 
    <div id="low_data">Temperature in Celcius</div> 
    <div id="high_data">Temperature in Celcius</div> 
    <div id="condition_data">Ex: Rain</div> 
<div id="icon">ex: rain.gif</div> 
</div> 
+1

所以,你想將其改造成什麼樣? – lonesomeday 2011-03-11 16:34:19

+1

**你想輸出什麼HTML?** – 2011-03-11 16:34:20

回答

1

這個樣式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="*/*"> 
     <div> 
      <xsl:attribute name="id"> 
       <xsl:apply-templates select="." mode="id"/> 
      </xsl:attribute> 
      <xsl:apply-templates select="node()|@*"/> 
     </div> 
    </xsl:template> 
    <xsl:template match="postal_code|latitude_e6|longitude_e6|temp_f"/> 
    <xsl:template match="*" mode="id"> 
     <xsl:value-of select="concat(name(),'_data')"/> 
    </xsl:template> 
    <xsl:template match="forecast_information|current_conditions| 
         forecast_conditions|icon|forecast_date" mode="id"> 
     <xsl:value-of select="name()"/> 
    </xsl:template> 
</xsl:stylesheet> 

輸出:

<div id="forecast_information"> 
    <div id="city_data">Toronto, ON</div> 
    <div id="postal_code_data">Toronto</div> 
    <div id="latitude_e6_data"></div> 
    <div id="longitude_e6_data"></div> 
    <div id="forecast_date">2011-03-11</div> 
    <div id="current_date_time_data">2011-03-11 15:07:00 +0000</div> 
    <div id="unit_system_data">US</div> 
</div> 
<div id="current_conditions"> 
    <div id="condition_data">Rain and Snow</div> 
    <div id="temp_f_data">36</div> 
    <div id="temp_c_data">2</div> 
    <div id="humidity_data">Humidity: 100%</div> 
    <div id="icon">/ig/images/weather/rain_snow.gif</div> 
    <div id="wind_condition_data">Wind: S at 6 mph</div> 
</div> 
<div id="forecast_conditions"> 
    <div id="day_of_week_data">Fri</div> 
    <div id="low_data">31</div> 
    <div id="high_data">37</div> 
    <div id="icon">/ig/images/weather/rain_snow.gif</div> 
    <div id="condition_data">Rain and Snow</div> 
</div> 
<div id="forecast_conditions"> 
    <div id="day_of_week_data">Sat</div> 
    <div id="low_data">28</div> 
    <div id="high_data">38</div> 
    <div id="icon">/ig/images/weather/rain_snow.gif</div> 
    <div id="condition_data">Rain and Snow</div> 
</div> 
<div id="forecast_conditions"> 
    <div id="day_of_week_data">Sun</div> 
    <div id="low_data">18</div> 
    <div id="high_data">32</div> 
    <div id="icon">/ig/images/weather/snow.gif</div> 
    <div id="condition_data">Snow Showers</div> 
</div> 
<div id="forecast_conditions"> 
    <div id="day_of_week_data">Mon</div> 
    <div id="low_data">23</div> 
    <div id="high_data">32</div> 
    <div id="icon">/ig/images/weather/partly_cloudy.gif</div> 
    <div id="condition_data">Partly Cloudy</div> 
</div> 
+0

@Ajjandro - 這是一流的。非常感謝你 – user546585 2011-03-13 04:57:35

+0

@ user546585:不客氣。 – 2011-03-13 15:08:43

5

這可以用XSLT完成。您可以創建一個XSLT樣式表,根據您創建的規則將您的XML文件轉換爲HTML。請參閱XSLT in PHP

來自實例文檔:

$xslDoc = new DOMDocument(); 
$xslDoc->load("collection.xsl"); 

$xmlDoc = new DOMDocument(); 
$xmlDoc->load("collection.xml"); 

$proc = new XSLTProcessor(); 
$proc->importStylesheet($xslDoc); 
echo $proc->transformToXML($xmlDoc);