yax - eine XProc (XML Pipeline) Implementierung

Die Dokumentaton befindet sich im Aufbau.

Software und Dokumentation werden unter den Regeln der GNU LGPL LIzenz unter Ausschluss jeglicher Garantien und Gewährleistungen veröffentlicht.

2008-03-03

Revision History

Table of Contents

Was ist yax?
Schnellstart
Ansatz
Leistungsumfang
Status
Referenz
Roadmap
Beispiele
Tutorial
Links
Rechtlicher Rahmen
Powered by

yax ist eine Java Implementiierung der XProc Spezifikation, einer XML Pipeline Sprache (XProc: An XML Pipeline Language W3C Working Draft 17 November 2006), mit der XProc Skripte wie das folgende verarbeitet werden können.

<?xml version="1.0" encoding="UTF-8"?>
<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT" 
      yax:description="transforms 'a*' elements to 'b*' elmenents.">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:step name="trans2" type="xproc:XSLT" 
      yax:description="transforms 'b*' elements to 'c*' elmenents.">
      <xproc:input port="stylesheet" href="test/transformation2.xsl"/>
      <xproc:parameter name="transformer" value="Saxon6" /> 
   </xproc:step>
   <xproc:step name="trans3" type="xproc:XSLT" 
      yax:description="transforms 'c*' elements to 'd*' elmenents.">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
      <xproc:parameter name="transformer" value="XSLTC" /> 
   </xproc:step>
</xproc:pipeline>

            

Folgende Software muss verfügbar (installiert) sein:

Laden Sie yax http://yax.sourceforge.net (hier der Menüpunkt 'download') herunter und entpacken Sie die Datei in ein beliebiges <yax-installation-directory>.

# java -classpath lib/yax-0.7.jar net.sf.yax.Yax examples/example1.xproc examples/example1.xml 
         
            
default transformer is set to system transformer.
automaticOutput of pipe trace is set to 'yes'.
automaticOutput of port trace is set to 'yes'.
suppress of process is set to 'no'.
step 'trans1': transformer Apache Software Foundation (Xalan XSLTC)(Version 1.0) is used.
step 'trans2': transformer Apache Software Foundation (Xalan XSLTC)(Version 1.0) is used.
step 'trans3': transformer Apache Software Foundation (Xalan XSLTC)(Version 1.0) is used.
Yax run sucessful completed.
                        
         

Der Kerngedanke von yax ...ToDo

<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:step name="validate1" type="xproc:Validate"/> 
   <xproc:step name="trans2" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
   </xproc:step>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
   </xproc:step>
   <xproc:step name="validate2" type="xproc:Validate"/> 
</xproc:pipeline>
         


   <xproc:pipeline name="pipe1" 
      xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
      xmlns:yax="http://opsdesign.eu/yax/1.0">
      <xproc:step name="trans1" type="xproc:XSLT">
         <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
      </xproc:step>
      <xproc:step name="trans2" type="xproc:XSLT">
         <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
      </xproc:step>
      <xproc:choose name="choose1">
         <xproc:when name="choose1when1">
            <xproc:step name="trans3.1.1" type="xproc:XSLT">
               <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
            </xproc:step>
            <xproc:step name="trans3.1.2" type="xproc:XSLT">
               <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
            </xproc:step>
         </xproc:when>
         <xproc:when name="choose1when2">
            <xproc:step name="trans3.2.1" type="xproc:XSLT">
               <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
            </xproc:step>
            <xproc:step name="trans3.2.2" type="xproc:XSLT">
               <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
            </xproc:step>
         </xproc:when>
         <xproc:otherwise name="choose1otherwise">
            <xproc:step name="trans3.9.1" type="xproc:XSLT">
               <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
            </xproc:step>
            <xproc:step name="trans3.9.2" type="xproc:XSLT">
               <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
            </xproc:step>
         </xproc:otherwise>
      </xproc:choose>
      <xproc:step name="trans4" type="xproc:XSLT">
         <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
      </xproc:step>
   </xproc:pipeline>            
            
         

<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:step name="trans2" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
   </xproc:step>
   <xproc:step name="store1" type="xproc:Store"/>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
   </xproc:step>
   <xproc:step name="trans4" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
   </xproc:step>
</xproc:pipeline>
            
         

            
<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:step name="trans2" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
   </xproc:step>
   <xproc:step name="load1" type="xproc:Load"/>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
   </xproc:step>
   <xproc:step name="trans4" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
   </xproc:step>
</xproc:pipeline>
            
         

