Как преобразовать XML в таблицу HTML?

Как я могу это сделать (используя PHP предпочтительно):

<bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> 

Для этого (представьте, что это настоящая таблица HTML, мне еще не разрешено размещать изображения):

 |bookstore|book| title | author |year|price| | | |Everyday Italian|Giada De Laurentiis|2005|30.00| | | |Learning XML |Erik T. Ray |2003|39.95| 

Обратите внимание, что все узлы перечислены, но записываются только те значения, которые имеют значение. Это похоже на преобразование XML в полную «плоскую» таблицу, если вы понимаете, что я имею в виду.

Если вам не нужно манипулировать данными и просто нужно представить его, вы можете сделать XSLT

 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <table> <tr> <th>Bookstore</th> <th>Book</th> <th>title</th> <th>author</th> <th>year</th> <th>price</th> </tr> <xsl:for-each select="bookstore/book"> <tr> <td></td> <td></td> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="author"/></td> <td><xsl:value-of select="year"/></td> <td><xsl:value-of select="price"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> 

Вы можете использовать php XSLT-процессор для генерации html или просто ссылки на XSLT непосредственно в xml. Например, если вы связываете его так:

 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="bookstore.xsl"?> <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> 

Это то, что будет отображаться в веб-браузере:

 <html> <body> <table> <tbody> <tr> <th>Bookstore</th> <th>Book</th> <th>title</th> <th>author</th> <th>year</th> <th>price</th> </tr> <tr> <td></td> <td></td> <td>Everyday Italian</td> <td>Giada De Laurentiis</td> <td>2005</td> <td>30.00</td> </tr> <tr> <td></td> <td></td> <td>Learning XML</td> <td>Erik T. Ray</td> <td>2003</td> <td>39.95</td> </tr> </tbody> </table> </body> </html>