Home  » Software  » XJR
XJR™ 1.0 SDK
XJR™ is a suite of powerful component based C++ libraries providing components for XML, XPath 2.0, XSLT 2.0, JSON, Regular Expressions and an XML based Rule Engine.
XJR™ is cross platform and supported on Windows™ | Linux™ | Solaris™ (Sparc/x86)
Have pre-sales questions? Ask Our Sales Team and get them answered.
The XJR™ SDK is suite of C++ based component libraries (DLLs) that provide XML (SAX2 and DOM), XPath 2.0, JSON, XSLT 2.0, Regular Expressions (Unix and PCRE) and a powerful XML based Rule Engine.
You can read more in depth information about some of XJR™'s powerful features in these articles:

XML

XJR™ provides both a streaming SAX2-like interface as well as a tree based DOM interface API. These parsers are non-validating and have full namespace support.

XSLT 2.0 and XPath 2.0

Release 2.0 of XSLT and XPath add powerful new features to these languages, making them more efficient, more powerful, and more flexible than version 1.0. In addition to XML, our XSLT and XPath components also support JSON encoded data, enabling powerful and easy transformations of JSON data via XSLT. See the article <xsl:output method="json" /> for more details on JSON and our XSLT parser.

JSON

JSON is a lightweight data interchange format that is very popular for use in web-based AJAX applications. Its popularity is growing in many other data interchange applications as a lighter weight alternative to XML. P6R's JSON parser provides a familiar streaming SAX2-like interface and excellent integration with other XJR™ components such as DOM, XSLT, XPath and our Rule Engine.

Rule Engine

A rule engine is a system for applying rules to a set of data and then taking action on the data or the system. Typically, rule engines are used to separate (externalize) business logic from the system so that that the often changing rules can be maintained separately from the code. In this way the behavior of the system can be altered without any changes to the code or the need to recompile and or redeploy the software.
P6R's Rule Engine component provides a very powerful XML based language for defining rules and is able to make use of everything available in the XPath 2.0 expression language for processing rules.

Regular Expressions

The Regualar Expression component provided with XJR™ provides interfaces for operations on both narrow and wide character data. It supports both Perl Compatible and Egrep flavors of regular expressions, allows you to precompile the regular expressions for greater performance and has very robust debug tracing to allow you to easily ensure your regex's are working properly and quickly get to the root of issues when they are not.

Supported Platforms

XJR™ is currently supported on the following platforms:

  • Windows Vista (32bit), Windows 7 (32bit), Windows Server 2003 (32bit), Windows Server 2008R2 (32bit)
  • Linux x86 Kernel 2.6 (32bit)
  • Solaris 10 x86 (32bit), Solaris 10 Sparc (32bit)

64bit support is planned for a future release.
The XJR™ SDK includes components that provide APIs for XML, XPath 2.0, XSLT 2.0, JSON, Regular Expressions and a powerful XML based Rule Engine.

XML Parser (familiar SAX2-like interface/DOM/XPath)

SAX2 is a popular Java API for XML. With minor modifications to better support the C++ programming language and to have a small memory foot print, P6R's XML parser API is very close to the SAX2 standard. Full namespace support is provided in this non-validating parser. In addition to the SAX2 parser, we also have a full DOM XML parser. This parser has a traditional API that allows walking up and down the generated tree. An XPath 2.0 interface is also provided which allows expressions to be written to select a subset of tree nodes returned via an enumerator. Regular expressions can also be used with XPath.

XPath 2.0

XPath 2.0 is an expression language that accesses elements in a DOM XML tree. Version 2.0 is a significant increase in functionality from its previous version. Xpath is classified as an "embeddable" language in that it is embedded inside other scripting languages (e.g., XSLT). However, our version of XPath can used by itself as well as embedded into any application that uses an XML based scripting language (like our Rule Engine). We have also added several very useful extensions to XPath which you can learn more about here.

XSLT 2.0

XSLT is an extremely powerful language that is used to transform XML into other text based formats. Our XSLT processor implements version 2.0 of the XSLT standard, providing the most up to date features and also includes regex capabilities. Our XSLT engine also provides several extensions which can learn more about here.

JSON Parser

Our JSON parser uses a streaming, SAX-like API. The parser integrates with our XML DOM tree component, allowing all of our powerful XML components (like our DOM component, XPath 2.0, XSLT 2.0 and our Rule Engine) to use and manipulate JSON orignated data. Learn more in this article titled "XSLT and XPath for JSON".

