编写转换
编写转换
转换指定从数据中抽取什么。用户可以使用适合其项目的任何创作环境和语言。对于XML转换,基于项目的目标和范围选择一种如XSLT、Joost(STX)、Java、Python或者Perl的技术。
在price的例子中,下一步是转换XML数据成一个简单的分隔成两列的格式。
708421|19.99 708466|59.25 711121|24.99
下面的称为input_transform.stx的STX转换完成了这种数据转换。
<?xml version="1.0"?> <stx:transform version="1.0" xmlns:stx="http://stx.sourceforge.net/2002/ns" pass-through="none"> <!-- declare variables --> <stx:variable name="itemnumber"/> <stx:variable name="price"/> <!-- match and output prices as columns delimited by | --> <stx:template match="/prices/pricerecord"> <stx:process-children/> <stx:value-of select="$itemnumber"/> <stx:text>|</stx:text> <stx:value-of select="$price"/> <stx:text> </stx:text> </stx:template> <stx:template match="itemnumber"> <stx:assign name="itemnumber" select="."/> </stx:template> <stx:template match="price"> <stx:assign name="price" select="."/> </stx:template> </stx:transform>
这个STX转换声明了两个临时变量itemnumber和price,以及下列规则。
- 当找到一个满足XPath表达式/prices/pricerecord的元素时,检查子元素并且生成包含itemnumber变量值、一个|字符、price变量值和一个新行的输出。
- 当找到一个<itemnumber>元素时,将那个元素的内容存储在变量itemnumber中。
- 当找到一个 <price> 元素时,将那个元素的内容存储在变量price中。