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:
XMLXJR™ 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.0Release 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.
JSONJSON 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 EngineA 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 ExpressionsThe 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 PlatformsXJR™ 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.0XPath 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.0XSLT 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 ParserOur 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 EngineOur 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.