Regular Expressions (Perl and egrep compatible)

Both wide and narrow Perl compatible regular expression engine. We built our own regex engine that matches all of Perl's and Egrep's syntax and functionality. We did not stop there. We have made several improvements and have provided a hybrid-NFA DFA implementation. Our regular expressions provide an object API, which means you compile a regex once and can use it multiple times greatly enhancing performance. We also have provided 2 levels of debug tracing so you can check to see if the regex you defined is working as you expected. We wrote this tracing for ourselves and liked it so much we knew that other developers would want it. To round things out, we've also added a Perl-like split() and explode() functions as well.

Rule Engine

Our Rule Engine uses rules which are defined in XML and makes use of the XPath 2.0 embedded language for its expression language. Our XPath enabled rule engine implements forward chaining and represents all "facts" in a DOM XML tree (i.e., both stated and inferred facts). Since our DOM component supports both XML and JSON, the fact tree is supported as either XML or JSON as well. The Rule Engine is an interpreter of the XML based rule language we have defined.
Give us your feedback and help shape future versions of XJR™. Below are some ideas we are currently considering for future versions. If you would like to make new suggestions, vote, or view the complete list, please go to the Feedback area of our support site. You will need to create an account to participate. We greatly appreciate your feedback!
  • JsonML (http://www.jsonml.org) support (both parsing and generation).
  • Schema support in DOM, XPath, and XSLT components.
  • URL resolver for URIs to nested templates in XSLT.

Licensing and Upgrades


Our "Develop Anywhere / Deploy Anywhere"™ License Highlights

  • Royalty free runtime. The DLLs can be redistributed royalty free with all your applications on any supported platforms.
  • One software license is required per developer. A developer can install the software on as many computers (on any supported platforms) as they like for their own use (eg. work desktop, laptop, etc).
  • One license covers all platforms. No need to purchace a license for each platform.
  • Includes 1 year of support and upgrade maintenance (support through our Helpdesk)
Our products and this license are designed to allow developers to write code on the platform of their choice, and to deploy their software on any platform or platforms that we support.
P6R Software Library License Agreement v1.0

PLEASE READ THIS SOFTWARE LICENSE AGREEMENT CAREFULLY BEFORE  
DOWNLOADING OR USING THE SOFTWARE.

BY DOWNLOADING, INSTALLING, COPYING, CLICKING ON THE "I ACCEPT  
THE AGREEMENT" BUTTON DURING INSTALLATION, OR OTHERWISE USING  
THE SOFTWARE, YOU ARE CONSENTING TO BE BOUND BY THIS AGREEMENT.
IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, CLICK 
THE "I DO NOT ACCEPT THE AGREEMENT" BUTTON AND THE INSTALLATION 
PROCESS WILL NOT CONTINUE.  DESTROY ALL COPIES OF THE SOFTWARE 
(INCLUDING THE ORIGINAL) PROVIDED TO THE LICENSEE AND CONTACT P6R 
INC, FOR A FULL REFUND, OR DO NOT DOWNLOAD THE PRODUCT.

1. Definitions

a) "Software" is defined as all materials in the 
product distribution, including, but not limited to: 
documentation, source code, header files, dynamic-link libraries, 
shared libraries, static libraries, object code, makefiles, 
scripts, example source code, and license files.

b) "Redistributable Software" are files listed in the redist.txt        
file included with the Software  The files listed in 
redist.txt comprise the runtime components necessary to deploy  
applications built with the Software into an end user environment.

c) "Licensee" shall refer to the individual licensee, either 
individual programmer or company or other organization.

d) "Documentation" is any explanatory written material included 
with the Software or available on P6R Inc's website in relation 
to the Software.


2. General

The Software is owned by P6R, Inc. and is protected under US  
copyright laws and international treaties. The Software is 
licensed not sold, and P6R, Inc. reserves all rights not 
expressly granted to the Licensee in this Agreement.


3. License.

a) Per-Developer License. 
Subject to payment of the fee required for the license and the 
terms and conditions set forth in this Agreement, P6R, Inc. hereby  
grants to Licensee a perpetual, non-exclusive, non-transferable,  
limited worldwide license (a) for one developer to install the 
Software on an unlimited number of computers, provided that the 
Licensee is the only individual using the Software and only one 
copy of the Software is in use at any one time, and (b)	to use 
the Documentation (on and off-line) and examples.

b) Automated Machine License
In addition, the Software may be installed on an unlimited number 
of computers owned by the Licensee for the purpose of automated 
builds.

