我是XML和XSL的新手,遇到了麻烦。我已经浏览了互联网并尝试了几乎所有我看到的东西,但我无法让它发挥作用。我需要的是输出地址是送货地址的所有人的姓名。
这是XML:
<?xml version="1.0"?>
<PurchaseOrders>
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
<Street>123 Maple Street</Street>
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
</Address>
</PurchaseOrder>
<PurchaseOrder PurchaseOrderNumber="99505" OrderDate="1999-10-22">
<Address Type="Shipping">
<Name>Cristian Osorio</Name>
<Street>456 Main Street</Street>
</Address>
<Address Type="Billing">
<Name>Cristian Osorio</Name>
<Street>456 Main Street</Street>
</Address>
</PurchaseOrder>
这是我的xml到目前为止 - 请记住我不知道我在做什么! :):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>Customer Info</title>
</head>
<body>
<table border="1">
<thead>
<tr bgcolor="yellow">
<th>Customer</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates />
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="PurchaseOrder">
<tr>
<xsl:for-each select="Address">
<xsl:value-of select=" .[@Type="Shipping">
<td>
<xsl:value-of select="Name" />
</td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
我已尝试过从if语句到更改代码的所有内容,但似乎没有任何效果。
感谢您的帮助!
答案 0 :(得分:0)
以这种方式试试吗?
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PurchaseOrders">
<html>
<head>
<title>Customer Info</title>
</head>
<body>
<table border="1">
<thead>
<tr bgcolor="yellow">
<th>Customer</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="PurchaseOrder/Address[@Type='Shipping']"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="Address">
<tr>
<td>
<xsl:value-of select="Name" />
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
请注意使用xsl:apply-templates
完成的过滤;这消除了以后对条件的需要。