<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:step name="trans2" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
   </xproc:step>
   <xproc:step name="load1" type="xproc:Load"/>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
   </xproc:step>
   <xproc:step name="trans4" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation4.xsl"/> 
      <xproc:input port="in" step="trans2" source="out"/> 
   </xproc:step>
</xproc:pipeline>
            
         

offene Punkte zur Spezifikation



Folgende Software muss an einem frei wählbaren Ort verfügbar (installiert) sein:

Table 3.  Notwendige Packages

Package

Nutzung

Java (Version 5 or above)

Since Version 1.4 Java contains a default transformation processor (XSLTC). This processor will be used if no other processors are visible (in the classpath). yax assumes the presence of this processor. So at least Java 1.4 is necessary for using yax. As yas is developed under Java 5 it is the recommended Java version.

Ant(Version 1.7.0 or above)

yax comes with an ant task, so you can use yax also under ant. An ant installation is only needed if you want to use the yax ant task.

Log4j(Version 1.2.14 or above)

log4j is the recommended logging system. If log4j is not installed (resp. not reachable) yax uses its own ConsoleLogger. If you yax only under ant from yax perspective a log4j installation is not necessary because all log messages will be redirected to the ant logger.

Saxon(xls1: Version 6.5.3 or above, xls2: Version 8.6. or above)

yax provides the usage of different XSL processors. The saxon processors builds the preferred test environment for the yax development. (Obviously you can use any xsl processor which is reachable vie JAXP). The preferences file still includes the Saxon processors. If you want to use it follow Saxonias instruction how to obtain and install them. If no xsl processor is installed yax uses the system default transformer which comes with JRE (XSLTC).

Xalan /(XSLTC)(Version 2.7.0 or above)

yax provides the usage of different XSL processors. Xalan comes from Apache. The preferences file still includes the Xalan and the XSLTC processor. If you want to use them follow Apaches instruction how to obtain and install them. If no xsl processor is installed yax uses the system default transformer which comes with JRE (XSLTC).

Graphviz - Graph Visualization Software


Laden Sie yax http://yax.sourceforge.net (hier der Menüpunkt 'download') herunter und entpacken Sie die Datei in ein beliebiges <yax-installation-directory>.

Feel free to place yax-*.jar files somewhere in your system and make it/them accessable by the right classpath entry. But at least keep a copy of the main jar file within the <yax-installation-directory>/lib for retrieving the implemented components. The minimal installation can be:


<yax-installation-directory>/lib
|
+--- lib
     |
     +--- yax-<n.m>.jar (<n.m> = Version Number)
         

An XML catalog maps (usually remote) URIs to other (usually local) URIs.

yax uses Norman Walsh's resolver. You can configure the resolver - especially the link to your catalog file - by editing the config/CatalogManager.properties file. How to configure the the resolver is explained in an excellent manner on the resolver's site

For your confinience the yax distribution contains the recent resolver library (lib/resolver.jar). If you want to use the xml catalog feature the config directory and the resolver.jar have to be part of your the classpath. Start yax with the '-noCatalog' option If you want to suppress the xml catalog usage.

All I/O effects by start parameters (or other interface input) is called outer I/O.

Nur den Startparameter für die Eingabe-Datei Lokation übergeben. The most simple variant of an outer I/O is to use an input location parameter beside the mandatory xproc script location parameter:

java -classpath lib/yax-0.8.jar net.sf.yax.Yax examples/example1.xproc examples/example1.xml
              

yax completes the necessary information based on the input location. Assuming you pass the input file

path/to/input/resource/inputname.xml                   
              

derived from that input location yax generates the output location:

path/to/input/resource/inputname.output.xml                   
              

Startparameter für die Eingabe- und die Ausgabe-Datei Lokation übergeben. The straight forward way of outer I/O is to pass an input location parameter and a corresponding output location parameter:

java -classpath lib/yax-0.8.jar net.sf.yax.Yax examples/example1.xproc 
input/inputname.xml
output/outputname.xml
              

In that case the processing is obvious. yax takes the input document, passes it through the pipeline and writes the result to the ouput document.

Das XProc Skript auf mehrere Eingabe-Dokumente anwenden. yax can also process multiple input documents in one run. For applying this feature it is recommended to use ant because in ant you can use the full flexibility of the fileset feature. Example:

...
  <target 
    name="pipeline1"
    description="uses different multiple input files"
    >
    <yax 
      verbose="yes"
      script="test/pipeline00.xproc"
      outDir="test"
      outPattern="${inputName}.out.${inputExtension}"
      >
      
      <fileset 
        dir="examples" 
        includes="
        example*.xml
        " 
        excludes="
        example2.xml
        " 
      />
      
    </yax>
  </target>
