P
Philippe Poulard
I'm pleased to announce the last release of RefleX, a multi-purpose XML
engine that will allow you to write native XML programs.
http://reflex.gforge.inria.fr/
The engine runs with Java 1.4.2 and above
RefleX works like XSLT, but instead of having a single instruction set,
the system can host severals
You could read the basics here :
http://reflex.gforge.inria.fr/tutorial-basics.html#hello
====== Key features ======
Being a Java programmer, RefleX will help you in many cases !
If your Java applications are producing XML datas, you should to have a
look at XUnit, a tool that works like JUnit for XML ; you can assert
that 2 XML nodes are equals... if there are some differences the error
report will show you the path to the nodes in fault and why they differ.
Example:
http://reflex.gforge.inria.fr/xunit.html#xunitStepByStep
For using XUnit with your Java programs, you can either run your app
then run XUnit to test your data separately, or expose your application
as a runnable tag in RefleX
Browse X-operable objects : you will be able to apply XPath expressions
on non-XML objects such as a file system : for example, "//*" will
select all the files under a context directory
Consider the amount of code you had to produce if you had to write the
same in Java... say that you have to select only files, not directories,
you just have to append a predicate on the XPath expression, like this :
//*[@io:file] now consider again the amount of code you had to update ;
now make it working on http, ftp, zip and others... RefleX can help you !
Example:
http://reflex.gforge.inria.fr/tutorial-basics.html#xslt
Run XML pipelines and filters : usually, your Java program that process
SAX streams are long, hard to code, and hard to update ; this is because
SAX is a very low-level API ; with RefleX, you will be able to apply
XPath patterns on SAX streams and raw-text
Example:
http://reflex.gforge.inria.fr/tutorial-pipelinesAndFilters.html
Leverage your schemas : you will be able to express algorithmic rules
and co-occurrence constraints with the Active Schema Language, and
design a semantic data type
http://reflex.gforge.inria.fr/tutorial-schemas.html
Design macro tags : design your own libraries with XPath functions and
custom active tags ; you can supply their implementation either with a
Java class or with other tags (macros)
Example:
http://reflex.gforge.inria.fr/tutorial-fromSqlToMvc.html
XML configuration file for Java applications : usually, your Java
application will load and unmarshall an XML configuration file, and the
components instanciated from the tags will be assembled definitively ;
With RefleX you could consider another approach : let the engine do the
job for you and assemble them each time the parent component requires to
be invoked ; this way, your application as an assembly of components
would evolve dynamically. When you design an XML configuration file
where tags are mapped to components, consider that you have a
declarative language that you can mix imperative instructions
(if-then-else, for-each, etc) : your markup language will be light and
efficient
Enjoy !
====== RefleX live ======
I will talk next week about all that stuff at Extreme Markup Languages 2007
http://www.extrememarkup.com/2007/abstracts.html#t400r
See you in Montreal !
--
Cordialement,
///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !
engine that will allow you to write native XML programs.
http://reflex.gforge.inria.fr/
The engine runs with Java 1.4.2 and above
RefleX works like XSLT, but instead of having a single instruction set,
the system can host severals
You could read the basics here :
http://reflex.gforge.inria.fr/tutorial-basics.html#hello
====== Key features ======
Being a Java programmer, RefleX will help you in many cases !
If your Java applications are producing XML datas, you should to have a
look at XUnit, a tool that works like JUnit for XML ; you can assert
that 2 XML nodes are equals... if there are some differences the error
report will show you the path to the nodes in fault and why they differ.
Example:
http://reflex.gforge.inria.fr/xunit.html#xunitStepByStep
For using XUnit with your Java programs, you can either run your app
then run XUnit to test your data separately, or expose your application
as a runnable tag in RefleX
Browse X-operable objects : you will be able to apply XPath expressions
on non-XML objects such as a file system : for example, "//*" will
select all the files under a context directory
Consider the amount of code you had to produce if you had to write the
same in Java... say that you have to select only files, not directories,
you just have to append a predicate on the XPath expression, like this :
//*[@io:file] now consider again the amount of code you had to update ;
now make it working on http, ftp, zip and others... RefleX can help you !
Example:
http://reflex.gforge.inria.fr/tutorial-basics.html#xslt
Run XML pipelines and filters : usually, your Java program that process
SAX streams are long, hard to code, and hard to update ; this is because
SAX is a very low-level API ; with RefleX, you will be able to apply
XPath patterns on SAX streams and raw-text
Example:
http://reflex.gforge.inria.fr/tutorial-pipelinesAndFilters.html
Leverage your schemas : you will be able to express algorithmic rules
and co-occurrence constraints with the Active Schema Language, and
design a semantic data type
http://reflex.gforge.inria.fr/tutorial-schemas.html
Design macro tags : design your own libraries with XPath functions and
custom active tags ; you can supply their implementation either with a
Java class or with other tags (macros)
Example:
http://reflex.gforge.inria.fr/tutorial-fromSqlToMvc.html
XML configuration file for Java applications : usually, your Java
application will load and unmarshall an XML configuration file, and the
components instanciated from the tags will be assembled definitively ;
With RefleX you could consider another approach : let the engine do the
job for you and assemble them each time the parent component requires to
be invoked ; this way, your application as an assembly of components
would evolve dynamically. When you design an XML configuration file
where tags are mapped to components, consider that you have a
declarative language that you can mix imperative instructions
(if-then-else, for-each, etc) : your markup language will be light and
efficient
Enjoy !
====== RefleX live ======
I will talk next week about all that stuff at Extreme Markup Languages 2007
http://www.extrememarkup.com/2007/abstracts.html#t400r
See you in Montreal !
--
Cordialement,
///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !