编写转换

转换指定从数据中抽取什么。用户可以使用适合其项目的任何创作环境和语言。对于XML转换,基于项目的目标和范围选择一种如XSLT、Joost(STX)、Java、Python或者Perl的技术。

在price的例子中,下一步是转换XML数据成一个简单的分隔成两列的格式。

  1. 708421|19.99
  2. 708466|59.25
  3. 711121|24.99

下面的称为input_transform.stx的STX转换完成了这种数据转换。

  1. <?xml version="1.0"?>
  2. <stx:transform version="1.0"
  3. xmlns:stx="http://stx.sourceforge.net/2002/ns"
  4. pass-through="none">
  5. <!-- declare variables -->
  6. <stx:variable name="itemnumber"/>
  7. <stx:variable name="price"/>
  8. <!-- match and output prices as columns delimited by | -->
  9. <stx:template match="/prices/pricerecord">
  10. <stx:process-children/>
  11. <stx:value-of select="$itemnumber"/>
  12. <stx:text>|</stx:text>
  13. <stx:value-of select="$price"/> <stx:text>
  14. </stx:text>
  15. </stx:template>
  16. <stx:template match="itemnumber">
  17. <stx:assign name="itemnumber" select="."/>
  18. </stx:template>
  19. <stx:template match="price">
  20. <stx:assign name="price" select="."/>
  21. </stx:template>
  22. </stx:transform>

这个STX转换声明了两个临时变量itemnumber和price,以及下列规则。

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

上级主题: 转换XML数据