...              
              

Alltough you can you this feature in commmandline mode. You pass a colon separated input file list with the -inList parameter:

java -classpath lib/yax-0.8.jar net.sf.yax.Yax examples/example1.xproc 
-inList={input/inputname1.xml;input/inputname1.xml}
outDir=test outPattern="${inputName}.out.${inputExtension}
              

In case of processing multiple input documents it is not possible (or better makes no sense) to pass an output location for each input document. Therefore yax provides to other parameter for determining the output location(s).

With -outDir you can choose an arbitrary output directory>. If you this parameter as the only output parameter the processed documents will be written to the output directory with its input filename.

The other parameter is the -outPattern parameter. With -outPattern you describes the pattern for building the output file name. Example:

Assuming you are using the pattern:

outPattern="${inputName}.out.${inputExtension}              
              

and you are processing the input files example1.xml and example3.xml by using ant's fileset

...
<fileset 
  dir="examples" 
  includes="
  example*.xml
  " 
  excludes="
  example2.xml
  " 
/>
...              
              

yax will created the two file:

...
 examples
 |
 +-- example1.out.xml
     example2.out.xml
       
              

If you combine this parameter with the -outDir parameter determining the 'test' directory as output directory:

...

outDir="test"
outPattern="${inputName}.out.${inputExtension}"

...              
              

yax writes the two files to the 'test' directory:

...

 test

 |
 +-- example1.out.xml
     example2.out.xml
              

Beside the outer I/O which is effected by the usage of start parameters you can use the steps p:Load and p:Store to read resp. write xml documents during the pipeline process.

Although they are alternative instruments outer I/O and inner I/O they work simultaniously. If you process for example a pipeline which includes inner I/O without any output start parameter:

...              
<target 
  name="runExample5.1"
  description="uses inner and outer I/O"
  >
  <yax 
    script="examples/example5.xproc"
    >
    ...  
  </yax>
</target>
...
              

You will get two times the same output in different files:

...
INFO [Load:Load1] Reading input file '...\examples\xincludeArticle.xml' into Context '2'.
...
INFO [Store:Store1] Writing output file '...\test\example5.output.cmd.xml' from Context '2'.
...
INFO [root:yax.root] Writing output file '...\yaxOutput.xml' from Context '2'.
...
              

This is triggered by a)p:Store step and b) the automatic ouput determination of the root element. The following graphic shows this circumstance:


The p:Store step creates a side branch but yax ports the content through the hole pipeline to the root container which is manages the outer I/O.

To avoid such undesired output behaviour (assuming in this case the outer output is undesired) you can use the -noOutputfile parameter:

...              
<target 
  name="runExample5.2"
  description="uses only inner I/O"
  >
  <yax 
    noOutputfile="yes" 
    script="examples/example5.xproc"
    >
    ...  
  </yax>
</target>
...
              

In this case the content on the output port of root will be discarded.

<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:step name="validate1" type="xproc:Validate"/> 
   <xproc:step name="trans2" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
   </xproc:step>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
   </xproc:step>
   <xproc:step name="validate2" type="xproc:Validate"/> 
</xproc:pipeline>
           

<xproc:pipeline name="pipe1" 
    xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
    xmlns:yax="http://opsdesign.eu/yax/1.0">
</xproc:pipeline>
            
            

            
...
Construct 'pipe1' is empty and will be bridged.
...
            
            
            
<xproc:pipeline name="pipe1" 
    xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
    xmlns:yax="http://opsdesign.eu/yax/1.0">
    <xproc:pipeline name="pipe1.1">
        <xproc:step name="step1" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="examples/transformation1.xsl"/>
        </xproc:step>
        <xproc:pipeline name="pipe1.1.1">
            <xproc:step name="step1" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation2.xsl"/>
            </xproc:step>
            <xproc:pipeline name="pipe1.1.1.1">
                <xproc:step name="step1" type="xproc:XSLT">
                    <xproc:input port="stylesheet" href="examples/transformation3.xsl"/>
                </xproc:step>
            </xproc:pipeline>
        </xproc:pipeline>
    </xproc:pipeline>
</xproc:pipeline>
            
            
            

               
<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:choose name="choose1" type="xproc:XSLT">
      <xproc:input port="ref" href="test/chooseInput0.xml"/>
      <xproc:when name="when1" test="/test1">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:when>
      <xproc:when name="when2" test="/test2">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>            
      </xproc:when>
      <xproc:otherwise name="otherwise">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:otherwise>
   </xproc:choose>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
   </xproc:step>