c) Royalty Free Runtime Redistribution
In addition to the license granted in section 3a "Per-Developer
License" to Licensees who have paid the appropriate license
fee to P6R, Inc., such Licensees are also granted the 
right to reproduce and redistribute the Redistributable
Software for any number of applications to any number of end 
users as well as Licensee's authorized distributers, worldwide,
on a royalty-free basis.

d) Example Code License
In addition, P6R, Inc. hereby grants to Licensee a perpetual, 
non-exclusive, non-transferable, limited worldwide license
to use, modify, and redistribute the example code only when 
incorporated into the Licensee's product(s) in binary form.

4. License Restrictions

a) Licensee may not reverse engineer, decompile, or disassemble, 
any binary form of any portion of the Software.

b) Licensee can not transfer, rent, lease, or sublicense the  
Software, or any portions thereof.

c) Licensee can not change or remove the copyright notice from  
any of the files included in the Software.

d) Licensee may only distribute the Redistributable Software as 
part of a software application produced by the Licensee that adds 
significant primary functionality to the Redistributable
Software. LICENSEE MAY NOT, UNDER ANY CIRCUMSTANCES, DISTRIBUTE 
THE SOFTWARE AS PART OF A PRODUCT WHICH CONTAINS THE SAME, OR 
SUBSTANTIALLY THE SAME, FUNCTIONALITY AS THE SOFTWARE.

e) Licensee may not distribute Redistributable Software in any 
software development product or toolkit meant for use by other 
developers other than the Licensee(s).

f) Applications created by the Licensee that include the  
Redistributable Software must be distributed with terms no less 
protective of the Software and Redistributable Software than 
those contained herein.


5. DISCLAIMER OF EXPRESS AND IMPLIED WARRANTIES

THE SOFTWARE IS LICENSED "AS IS", WITH ALL FAULTS. THERE ARE NO 
WARRANTIES, EXPRESS OR IMPLIED. THE ENTIRE RISK AS TO THE QUALITY 
AND PERFORMANCE OF THE SOFTWARE IS WITH THE LICENSEE. SHOULD THE
SOFTWARE PROVE DEFECTIVE, THE LICENSEE AND NOT P6R, INC. ASSUMES 
THE ENTIRE COST OF ALL NECESSARY REVISION, MODIFICATION OR OTHER 
CORRECTIVE MEASURES. IN PARTICULAR AND WITHOUT LIMITATION, THE 
SOFTWARE IS LICENSED WITH NO IMPLIED WARRANTY OF MERCHANTABILITY, 
NO IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE, NO 
IMPLIED WARRANTY OF NON-INFRINGEMENT OF INTELLECTUAL PROPERTY 
RIGHTS,	NO IMPLIED WARRANTY BASED UPON COURSE OF PRIOR DEALING, 
AND NO IMPLIED WARRANTY BASED UPON USAGE OF TRADE. FURTHER, 
P6R, INC. DOES NOT WARRANT THAT THE OPERATION OF THE SOFTWARE 
WILL BE UNINTERRUPTED OR ERROR-FREE, AND THE LICENSEE 
ACKNOWLEDGES THAT IT IS NOT TECHNOLOGICALLY PRACTICABLE FOR 
P6R, INC. TO DO SO.


6.	  LIMITATION OF DAMAGES AND REMEDIES

