# Examples of using the library

This chapter deals with examples of how to invoke XSLT transformations from within your Eiffel programs. It does not cover writing XSLT programs. For that you should look elsewhere (a good starting point is the XSLT FAQ).

## A Schematron validator

In $GOBO/examples/xml/xslt/schematron , there is a complete example of using the library. This is a command-line validator using the Schematron language. See the readme.txt file for instructions on compiling and using the program.

The creation procedure `make` starts by creating a configuration, and then it sets the recovery policy to recover from recoverable errors without writing any error messages. Because the program uses Eiffel `STRING`s for the result of a transformation (and also for the source of a stylesheet), it next goes on to create a `XM_STRING_URI_RESOLVER`, so that the XML parser can locate the `STRING`s involved.

After processing the command line arguments, it then performs the first stage - a transformation of a Schematron rules file (a schema) into a stylesheet (which will be used to perform the actual validation). This is performed by `transform_schematron_rules`. This is fairly straightforward. The only thing of particular note is that the resulting `STRING` has to be plugged into the resolver, as the XML parser needs to find it in the next stage of the program

At this point, we have the result of `transform_schematron_rules` in a `STRING`. Interestingly, the contents of this `STRING` is another XSLT stylesheet. We now go on to use this stylesheet to perform a transformation against the file which is to be validated. This is done in `create_report`. The interesting code in this case arises if the user has requested output to a file, rather than standard output. Notice that although the program takes filenames (for the convenience of the user), the `transform` feature of `XM_XSLT_TRANSFORMER` takes arguments that require URIs for their creation procedures. This is a requirement of the XSLT specification.

The Schematron validator program writes a report to standard output or to a file, if validation fails. If validation is successful, then no output is produced. This situation could be detected by writing the output to a `STRING` instead, and checking if it's `count` were zero (successful validation), or not (an error report has been produced). So if you wanted to use the XSLT library to perform Schematron validation from within your own programs, then this is how you would do it.

## Gexslt

The Gobo Eiffel XSLT command line processor comes close to being the ultimate example of how to use the XSLT library, in as much as it allows most options to be used. You can see the source in $GOBO/src/gexslt/gexslt.e .