一些罕见的题目
在XML音讯和将要处置惩罚它的应用程序之间,存在着许多种能够须要翻译的处所。然则,这也存在着许多罕见的题目,包含:
查询(Lookup)
映照(Mapping)
聚合(Aggregation)
支解(Splitting)
公式(Formulas)
重排序(Reordering)
查询处置惩罚会接收收到的值,并为目的体系将它映照到差别的值。比方,你的XML有一个值是309,然则应用程序须要的值是“Uber Widget”。
映照在本质上是将来自一个字段的值重新分配为另一个值。比方,在XML里,你能够有一个AccountNumber元素,它须要被重新分配成为一个叫做CustomerAccountNumber的新元素。
聚合处置惩罚是将两个或许更多来自XML的项目组合成一个用于后端体系的单个项目。一个罕见的例子是将姓和名字段组合成单一的姓名(字段)。支解是聚合的逆向操纵,它是将XML的一个值分红两个或许更多离开的组件。
公式处置惩罚平常触及对一个或许更多XML值的盘算,以取得一个用于新应用程序的值。一个例子是应用XML里子定单来盘算定单的总量。
末了,重排序是变动XML里项目的序列或许构造的处置惩罚,如许它们就可以相符目的体系所希冀的序列或许构造。
映照举例
如今让我们用一个例子来越发细致地看看这个历程。我们假定收到的XML就像Listing 1里的一样:
Listing 1: webserviceorder.xml
<?xml version="1.0" ?> <Order> <OrderNumber>8100</OrderNumber> <AccountNumber>99213</AccountNumber> <Item> <SKU>2388</SKU> <Description>Uber Widget</Description> <Quantity>15</Quantity> <PRicePer>10.95</PricePer> </Item> <Item> <SKU>6273</SKU> <Description>Flangeoid</Description> <Quantity>10</Quantity> <PricePer>52.00</PricePer> </Item> </Order>
如今,我们的定单体系须要一个稍有差别的花样。我们所须要做的是将从Web效劳收到的定单转换成为Listing 2里的这类花样。
Listing 2: applicationorder.xml
<?xml version="1.0" encoding="UTF-8" ?> <NeWorder> <CustomerAccountNumber>99213</CustomerAccountNumber> <CustomerOrderNumber>8100</CustomerOrderNumber> <OrderItems> <OrderItem> <SKU>2388</SKU> <CustomerPrice>10.95</CustomerPrice> <Quantity>15</Quantity> <Subtotal>164.25</Subtotal> </OrderItem> <OrderItem> <SKU>6273</SKU> <CustomerPrice>52.00</CustomerPrice> <Quantity>10</Quantity> <Subtotal>520</Subtotal> </OrderItem> </OrderItems> </NewOrder>
翻译
由于这是一个经由简化的例子,所以我们在转换花样的时刻须要对XSL模板所做的只要不多的一些事变。我们要注意的第一件事是:我们必需映照一些元素:
把Order映照成NewOrder
把AccountNumber映照成CustomerAccountNumber
把OrderNumber映照成CustomerOrderNumber
把Item映照成OrderItem
把PricePer映照成CustomerPrice
然后,我们须要将OrderItem元素重新安排到一个叫做OrderItems的新元素之下。末了,我们到场一个叫做Subtotal的新元素,它会依据(商品)单价和数目举行盘算。
映照翻译是最简朴的,由于你只须要简朴地在模板里定义新元素,并指明这个新元素具有来自收到的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>
以上就是用XSL翻译Web效劳应用程序的内容,更多相关内容请关注ki4网(www.ki4.cn)!