DOM - Document Object Model

revised: Oct./26th/03

DOM$B$N35MW(B

DOM (Document Object Model) $B$O(BW3C$B$,4+9p$7$F$$$k(BXML$B$N(BAPI$B$G$9!#%W%m%0%i%`8@8l$K$h$i$:!"HFMQE*$J;EMM$H$J$C$F$$$^$9!#(B

DOM $B<+BN$,5pBg$J;EMM$J$N$G!"(BDOM Level 2$B$+$i$OJ#?t$N;EMM$KJ,3d$5$l$F4+9p$5$l$F$$$^$9!#(B

$B8=:_!"(BDOM$B%D%j!<$NJ]B8$dFI$_9~$_!J%7%j%"%i%$%DOM level 3 XPath$B$,4+9p4V6a$N(B$B4+9p8uJd(B (Candidate Recommendations)$B$H$J$C$F$*$j!"(BDOM level 3 Core$B$J$I$O(BWarking Draft$B$G$9!#(B

DOM$B$O(BXML$B$r2r@O$9$k$KEv$?$C$F!":G=i$K(BXML$BJ8=q$NMWAG9=B$$KBP1~$9$kLZ9=B$$r%a%b%j>e$K9=C[$7$^$9!#$3$N35G0$O(BJavaScript$B$G(BHTML$B$rA`:n$7$?$3$H$,$"$kJ}$K$OFk@w$_?<$$$b$N$G$7$g$&!#%a%b%j$rBg$-$/>CHq$9$k0lJ}$G!"7+$jJV$799?7$r3]$1$F(BXML$BJ8=q$N9=B$$rJQ99$9$k$h$&$J=hM}$KE,$7$F$$$k$H$$$($^$9!#(B

DOM$B%D%j!<$O!"(BJava$B$G$O%$%s%?%U%'!<%9$N=8$^$j$K$J$j$^$9!#%D%j!<$N%N!<%I$K$J$j$&$k%$%s%?%U%'!<%9$rI=(B1$B$K5s$2$^$9!#(B

$BI=(B1. DOM$B%D%j!<$N%N!<%I$N
$B%$%s%?%U%'!<%9L>(B$B35MW(B
NodeDOM$B%D%j!<$N0l$D$N%N!<%I$rI=$9!#0J2<$OA4$F(BNode$B%$%s%?%U%'!<%9$N7Q>5!#(B
Attr$BB0@-$rI=$9(B
CharacterData$BJ8;z%G!<%?$rI=$9(B
TextCharacterData$B$r7Q>5$7!"MWAG$dB0@-$NFbMF$NJ8;zNs$rI=$9(B
CommentCharacterData$B$r7Q>5$7!"%3%a%s%H$NFbMF$NJ8;zNs$rI=$9(B
CDATASectionText$B$r7Q>5$7!"(BCDATA$B%;%/%7%g%s$rI=$9(B
DocumentXML$BJ8=qA4BN$rI=$9(B
DocumentFragmentDOM$B%D%j!<$N0lIt$rI=$9(B
DocumentTypeDTD$B$rI=$9(B
Element$BMWAG$rI=$9(B
Entity$B
EntityReference$BH$rI=$9(B
Notation$B%N!<%F!<%7%g%s$rI=$9(B
ProcessingInstruction$B=hM}L?Na$rI=$9(B

$BI=$K$9$k$HKDBg$G.8BEY$Nl9g$O!"%N!<%I$N

DOM$B$K4X$9$k

DOM$B$NEP>lEv=i(B('97-'98$B:"(B)$B$O!"(BJavaScript$B$NI8=`2=$rL\E*$H$7$F$$$k$h$&$KECMA International$B$K$h$kI8=`2=$N;n$_$G$"$k(BECMAScript$B$K$h$C$F$b!"$J$+$J$+

$B$=$N$?$a!"(BW3C$B$O!"%9%/%j%W%H8@8l$Nl$7$?$N$,!"(BDOM$B$G$9!#(BDOM$B$O!"(BXML$BJ8=q$H$$$&%^!<%/%"%C%W8@8l$N%b%G%j%s%0$r5,Dj$7$^$9!#(B

DOM$B$O!"CB@8$N7@5!$3$=(BJavaScript$B$G$7$?$,!"4{$KIa5Z$7$F$$$?%D!<%j!<9=B$$K$h$k%b%G%j%s%0$H$$$&%"%$%G%"$rF'=1$9$k$3$H$r=|$$$F$O!"8@8l$K0MB8$7$J$$!"%?%0$K$h$k%^!<%/%"%C%W8@8l$K$*$$$FHFMQE*$J!"%b%G%j%s%05,B'$rDj$a$k;EMM$K$J$C$F$$$^$9!#(B

Java$B$O!"(BDOM$B$N]2=$5$l$?$3$H$G!"%5!<%P!&%5%$%I$G$N:2Z$7$?$N$G$9!#(BJava$B$O!"(BDOM$B$N2DG=@-$r:GBg8B$K0z$-=P$9G=NO$r;}$D8@8l$N0l$D$G$9!#(B

DOM$B$K$h$k2r@O(B

$BO@$h$j>Z5r!"I4J9$O0l8+$KG!$+$:$G$9!#(BDOM$B$r;H$C$F(BXML$BJ8=q$r2r@O$9$k(BJava$B$N%=!<%9%3!<%I$r>R2p$7$^$7$g$&!#(B

DOM$B%Q!<%5$O!"%/%i%9(Borg.apache.xerces.parsers.DOMParser$B$G;2>H$7$^$9!#%j%9%H(B2$B$O!"%a%=%C%I(Bparse()$B$N0z?t$N%9%H%j!<%`$+$i(BXML$BJ8=q$rgetDocument()$B$G(BDocument$B%$%s%9%?%s%9$r@8@.$9$k$b$N$G$9!#(B

$B%j%9%H(B1. DomParseDemo.java

import org.w3c.dom.*;
import org.apache.xerces.parsers.*;
class DomParseDemo {
    public static void main(String[] args) {
        try {
            // DOM$B%Q!<%5$N@8@.(B
            DOMParser parser = new DOMParser();
            // XML$BJ8=q$N

$B%j%9%H(B1$B$K8m$C$?(BXML$BJ8=q$rFI$_9~$^$;$F8+$^$7$g$&!#!V(BXML$BJ8=q(B$B!W$G>R2p$7$?(B$B%j%9%H(B1$B$N(BXML$B$NKAF,$r%j%9%H(B2$B$N$h$&$KJQ99$7$^$7$g$&!#%j%9%H(B2$B$O!"(Bname$BMWAG$N=*N;%?%0$,B8:_$7$J$$$?$a$K!"@07A<0$G$O$"$j$^$;$s!#(B

$B%j%9%H(B2. $B8m$C$?(BXML(demo2.xml)

<?xml version="1.0" encoding="UTF-8"?>
<address>
    <item sex="male" custid="E21099">
        <name>$B?{0f!!3X(B       
        <access kind="email"></access>
...

$B%j%9%H(B2$B$N(Bdemo2.xml$B$rFI$_9~$^$;$korg.xml.sax.SAXParseException$B$,H/@8$7$F$$$k$3$H$,J,$+$j$^$9!#(B

$B%j%9%H(B3. $B@07A<0$G$J$$(BXML$BJ8=q!J%j%9%H(B2$B!K$N2r@O7k2L(B

>java DomParseDemo demo2.xml
[Fatal Error] demo2.xml:8:7: The element type "name" must be terminated by the matching end-tag "</name>".
org.xml.sax.SAXParseException: The element type "name" must be terminated by the matching end-tag "</name>".
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at DomParseDemo.main(DomParseDemo.java:11)
>

$B0lJ}!"@5$7$$(BXML$BJ8=q$G$"$k!"(B$B%j%9%H(B1$B$N(Bdemo.xml$B$rFI$_9~$^$;$?>l9g$O!"$J$K$b=PNO$5$l$^$;$s!#

$B%j%9%H(B4. $B@07A<0$N(BXML$BJ8=q(B($B%j%9%H(B1)$B2r@O7k2L(B

>java DomParseDemo demo.xml
>

$B%(%i!

$B%j%9%H(B1$B$G$O%Q!<%5$N%(%i!<$rNc30$G%-%c%C%A$7$h$&$H$7$^$7$?$,!"(BXML$B%Q!<%5$N%(%i!<$O%$%Y%s%H$H$7$FH/@8$9$k$N$G!"%(%i!

$B%(%i!org.xml.sax.ErrorHandler$B$r

$BI=(B2. ErrorHandler$B$N%a%=%C%I(B
$BLa$jCM7?(B $B%a%=%C%IL>(B($B0z?t%j%9%H(B)$B35MW(B
void error(SAXParseException exception)$B2r@O7QB32DG=$J%(%i!
void fatalError(SAXParseException exception)$B2r@O7QB3ITG=$J?<9o$J%(%i!
void warning(SAXParseException exception)$B7Y9p!#(B

$B%$%s%?%U%'!<%9(BErrorHandler$B$Norg.xml.sax.helpers.DefaultHandler$B$r;H$&$3$H$b2DG=$G$9!#%/%i%9(BDefaultHandler$B$O!"%$%s%?%U%'!<%9(BErrorHandler$B$N$[$+$K!"(BContentHandler, DTDHandler, EntityResolver$B$N%a%=%C%I$b5$9$k$3$H$G!"ITMW$J%a%=%C%I$NJN,$9$k$3$H$,$G$-$^$9!#(B

$B%j%9%H(B5$B$O(B$B%j%9%H(B1$B$K(BErrorHandler$B$rDI2C$7$?$b$N$G$9!#(B

$B%j%9%H(B5. ErrorHandler$B$NDomParseDemo2.java)

import org.w3c.dom.*;
import org.apache.xerces.parsers.*;
import org.xml.sax.*;
class DomParseDemo2 {
    public static void main(String[] args) {
        try {
            // DOM$B%Q!<%5$N@8@.(B
            DOMParser parser = new DOMParser();
            // $B%(%i!

$B%j%9%H(B5$B$N(BDomParseDemo2$B$r;H$C$F(B$B%j%9%H(B2(demo2.xml)$B$r=hM}$7$?$N$,!"%j%9%H(B6$B$K$J$j$^$9!#(B

$B%j%9%H(B6. $B%(%i!

>java DomParseDemo2 demo2.xml
$B?<9o$J%(%i!<(B: 8
The element type "name" must be terminated by the matching end-tag "</name>".
org.xml.sax.SAXParseException: The element type "name" must be terminated by the
 matching end-tag "</name>".
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at DomParseDemo2.main(DomParseDemo2.java:13)
>

DOM$B$K$h$kBEEv@-8!>Z(B

DTD$B$r;}$D(BXML$BJ8=q$KBP$9$kBEEv@-8!>Z$r9T$C$F$_$^$7$g$&!#%j%9%H(B2$B$N(BDTD address.dtd$B$H(Bdemo.xml$B$rF1$8%G%#%l%/%H%j$KG[CV$7!"(Bdemo.xml$B$NKAF,$K(BDTD$B@k8@$rDI2C$7$^$9!#$^$?!"$3$3$G$O(Baddress$BMWAG$K(Blang$BB0@-$rDI2C$7$F$_$^$7$g$&!#(B

$B%j%9%H(B7. $BBEEv$G$J$$(BXML$BJ8=q(B(demo3.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address lang="ja">
...

$B%j%9%H(B7$B$N(Bdemo3.xml$B$O!"(BDTD$B$KDj5A$5$l$F$$$J$$(Blang$BB0@-$,5-=R$5$l$F$$$k$?$a!"BEEv@-8!>Z$K$O0z$C$+$+$k$O$:$G$9$,!"%j%9%H(B1$B$N(BDomParseDemo$B$G=hM}$7$F$b$J$K$b=PNO$7$^$;$s!#(BXerces$B$N(BDOM$B%Q!<%5$O!"%G%U%)%k%H$G$OBEEv@-$r8!>Z$7$J$$@_Dj$K$J$C$F$$$^$9!#$=$N$?$a!"(BDTD$B@k8@$,B8:_$9$k(BXML$BJ8=q$G$b!"(BDTD$B$,(BSYSTEM$B<1JL;R$+$il9g$r=|$$$FNc30$rH/@8$7$^$;$s!#(B

Xerces$B$G(BDOM$B%Q!<%5$KBEEv@-8!>Z$r9T$o$;$k$K$O!"%U%#!<%A%c!<$H8F$P$l$k;EAH$_$G;XDj$7$^$9!#(BXerces$B$N(BDOM$B%Q!<%5$N%U%#!<%A%c!<$O(BURI$B$N7A<0$r$7$F$$$F!"Hs>o$K$?$/$5$s$N$b$N$,Dj5A$5$l$F$$$^$9!#$3$3$G$OA4$F$r>R2p$9$k$3$H$O$G$-$^$;$s$,!"(BDOM/SAX$B6&DL$N$b$N$N$J$+$+$i=EMW$J$b$N$rI=(B4$B$K5s$2$^$7$?!#>\:Y$K$D$$$F$O(BXerces$B$N%I%-%e%a%s%H$G;2>H$$$?$@$1$^$9!#(B

$BI=(B3. Xerces$B$NBeI=E*$J%U%#!<%A%c!<(B
$B%U%#!<%A%c!<(Btrue$B$N>l9g$N0UL#(B$B>JN,;~CM(B
http://xml.org/sax/features/namespaces$BL>A06u4V$rG'<1$9$k(Btrue
http://xml.org/sax/features/validation$BBEEv@-8!>Z$r9T$&(Bfalse
http://apache.org/xml/features/validation/dynamicDTD$B@k8@$,B8:_$9$k$H$-$K8B$jBEEv@-8!>Z$r9T$&(Bfalse
http://apache.org/xml/features/validation/schemaXML Schema$B$K$h$kBEEv@-8!>Z$r9T$&(Bfalse
http://apache.org/xml/features/continue-after-fatal-errorfatalError$B8e$K2r@O$rB3$1$k(Bfalse
http://apache.org/xml/features/dom/include-ignorable-whitespace$BL5;k$G$-$k6uGr$r(BDOM$B%D%j!<$K4^$a$k(Bfalse

$BBEEv@-8!>Z$r9T$&$?$a$K$O!"(Bparser$B$KBP$7$F!"

parser.setFeature("http://xml.org/sax/features/validation", true);

$B%j%9%H(B1$B$K%U%#!<%A%c!<$N;XDj$rDI2C$7$?$N$,!"%j%9%H(B8$B$K$J$j$^$9!#(B

$B%j%9%H(B8. DomParseDemo3.java

import org.w3c.dom.*;
import org.apache.xerces.parsers.*;
import org.xml.sax.*;
class DomParseDemo3 {
    public static void main(String[] args) {
        try {
            // DOM$B%Q!<%5$N@8@.(B
            DOMParser parser = new DOMParser();
            // $B%(%i!

$B%j%9%H(B8$B$N(BDomParseDemo3.java$B$G!"2~$a$F(Bdemo2.xml, demo3.xml$B$r2r@O$7$?7k2L$,%j%9%H(B9$B$K$J$j$^$9!#(B

$B%j%9%H(B9. $BBEEv@-8!>Z7k2L(B

>javac DomParseDemo3.java
>java DomParseDemo3 demo2.xml
$B%(%i!<(B: 2$B9TL\(B
Document is invalid: no grammar found.
$B%(%i!<(B: 2$B9TL\(B
Document root element "address", must match DOCTYPE root "null".
$B?<9o$J%(%i!<(B: 8$B9TL\(B
The element type "name" must be terminated by the matching end-tag "</name>".
org.xml.sax.SAXParseException: The element type "name" must be terminated by the  matching end-tag "</name>".
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at DomParseDemo3.main(DomParseDemo3.java:15)
>java DomParseDemo3 demo3.xml
$B%(%i!<(B: 3$B9TL\(B
Attribute "lang" must be declared for element type "address".
>

demo3.xml$B$N>l9g$O!"3N$+$K!"(BDTD$B$KDj5A$5$l$F$$$J$$(Blang$BB0@-$,IT@5$G$"$k$?$a!"%(%i!<$,Js9p$5$l$F$$$^$9!#(Blang$BB0@-$r:o=|$7$F2~$a$F

demo2.xml$B$N>l9g$O!"(BDTD$B@k8@$,B8:_$7$J$$$?$a$N%(%i!<$,Js9p$5$l$F$$$^$9!#%U%#!<%A%c!<$H$7$F!"(BDTD$B@k8@$,B8:_$9$k$H$-$K8B$jBEEv@-8!>Z$r9T$&!"(B"http://apache.org/xml/features/validation/dynamic"$B$r(Btrue$B$K$9$l$P!"$3$N%(%i!<$O>C$($^$9!#$^$?!"(B"http://xml.org/sax/features/namespaces"$B$H(B"http://apache.org/xml/features/validation/schema"$B$r(Btrue$B$K%;%C%H$9$k9T$rDI2C$9$l$P!"L>A06u4V$H(BXML Schema$B$rG'<1$9$k$h$&$K$J$k$N$G!"!V(B$BBEEv@-@)Ls$HL>A06u4V(B$B!W$G>R2p$7$?!"(B$B%j%9%H(B4, 5, 6$B$rAH$_9g$o$;$?(BXML Schema$B$r;H$C$?J8=q$b2r@O$G$-$k$h$&$K$J$j$^$9!#(B

// $B%U%#!<%A%c!<$N;XDj(B
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://xml.org/sax/features/namespaces", true);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);


Copyright © 2003 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送