我必须从我已经完成的XML文件中创建一个XSLT,但我不知道是否有更好的方法可以更自动地完成我所做的那样。
这是我的解决方案:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited by XMLSpy -->
<onlinecomputer>
<item name="Processor" price="100.00"/>
<item name="USB driver" price="50.00"/>
<item name="Webcam" price="20.50"/>
<item name="Notebook" price="700.00"/>
<place>
<name>Prishtin</name>
<customer>
<name>Hana</name>
<street> Nen Tereza</street>
<order item="Processor" amount="1"/>
<order item="USB driver" amount="3"/>
<order item="Webcam" amount="3"/>
<order item="Notebook" amount="2"/>
</customer>
<customer>
<name>Ron</name>
<street> blbl</street>
<order item="Webcam" amount="1"/>
</customer>
</place>
<place>
<name>Tetove</name>
<customer>
<name>Edin</name>
<street> gggg</street>
<order item="Processor" amount="4"/>
<order item="Notebook" amount="1"/>
</customer>
<customer>
<name>Alex</name>
<street> bbbb</street>
<order item="Processor" amount="2"/>
</customer>
</place>
</onlinecomputer>
XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr bgcolor="#9acd32">
<th>Name</th>
<th>City</th>
<th>Order</th>
</tr>
<xsl:for-each select="onlinecomputer/place/customer/order">
<tr>
<td><xsl:value-of select="../name"/></td>
<td><xsl:value-of select="../../name"/></td>
<td><xsl:value-of select="@item"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
如果有人可以帮助我,请这样做,因为明天我需要它。
答案 0 :(得分:1)
你的方式很好。但是,还有另一种称为“简化样式表”的方法,您无需声明样式表或模板:
<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="2.0">
<body>
<table border="1">
<tr bgcolor="#9acd32">
<th>Name</th>
<th>City</th>
<th>Order</th>
</tr>
<xsl:for-each select="
onlinecomputer/place/customer/order">
<tr>
<td>
<xsl:value-of select="../name"/>
</td>
<td>
<xsl:value-of select="../../name"/>
</td>
<td>
<xsl:value-of select="@item"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>