编写转换
转换指定从数据中抽取什么。用户可以使用适合其项目的任何创作环境和语言。对于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中。 - 当找到一个
元素时,将那个元素的内容存储在变量price中。
上级主题: 转换XML数据