编写转换

编写转换

转换指定从数据中抽取什么。用户可以使用适合其项目的任何创作环境和语言。对于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转换声明了两个临时变量itemnumberprice,以及下列规则。

  1. 当找到一个满足XPath表达式/prices/pricerecord的元素时,检查子元素并且生成包含itemnumber变量值、一个|字符、price变量值和一个新行的输出。
  2. 当找到一个<itemnumber>元素时,将那个元素的内容存储在变量itemnumber中。
  3. 当找到一个 <price> 元素时,将那个元素的内容存储在变量price中。