Home Page Icon
Home Page
Table of Contents for
Resources
Close
Resources
by Michael C. Rawlins
Using XML with Legacy Business Applications
Copyright
Dedication
Advance Praise for Using XML with Legacy Business Applications
Preface
Acknowledgments
Introduction
The Problem
What Do We Need in a Solution?
Functional Requirements
Nonfunctional Requirements: Good, Fast, and Cheap
The Overview of a Solution
Architecture
Why Not Use XSLT for Everything?
Two Implementations of the Architecture: Java and C++
The Document Object Model
Why Use the DOM?
How to Use This Book
Chapter Organization
Notes for Primary Audiences
Chapter Summaries
Conventions
What You Need to Use This Book
What You Should Already Know
Web Site and Contact Information
General Software
Java Software
C++ Software
For Developers
General Coding Approach and Conventions
Additional C++ Considerations
How You Can Use the Utilities and Code
References
Resources
Converting XML to CSV
Requirements
Running the Utility
Sample Input and Output
Design
Naming Elements
Module Logic
Java Implementation
main in XMLToCSVBasic.java
write in CSVRowWriter.java
Error Handling
C++ Implementation
main in XMLToCSVBasic.cpp
write in CSVRowWriter.cpp
Error Handling
Comparing the Java and C++ Implementations
Enhancements and Alternatives
Validation of the Input Document
Using a ColumnNumber Attribute
A Recursive Algorithm
Advanced Functionality
Resources
Converting CSV to XML
Requirements
Running the Utility
Sample Input and Output
Design
Main Routine
CSVRowReader Class
Java Implementation
main in CSVToXMLBasic.java
parse in CSVRowReader.java
write in CSVRowReader.java
C++ Implementation
main in CSVToXMLBasic.cpp
parse in CSVRowReader.cpp
write in CSVRowReader.cpp
Comparing the Java and C++ Implementations
Enhancements and Alternatives
Validation of the Output Document
Advanced Functionality
Some Observations
Resources
Learning to Read XML Schemas
Rope, Anyone?
A Few Different Document Approaches
DTD Refresher
Foundation Concepts and Terminology
Elements and Types
Simple and Complex
General Features
Schema Declaration in Instance Documents
Comments and Documentation
Element Declarations
Simple Content Elements
Schema Built-in Data Types
Extending and Restricting Simple Types
Setting a Maximum Length
Setting Minimum and Maximum Values
Patterns for Identifiers
Code Lists
Attribute Declarations
Complex Content Elements
Types of Content
Mandatory, Optional, Limits
Creating New Complex Types by Extension
Attribute Declarations
Understanding Namespaces
What Is a Namespace?
URIs, URNs, and URLs
Namespace Qualification in Instance Documents
The W3C XML Schema-Related Namespaces
Structuring Schemas
Global Types and Local Elements versus Global Elements
Named Types and Anonymous Types
Modularity: The xs:include and xs:import Elements
An Example of Importing Type Libraries
Less Commonly Used W3C XML Schema Language Features
Wildcards
Default and Fixed Attributes
Whitespace Suppression
Derivation of Complex Types by Restriction
Redefinition
Named Attribute Groups
Named Model Groups
Abstract Types and Substitution Groups
Keys and Uniqueness
Nillable Elements
Is There Data or Not?
Reference
Resources
Validating against Schemas
Requirements
Running the Utilities
Design
Java Implementation
Input Validation in XMLToCSVBasic.java
Output Validation in CSVToXMLBasic.java
C++ Implementation
Input Validation in XMLToCSVBasic.cpp
Output Validation in CSVToXMLBasic.cpp
Examples of Input Validation Failures
Resources
Refining the Design
Why Refine the Design?
Making XML the Common Format
Analyzing the Legacy Non-XML Grammars
Describing the Legacy Non-XML Grammars
Representing the Legacy Non-XML Grammars in XML
Instance Document Design
File Description Document Design
Schemas for File Description Documents
Schemas for Source and Target Documents
Additional DOM Processing Considerations and Strategies
Multilingual Issues
Error Handling Strategy
High-Level Design
Source Converter Processing
Target Converter Processing
Summary of Classes
Detail Design
Main Routine Structures
Converter Base Class
SourceConverter Base Class (Extends Converter)
TargetConverter Base Class (Extends Converter)
RecordHandler Base Class
RecordReader Base Class (Extends RecordHandler)
RecordWriter Base Class (Extends RecordHandler)
DataCell Base Class
Java Implementation
C++ Implementation
References
Resources
Converting CSV Files to and from XML, Revisited
CSV to XML: Functionality and Operation
Requirements
Running the Utility
Sample Input and Output: Invoice
XML to CSV: Functionality and Operation
Requirements
Running the Utility
Sample Input and Output: Purchase Order
Describing the File Formats
CSV Physical Characteristics
XML Output Characteristics
CSV File Grammar
Example File Description Documents
Schema Examples
High-Level Design Considerations
Grammar Analysis and Description
File Description Document Schemas
CSV to XML: Detail Design
Main Program
CSVSourceConverter Class (Extends SourceConverter)
CSVRecordReader Class (Extends RecordReader)
XML to CSV: Detail Design
Main Program
CSVTargetConverter Class (Extends TargetConverter)
CSVRecordWriter Class (Extends RecordWriter)
New DataCell Methods and Derived Classes
New DataCell Methods
DataCellAN Class
DataCellReal Class
DataCellDateMMsDDsYYYY Class
Java Implementation
C++ Implementation
Enhancements and Alternatives
Additional Data Types
Variety of Record Types
Efficiency and Performance
Resources
Converting Flat Files to and from XML
Flat File to XML: Functionality and Operation
Requirements
Running the Utility
Sample Input and Output: Invoice
XML to Flat File: Functionality and Operation
Requirements
Running the Utility
Sample Input and Output: Purchase Order
Describing the File Formats
Flat File Physical Characteristics
XML Output Characteristics
Flat File Grammar
Example File Description Documents
Schema Examples
High-Level Design Considerations
Grammar Analysis and Description
File Description Document Schemas
Flat File to XML: Detail Design
Main Program
FlatSourceConverter Class (Extends SourceConverter)
FlatRecordReader Class (Extends RecordReader)
XML to Flat File: Detail Design
Main Program
FlatTargetConverter Class (Extends TargetConverter)
FlatRecordWriter Class (Extends RecordWriter)
New DataCell Methods and Derived Classes
New DataCell Methods
New Methods in DataCell Derived Classes
DataCellN Class
DataCellDateYYYYMMDD Class
Java Implementation
C++ Implementation
Enhancements and Alternatives
Additional Data Types
CSV Record Formats
Rounding versus Truncation
Group Fields
Redefined Fields
Resources
Converting EDI to and from XML
Overview of the X12 EDI Syntax and Standards
X12 to XML: Functionality and Operation
Requirements
Running the Utility
Sample Input and Output: 850 Purchase Order
XML to X12: Functionality and Operation
Requirements
Running the Utility
Sample Input and Output: 810 Invoice
Describing the File Formats
X12 File Physical Characteristics
XML Output Characteristics
Transaction Set Grammar
Example File Description Documents
Schema Examples
Supplemental Data Store for Control Numbers
High-Level Design Considerations
Grammar Analysis and Description
File Description Document Schemas
X12 to XML: Detail Design
Main Program
X12SourceConverter Class (Extends SourceConverter)Overview
EDIRecordReader Class (Extends RecordReader)
X12RecordReader Class (Extends EDIRecordReader)
XML to X12: Detail Design
Main Program
X12TargetConverter Class (Extends TargetConverter)
EDIRecordWriter Class (Extends RecordWriter)
X12RecordWriter Class (Extends EDIRecordWriter)
New DataCell Methods and Derived Classes
DataCellX12N Class (Extends DataCellN)
DataCellX12R Class (Extends DataCellReal)
DataCellX12DT Class (Extends DataCellDateYYYYMMDD)
DataCellX12TM Class
Java Implementation
C++ Implementation
Enhancements and Alternatives
Reference
Resources
Converting from One XML Format to Another with XSLT
Why XSLT Is Important
XSLT Overview
A Simple Example: Hello World
Another Simple Example: Changing Tag Names
A General Approach to Using XSLT
XPath Basics
Structuring Stylesheets
A Bit of Housekeeping
The xsl:output Element
Running Transformations from a Command Line
Manipulating Content
Adding and Removing Content
Splitting Data Content
Combining Data Content
Changing an Attribute to an Element
Changing an Element to an Attribute
Solving Typical Navigation Problems
Mapping a Flat Structure to a Hierarchy
Mapping a Hierarchy to a Flat Structure
Tips for Dealing with Other Navigation Problems
Advanced Techniques for Processing Content
Omitting Empty Elements and Attributes
Converting Coded Values
Handling Calculations
Handling Namespaces
Calling Non-XSLT Procedures
References
Resources
Using the Conversion Techniques Together
Pipe and Filter Revisited
Sample Conversion Scenarios and Scripts
Purchase Order: UBL to XML to CSV
Invoice: Flat File to XML to EDI
Campaign Contribution Reporting: CSV to XML to Flat File
Building a System: Babel Blaster
Version 1.0 Requirements
Architectural Overview
Trading Partner/Application Information
Linking Pipes and Filters
Version 1.1 Requirements
Resources
Building XML Support into a Business Application
What Should Be “XMLized”?
Devising an Architecture
Add-on or Major Redesign?
If, How, and Where to Validate
Selecting the XML Format
Use a Standard or Roll Your Own?
General Document Design Decisions
Providing Identifying Information
Schema Design
Changing Your Code
Input and Import
Printed Output and Export
Adding XSLT
Making XML the Native Output Format
Making XML a Native Storage Format
What about Databases?
Other Approaches and APIs
Simple API for XML
Generated Class Bindings
Options for Procedural Languages
Non-XML Issues
Looking Up and Converting Coded Values
User-Defined Fields
Business Process Support
Resources
Code-Level XSLT Integration
Databases and XML
Schema Design
Security, Transport, Packaging, and Other Issues
Some General Observations about Security
Dealing with Security
Security Requirements and Exposure
Countermeasures and Remediation Strategies
Prevention Countermeasures
Transport
Packaging
Common Combinations for Security, Transport, and Packaging
Emerging Technologies
What This Means for You
Reference
GNU General Public License
Preamble
Terms and Conditions for Copying, Distribution and Modification
How to Apply These Terms to Your New Programs
Pseudocode Conventions
Assignment Operator
Mathematical Operators
Equality and Relational Operators
IF Selection Structures
Repetition Structure
Case Selection Structure
COM Essentials for the Non-COM Programmer
#import and Smart Pointers
Initialization and Resource Management
Exceptions and Errors
COM Classes and Data Types for C++
Bibliography
References
Resources
Credits
Chapter 1
Chapter 4
Chapter 5
Chapter 6
Chapter 8
Chapter 9
Chapter 12
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
Some Observations
Next
Next Chapter
Learning to Read XML Schemas
Resources
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset