<html>
<head></head>
<body bgcolor=#ffffff>
<hr>

<center><h3>Xalan/XSLTC Applet Demo</h3></center>
Each of these examples illustrate the use of translets
within a Java applet:
<p>

  <script language="JavaScript">

    function run_transform(form) {
      /* Get the input document and translet class name from input form */
      var translet = form.translet;
      var document = form.document;

      /* Get the frame to output to */
      var output_frame = parent.frames.demo_output.document;

      /* Display the output in this frame */
      output_frame.clear();
      output_frame.writeln(document.TransformApplet.transform(translet, document));
      output_frame.close();
      return(true);
    }

  </script>

  <form name="xslt_form" onSubmit="run_transform(this.form)">
    <p>Select translet:</p>
    <p><input name="translet" width="64"></p>
    <p>Select XML source document:</p>
    <p><input name="document" width="64"></p>
    <p><input type="button" value="Run" onClick="run_transform(this.form)"></p>

  </form>

  <!--
    The xsltc.jar file must contain the XSLTC runtime classes and your
    pre-compiled translets, as described in the README.applet file.
  -->
  <applet archive="xsltc.jar"
          code="TransformApplet"
          name="TransformApplet"
          width="10"
          height="10">
  </applet>

</body>
