WX-model ver. 0.7 2003 9 22 1 scriptlet XHTML ( XHTML ) XML WX-model WX-model XHTML 12 10 2 WX-model XHTML ^ $ Child nodes / @ sp nl comment scriptlet 2.1 File XHTML WX-model Child nodes : /XMLDecl /DoctypeDecl /StyleSheet /Element 2.2 XMLDecl XMLDecl ^<?xml version="1.0" encoding="euc-jp"?>$ Child nodes : /tago /Attribute /tagc 2.3 DoctypeDecl DoctypeDecl ^<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">$ Child nodes : /tago /name /ExternalID /tagc 1
2.4 ExternalID DoctypeDecl ExternalID <!DOCTYPE html ^PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"$> Child nodes : /system /String /public 2.5 StyleSheet ^<?xml-stylesheet href="http://www.w3.org/stylesheets/tr/w3c-rec.css" type="text/css"?>$ Child nodes : /tago /Attribute /tagc 2.6 Element ^<a href="index.html">index</a>$ ^<br/>$ Child nodes : /Element /STag /ETag /text /Empty 2.7 Attribute <a ^href="index.html"$>index</a> Child nodes : /name /eq /String 2.8 String ( ) () <a href=^"index.html"$>index</a> Child nodes : /dquote /squote /text 2
2.9 STag ^<a href="index.html">$index</a> Child nodes : /tago /name /Attribute /tagc 2.10 ETag <a href="index.html">index^</a>$ Child nodes : /tago /name /tagc 2.11 Empty ^<br/>$ Child nodes : /tago /name /Attribute /tagc 2.12 tago ^<$a href="index.html">index^</$a> 2.13 tagc <a href="index.html"^>$index</a^>$ 2.14 name <^a$ ^href$="index.html">index</^a$> 3
2.15 system SYSTEM <!DOCTYPE File ^SYSTEM$ "WXModel.dtd"> 2.16 public PUBLIC <!DOCTYPE html ^PUBLIC$ "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> 2.17 dquote <a href=^"$index.html^"$>index</a> 2.18 dquote <a href=^ $index.html^ $>Index</a> 2.19 eq = <a href^=$"index.html">index</a> 2.20 text XHTML <a href="index.html">^index$</a> <b>^hello Wapid$</b> 4
2.21 comment ^<!-- This is comment -->$ 2.22 scriptlet scriptlet ^<% request.setcharacterencoding("shift_jis"); %>$ 2.23 sp 2.24 nl @line @coffset @offset 5
A A.1 % java wapid.parser.wxmodel.mkwxmodel <targetxhtml> SDB dira/fileb SDB/WXModel/fileB.xml WXModel.dtd % java wapid.parser.wxmodel.mkwxmodel -h NAME MkWXModel - WXModel maker SYNOPSIS java wapid.parser.wxmodel.mkwxmodel [options] file -h : Show this help. -D : Directory for SDB ("SDB"). -e : Set output file encoding. ("EUC-JP"). -v : Print verbose message. A.2 % cd <SAPID_TOP>/Wapid/WX-sample % make test-wapid-wx diff WXModel.dtd validate 6
B SDB B.1 SDB SDB XML XML WXModel wapid.parser.wxmodel.wxdbaccessor CASE SDB CASE File WXDBAccessor#getSDBFile(String analyzedfilename); String WXDBAccessor#getSDBFileName(String analyzedfilename); XML B.2 WXModelAR wapid.wxmodel.wxmodelar 1 Relaxer 2 WXModel (WXModel.dtd) (wapid.wxmodel.abstractwxmodelar ) Relaxer % relaxer -factory -package:wapid.wxmodel.abstractwxmodelar -classprefix:awx -parameterprefix:p_ WXModel.rxm ID B.2.1 WXModelAR wapid.wxmodel.wxmodelar WxFile AccessEnvironment#getWxFileInstance(String filepath) B.2.2 WXModel objname Wx + objname getwx + objname + s() getwx + objname + Iterator() getparentobject() 1 DOM xsapid 2 http://www.relaxer.org/ 7
IXObject DTD <!ELEMENT XMLDecl (tago Attribute tagc sp nl comment scriptlet)*> DTD wapid.wxmodel.wxmodelar WxTago[] WxXMLDecl#getWxTagos() Iterator WxXMLDecl#getWxTagoIterator() WxAttribute[] WxXMLDecl#getWx() Iterator WxXMLDecl#getWxAttributeIterator()... IXObject WxXMLDecl#getParentObject()... IAWxXMLDeclChoice[] WxXMLDecl#getContent() return type : IAWx + objname + Choice[] method name : getcontent() B.2.3 String IXObject#toSourceCode() XHTML B.2.4 ID String IXObject#getId() B.2.5 int IXObject#getCOffset() int IXObject#getCLength() int IXObject#getStartLine() 8
int IXObject#getStartColumn() int IXObject#getEndLine() int IXObject#getEndColumn() B.2.6 1 XHTML import wapid.parser.wxmodel.wxdbaccessor; import wapid.wxmodel.wxmodelar.*; public class Restructure { public static void main(string args[]){ WXDBAccessor acc = new WXDBAccessor(); WxFile file = AccessEnvironment.getWxFileInstance(acc.getSDBFileName(args[0])); System.out.print(file.toSourceCode()); } } B.2.7 2 XMLDecl Attribute import wapid.wxmodel.wxmodelar.*; import wapid.parser.wxmodel.*; public class XMLDeclExtracter { public static void main(string args[]){ WXDBAccessor acc = new WXDBAccessor(); WxFile file = AccessEnvironment.getWxFileInstance(acc.getSDBFileName(args[0])); WxXMLDecl[] xd = file.getwxxmldecls(); System.out.println("XMLDecl : " + xd[0].tosourcecode()); WxAttribute[] at = xd[0].getwx(); for(int i=0;i<at.length;i++){ System.out.println("Attribute[ID=" + at[i].getid() + "]" + topos(at[i]) + " : " + at[i].tosourcecode()); } } public static String topos(ixobject obj){ return "[(" + obj.getstartline() + "," + obj.getstartcolumn() 9
} } + ") => (" + obj.getendline() + "," + obj.getendcolumn() +")]"; XMLDecl : <?xml version="1.0" encoding="euc"?> Attribute[ID=wx4][(1,7) => (1,19)] : version="1.0" Attribute[ID=wx12][(1,21) => (1,34)] : encoding="euc" 10
C WXModel.dtd <!-- WXModel ver. 0.7 Last update 2003/09/22 Author ken --> <!ELEMENT File <!ELEMENT XMLDecl <!ELEMENT DoctypeDecl <!ELEMENT Attribute <!ELEMENT ExternalID <!ELEMENT StyleSheet <!ELEMENT STag <!ELEMENT ETag <!ELEMENT Empty <!ELEMENT String <!ELEMENT Element (XMLDecl DoctypeDecl StyleSheet Element sp nl comment scriptlet)*> (tago Attribute tagc sp nl comment scriptlet)*> (tago name ExternalID tagc sp nl comment scriptlet)*> (name eq String sp nl comment scriptlet)*> (system String public sp nl comment scriptlet)*> (tago Attribute tagc sp nl comment scriptlet)*> (tago name Attribute tagc sp nl comment scriptlet)*> (tago name tagc sp nl comment scriptlet)*> (tago name Attribute tagc sp nl comment scriptlet)*> (dquote squote text sp nl comment scriptlet)*> (Element STag ETag text Empty sp nl comment scriptlet)*> <!ELEMENT sp <!ELEMENT nl <!ELEMENT comment <!ELEMENT scriptlet <!ELEMENT name <!ELEMENT system <!ELEMENT public <!ELEMENT dquote <!ELEMENT squote <!ELEMENT eq <!ELEMENT text <!ELEMENT tago <!ELEMENT tagc <!ATTLIST File id ID #REQUIRED> <!ATTLIST XMLDecl id ID #REQUIRED> <!ATTLIST StyleSheet id ID #REQUIRED> <!ATTLIST DoctypeDecl id ID #REQUIRED> <!ATTLIST Attribute id ID #REQUIRED> <!ATTLIST ExternalID id ID #REQUIRED> <!ATTLIST STag id ID #REQUIRED> <!ATTLIST ETag id ID #REQUIRED> <!ATTLIST Empty id ID #REQUIRED> <!ATTLIST String id ID #REQUIRED> 11
<!ATTLIST Element id ID #REQUIRED> <!ATTLIST sp id ID #REQUIRED> <!ATTLIST nl id ID #REQUIRED> <!ATTLIST nl line NMTOKEN #IMPLIED> <!ATTLIST nl offset NMTOKEN #IMPLIED> <!ATTLIST nl coffset NMTOKEN #IMPLIED> <!ATTLIST comment id ID #REQUIRED> <!ATTLIST scriptlet id ID #REQUIRED> <!ATTLIST name id ID #REQUIRED> <!ATTLIST system id ID #REQUIRED> <!ATTLIST public id ID #REQUIRED> <!ATTLIST dquote id ID #REQUIRED> <!ATTLIST squote id ID #REQUIRED> <!ATTLIST eq id ID #REQUIRED> <!ATTLIST text id ID #REQUIRED> <!ATTLIST tago id ID #REQUIRED> <!ATTLIST tagc id ID #REQUIRED> 12
1 1 2 WX-model 1 2.1 File................................................ 1 2.2 XMLDecl............................................. 1 2.3 DoctypeDecl........................................... 1 2.4 ExternalID............................................ 2 2.5 StyleSheet............................................. 2 2.6 Element.............................................. 2 2.7 Attribute............................................. 2 2.8 String............................................... 2 2.9 STag................................................ 3 2.10 ETag................................................ 3 2.11 Empty............................................... 3 2.12 tago................................................ 3 2.13 tagc................................................ 3 2.14 name................................................ 3 2.15 system............................................... 4 2.16 public............................................... 4 2.17 dquote............................................... 4 2.18 dquote............................................... 4 2.19 eq................................................. 4 2.20 text................................................ 4 2.21 comment.............................................. 5 2.22 scriptlet.............................................. 5 2.23 sp................................................. 5 2.24 nl.................................................. 5 A 6 A.1.............................................. 6 A.2............................................ 6 B SDB 7 B.1 SDB........................................ 7 B.2 WXModelAR....................................... 7 B.2.1 WXModelAR.................................. 7 B.2.2...................................... 7 B.2.3................................... 8 B.2.4 ID......................................... 8 B.2.5...................................... 8 B.2.6 1.......................................... 9 B.2.7 2.......................................... 9 C WXModel.dtd 11 13