映射翻译是最简单的,因为你只需要简单地在模板里定义新元素,并指明这个新元素拥有来自收到的XML文档里元素的值。对Items的重排序是通过将Item子模板调用放进一个叫做OrderItems的新元素里实现的。最后,使用一个简单的XPath表达式来进行计算。Listing 3显示了用来将收到的XML转换成针对应用程序的XML的XSL文档。
Listing 3: translate.xsl
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="Order" />
</xsl:template>
<xsl:template match="Order">
<NewOrder>
<CustomerAccountNumber><xsl:value-of select="AccountNumber" /></CustomerAccountNumber>
<CustomerOrderNumber><xsl:value-of select="OrderNumber" /></CustomerOrderNumber>
<OrderItems>
<xsl:apply-templates select="Item" />
</OrderItems>
</NewOrder>
</xsl:template>
<xsl:template match="Item">
<OrderItem>
<SKU><xsl:value-of select="SKU" /></SKU>
<CustomerPrice><xsl:value-of select="PricePer" /></CustomerPrice>
<Quantity><xsl:value-of select="Quantity" /></Quantity>
<Subtotal><xsl:value-of select="PricePer * Quantity" /></Subtotal>
</OrderItem>
</xsl:template>
</xsl:stylesheet>