</xproc:pipeline>
                                             
            


               
            
               
<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:choose name="choose1" type="xproc:XSLT">
      <xproc:when name="when1" test="/test1">
         <xproc:input port="ref" href="test/chooseInput1.xml"/>
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:when>
      <xproc:when name="when2" test="/test2">
         <xproc:input port="ref" href="test/chooseInput2.xml"/>
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>            
      </xproc:when>
      <xproc:otherwise name="otherwise">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:otherwise>
   </xproc:choose>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
   </xproc:step>
</xproc:pipeline>
                                             
            

               
<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
   </xproc:step>
   <xproc:choose name="choose1" type="xproc:XSLT">
      <xproc:input port="ref" href="test/chooseInput0.xml"/>
      <xproc:when name="when1" test="/test1">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:when>
      <xproc:when name="when2" test="/test2">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>            
      </xproc:when>
      <xproc:otherwise name="otherwise">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:otherwise>
   </xproc:choose>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
   </xproc:step>
</xproc:pipeline>
                                             
            


construct 'when1': reference port not found.
               
            
               
<xproc:pipeline name="pipe1" 
   xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
   xmlns:yax="http://opsdesign.eu/yax/1.0">
   <xproc:step name="trans1" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation1.xsl"/> 
   </xproc:step>
   <xproc:choose name="choose1" type="xproc:XSLT">
      <xproc:input port="ref" href="test/chooseInput0.xml"/>
      <xproc:when name="when1" test="/test1">
         <xproc:input port="ref" href="test/chooseInput1.xml"/>
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:when>
      <xproc:when name="when2" test="/test2">
         <xproc:input port="ref" href="test/chooseInput2.xml"/>
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>            
      </xproc:when>
      <xproc:otherwise name="otherwise">
         <xproc:step name="trans2" type="xproc:XSLT">
            <xproc:input port="stylesheet" href="test/transformation2.xsl"/> 
         </xproc:step>
      </xproc:otherwise>
   </xproc:choose>
   <xproc:step name="trans3" type="xproc:XSLT">
      <xproc:input port="stylesheet" href="test/transformation3.xsl"/> 
   </xproc:step>
</xproc:pipeline>
                                             
            



            

<xproc:pipeline name="pipe1" 
    xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
    xmlns:yax="http://opsdesign.eu/yax/1.0">
    <xproc:try name="try1">
        <xproc:group name="group1">
            <xproc:step name="group1step1" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation2.xsl"/>
            </xproc:step>
        </xproc:group>
        <xproc:catch name="catch">
            <xproc:step name="catchstep2" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation1.xsl"/>
            </xproc:step>
        </xproc:catch>
    </xproc:try>
</xproc:pipeline>
                                             
                  


<xproc:pipeline name="pipe1" 
    xmlns:xproc="http://www.w3.org/TR/2006/xproc/1.0"
    xmlns:yax="http://opsdesign.eu/yax/1.0">
    <xproc:try name="try1">
        <xproc:group name="group1">
            <xproc:step name="group1step1" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation2.xsl"/>
            </xproc:step>
        </xproc:group>
        <xproc:catch name="catch1" exception="EmptyResult">
            <xproc:step name="catch1step2" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation1.xsl"/>
            </xproc:step>
        </xproc:catch>
        <xproc:catch name="catch2" exception="FileNotFound">
            <xproc:step name="catch2step2" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation1.xsl"/>
            </xproc:step>
        </xproc:catch>
        <xproc:catch name="catch">
            <xproc:step name="catchstep2" type="xproc:XSLT">
                <xproc:input port="stylesheet" href="examples/transformation1.xsl"/>
            </xproc:step>
        </xproc:catch>
    </xproc:try>
</xproc:pipeline>
                                             
                  

Beschreibung ToDo

This is an example with real data coming from the docbook.sml project. It collects all sections distributed over several files into the output file. Start yax with:

# java -classpath lib/yax-0.7.jar 
       net.sf.yax.Yax 
       -Dparam1=passedFromProgramStart 
       example7.xproc
       examples/xincludeArticle.xml
       test/output1.xml
         

Beschreibung ToDo

Software und Dokumenation wird unter den Bedingungen der GNU LGPL Lizenz (see http://www.gnu.org/copyleft/lesser.html) unter Ausschluss jeglicher Garantien und Gewährleistungen veröffentlicht.

Copyright © 2006 - 2008 joerg.moebius@opsdesign.de

sourceforge logo

sourceforge logo

sourceforge logo

sourceforge logo