The java.pattern.context option enables an interpreter facility for Relaxer objects.
The java.pattern.context option takes one of the following values as a parameter:
The default configuration is false
.
No parameter implies that the parameter is true
.
The java.pattern.context option generates additional classes as follows:
The java.pattern.context option adds the following methods to Relaxer objects:
RContext rGetRContext()
rSetRContext(RContext)
RContext rGetRContextResolved()
The rGetRContext
method informs the RContext context in the
target object.
The rSetRContext
method sets up the context, RContext.
The rGetRContextResolved
method informs the RContext context in
a entier object tree.
List 7.23.3.1.1[javaPatternContext.rng] is a sample schema for the java.pattern.context option.
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <ref name="account"/> </start> <define name="account"> <element name="account"> <attribute name="accountNo"> <data type="token"/> </attribute> <element name="balance"> <data type="int"/> </element> <element name="owner"> <data type="token"/> </element> <ref name="address"/> <zeroOrMore> <ref name="phone"/> </zeroOrMore> </element> </define> <define name="address"> <element name="address"> <attribute name="zip"> <data type="token"/> </attribute> <text/> </element> </define> <define name="phone"> <element name="phone"> <attribute name="area"> <data type="token"/> </attribute> <data type="token"/> </element> </define> </grammar>
Execution of Relaxer with the java.pattern.context option is as follows:
$ relaxer -java -java.pattern.context javajavaPatternContext.rng
Because the Java generator is a default generator, execution of Relaxer as shown below has the same effect:
$ relaxer -java.pattern.context javajavaPatternContext.rng
As a result, Relaxer generates 12 files:
List 7.23.3.2.1[JavaPatternContext.java] is a sample program for the java.pattern.context option.
import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; public class JavaPatternContext { public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException { String uri = args[0]; Account account = makeAccount(uri); printAccount(account); } private static Account makeAccount(String uri) throws IOException, SAXException, ParserConfigurationException { System.out.println("*** makeAccount ***"); Account account = new Account(uri); return (account); } private static void printAccount(Account account) { System.out.println("*** printAccount ***"); String accountNo = account.getAccountNo(); long balance = account.getBalance(); String owner = account.getOwner(); Address address = account.getAddress(); String zip = address.getZip(); String place = address.getContent(); System.out.println("AccountNo:" + accountNo); System.out.println("Balance:" + balance); System.out.println("Owner:" + owner); System.out.println("Address: [" + zip + "] " + place); Phone[] phones = account.getPhone(); for (int i = 0;i < phones.length;i++) { Phone phone = phones[i]; String area = phone.getArea(); String number = phone.getContent(); System.out.println("Phone: [" + area + "] " + number); } System.out.println("XML:" + account); } }
Compilation of JavaPatternContext.java
class is shown here:
$ javac JavaPatternContext.java
List 7.23.3.3.1[javapatternContext.xml] is an XML document for testing.
<account accountNo="12345"> <balance>102030</balance> <owner>XML Taro</owner> <address zip="213">Yokohama</address> <phone area="123">456-7890</phone> <phone area="090">123-4567</phone> </account>
Execution of the JavaPatternContext
class is shown here:
$ java JavaPatternContext javaPatternContext.xml AccountNo:12345 Balance:102030 Owner:XML Taro XML:<account xmlns="http://example.com/account" \ accountNo="12345"><balance>102030</balance><owner>XML \ Taro</owner></account>