| --- |
| title: Write a Transform |
| --- |
| |
| The transform specifies what to extract from the data.You can use any authoring environment and language appropriate for your project. For XML transformations, choose a technology such as XSLT, Joost (STX), Java, Python, or Perl, based on the goals and scope of the project. |
| |
| In the price example, the next step is to transform the XML data into a simple two-column delimited format. |
| |
| ``` pre |
| 708421|19.99 |
| 708466|59.25 |
| 711121|24.99 |
| ``` |
| |
| The following STX transform, called *input\_transform.stx*, completes the data transformation. |
| |
| ``` pre |
| <?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> |
| ``` |
| |
| This STX transform declares two temporary variables, `itemnumber` and `price`, and the following rules. |
| |
| 1. When an element that satisfies the XPath expression `/prices/pricerecord` is found, examine the child elements and generate output that contains the value of the `itemnumber` variable, a `|` character, the value of the price variable, and a newline. |
| 2. When an `<itemnumber>` element is found, store the content of that element in the variable `itemnumber`. |
| 3. When a <price> element is found, store the content of that element in the variable `price`. |
| |
| |