IF A LICENSEE IS FOR ANY REASON DISSATISFIED WITH THE SOFTWARE, 
THAT LICENSEE MAY GIVE NOTICE TO P6R, INC. WITHIN 30 DAYS OF 
LICENSURE AND OBTAIN A FULL REFUND OF THE LICENSE FEE ACTUALLY 
PAID TO AND RECEIVED BY P6R, INC.  THIS RIGHT TO GIVE NOTICE 
EXPIRES 30 DAYS FROM LICENSURE, REGARDLESS WHETHER THE 30TH 
DAY FALLS ON A SATURDAY, SUNDAY OR HOLIDAY.  IMMEDIATELY UPON 
GIVING SUCH NOTICE, LICENSEE SHALL DESTROY OR RETURN TO 
P6R, INC. ALL COPIES OF THE SOFTWARE, EXCEPT INSOFAR AS 
PORTIONS OF THE SOFTWARE HAVE ALREADY BEEN LAWFULLY 
INCORPORATED IN LICENSEE'S OWN WORK PRODUCT WHICH HAS BEEN 
SOLD AND DELIVERED TO THIRD PARTIES.  EXCEPT AS EXPRESSLY 
PROVIDED IN THIS PARAGRAPH, P6R, INC. SHALL NOT BE LIABLE FOR 
ANY CLAIM, ASSERTED BY THE LICENSEE OR BY THIRD PARTIES, 
ARISING UNDER BREACH OF WARRANTY OR ANY OTHER LEGAL OR 
EQUITABLE THEORY, WHETHER FOR INCIDENTAL OR CONSEQUENTIAL 
DAMAGES, LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS 
OF BUSINESS INFORMATION, PERSONAL INJURY, OR OTHERWISE, ARISING 
OUT OF THE LICENSE, THE USE OF THE SOFTWARE, OR THE INABILITY TO 
USE THE SOFTWARE, EVEN IF P6R, INC. HAS BEEN ADVISED OF THE 
POSSIBILITY OF SUCH CLAIM OR DAMAGES.  LICENSEE'S AND THIRD 
PARTIES' EXCLUSIVE REMEDY FOR ANY AND ALL CLAIMS ARISING IN 
CONNECTION WITH THE LICENSE OR THE SOFTWARE SHALL BE RECOVERY OF 
THE LICENSE FEE ACTUALLY PAID TO AND RECEIVED BY P6R, INC.  THIS 
LICENSE PROVIDES SPECIFIC LEGAL RIGHTS, AND THE LICENSEE MAY ALSO 
HAVE OTHER RIGHTS THAT VARY FROM STATE TO STATE.


7. UNAUTHORIZED USE

THE SOFTWARE IS NOT DESIGNED, AUTHORIZED OR INTENDED FOR USE IN 
ANY TYPE OF SYSTEM OR APPLICATION IN WHICH THE FAILURE OF THE 
SOFTWARE COULD CAUSE PERSONAL INJURY OR DEATH (EG. ANY 
TYPE OF MEDICAL SYSTEMS, IN THE DESIGN, CONSTRUCTION, OPERATION 
OR MAINTENANCE OF ANY NUCLEAR FACILITY OR WEAPONS SYSTEMS, IN 
THE CONTROL OF AIRCRAFT, AIRCRAFT COMMUNICATION, AIR-TRAFFIC,
AND AIRCRAFT NAVIGATION).  THE LICENCEE REPRESENTS AND WARRANTS
THAT IT WILL NOT USE OR REDISTRIBUTE THE SOFTWARE FOR SUCH 
PURPOSES.


8. Export Controls

It is the Licensee's responsibility to comply with all United 
States Department of Commerce regulations and with the United  
States Export Administration Act to insure that the Software is  
not exported in violation of United States law.
               

9. Termination

P6R, Inc. may terminate this agreement at any time if the Licensee
is in breach of any of its terms and conditions.  Upon termination 
the Licensee will immediately return to P6R, Inc. or destroy all 
copies of the Software, except insofar as portions of the Software 
have already been lawfully incorporated in licensee's own work 
product which has been sold and delivered to third parties.  The 
provisions of sections 1, 2, 4, 5, 6, 7, 8, and 9 will survive any 
termination of this License Agreement.


10. Miscellaneous

a) Governing Laws. 
This Agreement shall be governed by the laws  of the United States
of America and of the State of California without regard to 
California's conflicts of law rules.

b) Assignability. 
Except as otherwise provided in this Agreement, 
Licensee may not sell, assign or delegate any rights or  
obligations under this Agreement.

c) Headings. 
Headings are used in this Agreement for reference and convenience 
only and shall not be considered when interpreting this Agreement.

g) Severability. 
If any provision of this Agreement is found to 
be illegal or unenforceable, the other provisions shall remain  
effective and enforceable to the greatest extent permitted by law.

h) Interpretation
Each term of this Agreement shall be interpreted in accordance with
its fair and natural meaning, without regard to any rule of strict
construction against the party who drafted it.

i) Entire Agreement

This Software License Agreement sets forth the entire agreement 
between the parties with regard to the subject matter hereof.  All 
agreements, covenants, representations and warranties of the parties, 
express and implied, oral and written, with regard to the subject 
matter hereof are contained herein.  No other agreement, covenants, 
representations or warranties, express or implied, oral or written, 
have been made by any party to another with regard to the subject 
matter hereof.  All prior and contemporaneous conversations, 
negotiations, possible and alleged agreements and representations, 
covenants and warranties with respect to the subject matter hereof 
are hereby waived, merged herein and superseded by this Software 
License Agreement.  This is an integrated Software License Agreement.