XSLT $B$N(B API

revised: Nov./16th/2003

DOM API$B$K$h$k(BXSLT$B$NMxMQ(B

JAXP$B$G$O!"(BXSLT$B$r=hM}$9$k$?$a$K!"%9%H%j!<%`!"(BDOM$B!"(BSAX$BMQ$N;0$D$N%Q%C%1!<%8$H!"$3$l$i$K6&DL$9$k>e0L$N%Q%C%1!<%8$rDs6!$7$F$$$^$9!#(B

$B%j%9%H(B3 (XSLTDemo.java)$B$G$O!"%9%H%j!<%`$K$h$k(BXSLT$B$N=hM}$NNc$r5s$2$^$7$?!#$3$3$G$O!"%=!<%9%D%j!<$H(BXSLT$BJ8=q$rjavax.xml.transform.stream.StreamSource $B$H!"7k2L%D%j!<$rjavax.xml.transform.stream.StreamResult $B$rDj5A$7!"(BXSLT$B%W%m%;%C%5$rCj>]2=$9$k(B javax.xml.transform.Transformer $B$H$=$N%U%!%/%H%j!javax.xml.transform.TransformerFactory $B$GF~=PNO$r9T$C$F$$$^$7$?!#(B

DOM$B$N>l9g$O!"(BDOMSource $B$H(B DOMResult $B$r;H$C$F!"(BDOM$B%D%j!<$G$"$k(B Document $B%*%V%8%'%/%H$KF~=PNO$7$^$9!#%9%H%j!<%`$H(BDOM$B$G$O!"F~=PNOBP>]$,%G%P%$%9$+(BDOM$B%D%j!<$G$"$k$+$NAj0c$7$+$"$j$^$;$s!#(BSAX$B$N>l9g$b!"(BSAXSource $B$H(B SAXResult $B$K$h$jF~=PNO$r@)8f$G$-$^$9$,!"%$%Y%s%H6nF07?$G$"$k$?$a$K!"%O%s%I%i$K$h$k=hM}$,I,MW$K$J$j!"%9%H%j!<%`$d(BDOM$B$KHf$Y$k$H!"$d$dJ#;($G$9!#(B

$B%j%9%H(B11$B$O!"(BDOM$B%Y!<%9$N(BXSLT$B=hM}MQ$N%3!<%I$G$9!#$3$NNc$G$O!":G=i$K(BXSLT$B$H%=!<%9(BXML$B$N(B2$B$D$N(BDocument$B%*%V%8%'%/%H$G$D$/$j!"$3$l$r0z?t$K$7$F!"(BDOMSource$B%*%V%8%'%/%H(BxslSrc$B$H(Bsource$B$r@8@.$7$F$$$^$9!#(BDOMResult$B%*%V%8%'%/%H(Bresult$B$O!":G=i$O6u$C$]$G@8@.$7$F$$$^$9!#B3$$$F!"(BXSLT$B%W%m%;%C%5(Btransformer$B$r%U%!%/%H%j(BtFactory$B$+$i@8@.$7!"%a%=%C%I(Btranform()$B$Gresult$B$K7k2L%D%j!<$,=q$-9~$^$l$^$9!#(B

$B%j%9%H(B11$B$N8eH>$O!"(BDOM$B%D%j!<$N=PNOMQ$N%3!<%I$G$9!#(BDOM level 1, level 2$B$G$O!"%7%j%"%i%$%:$N(BAPI$B$ODs6!$5$l$F$$$^$;$s!#$3$3$G$O!"(BDOMResult$B$+$iorg.apache.xml.serialize $B$r;H$$$^$7$?!#(B

Xerces$B$G$O!"

  1. DOMResult$B$+$i(BNode$B$r$B%j%9%H(B11$B$G$O!"(BDocument$B%*%V%8%'%/%H(BresultDoc$B$K$J$k!#(B
    Document resultDoc = (Document)result.getNode();
  2. org.apache.xml.serialize.OutputFormat$B$G!"=PNOBP>]$N(BDocument$B%*%V%8%'%/%H!"J8;zId9f2=J}K!!"6uGrN`J8;z$N0];}$r;XDj$9$k!#(B
    OutputFormat formatter = new OutputFormat(resultDoc, "UTF-8", true);
  3. $B=PNO%U%!%$%k$N%9%H%j!<%`$r@8@.$9$k!#%j%9%H(B13$B$G$O!"%P%C%U%!%j%s%0$N%9%H%j!<%`$G%i%C%W$7$F$$$k!#(B
    Writer out = new OutputStreamWriter(new FileOutputStream("DOMresult.xml"), "UTF-8");
  4. DOM$B%N!<%I$r=PNO$9$k$?$a$N(Borg.apache.xml.serialize.XMLSerializer$B$G!"=PNO%9%H%j!<%`$H=PNO%U%)!<%^%C%H$r;XDj$9$k!#(B
    XMLSerializer serializer = new XMLSerializer(out, formatter);
  5. $B%7%j%"%i%$%:!JD>Ns2=!K$r9T$$!"serializer.serialize(resultDoc);
  6. $B%j%9%H(B11. DOM$B$K$h$k(BXSLT$B=hM}(B (XSLTDOMDemo.java)

    import java.io.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import org.w3c.dom.traversal.*;
    import org.apache.xml.serialize.*;
    class XSLTDOMDemo {
        public static void main(String[] args) {
            try {
                // DOM$B%Q!<%5MQ%U%!%/%H%j$N@8@.(B
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                factory.setNamespaceAware(true);
                // $BL>A06u4V$rG'<1$9$k(B
                factory.setNamespaceAware(true);
                // DOM Document$B%$%s%9%?%s%9MQ%U%!%/%H%j$N@8@.(B
                DocumentBuilder builder = factory.newDocumentBuilder();
                // $B2r@O$H(BDocument$B%$%s%9%?%s%9$NNs2=!K(B
                serializer.serialize(resultDoc);
                // $B=PNO%9%H%j!<%`$N%/%m!<%:(B
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    $B%j%9%H(B11$B$G$O!"0lHLNc$r<($9$?$a$K!"(BXMLSerializer$B$r;H$$$^$7$?$,!"(BHTML/XSHTML$BMQ$K!"(BHTMLSerializer/XHTMLSerializer$B$bMQ0U$5$l$F$$$^$9!#(BDOM level 3$B$G!"%7%j%"%i%$%:$,%5%]!<%H$5$l$k$h$&$K$J$k$^$G$O!"$3$l$i$N%/%i%9$r;H$&$N$,JXMx$G$9!#(B

    $B%j%9%H(B11$B$N$B%j%9%H(B3$B$N(B XSLTDemo.java $B$N>l9g$HF1MM$G$9!#Nc$($P!"(B$B%j%9%H(B9$B$N(BXSLT$BJ8=q(B (XSLTDemo3.xsl) $B$G(B$B%j%9%H(B1$B$N(BXML$BJ8=q(B (XPathDemo.xml)$B$rJQ49$9$k$K$O!"DOMresult.xml" $B$K=q$-=P$5$l$^$9!#C"$7!"(BDocument $B%*%V%8%'%/%H(B resultDoc $B$+$i$O(BDTD$B@k8@$,7gMn$7$F$$$k$N$G!"J8=q7?@k8@$O=PNO$5$l$^$;$s!#(B

    >javac XSLTDOMDemo.java
    >java XSLTDOMDemo  XSLTDemo3.xsl XPathDemo.xml
    

    SAX API$B$K$h$k(BXSLT$B$NMxMQ(B

    SAX$B$K$h$k(BXSLT$B$NMxMQ$O!"%9%H%j!<%`$d(BDOM$B%D%j!<$K$h$k(BAPI$B$H$O$B%j%9%H(B12$B$K5s$2$^$9!#(B

    $B%j%9%H(B12$B$O!"(BXSLT$B$G%=!<%9(BXML$BJ8=q$rJQ49$7$?7k2L$K!"(B$B0JA0:n$C$?(B$B%3%s%F%s%H!&%O%s%I%i(BMySAXHandler$B$rE,MQ$9$k$b$N$G$9!#(B

    $B:G=i$K(BSAX$B%$%s%?%U%'!<%9$G$"$k(B org.xml.sax.XMLReader $B$r@8@.$7$^$9!#B3$$$F!"8eB3$N%3!<%I$GMxMQ$9$k%G%U%)%k%H!&%O%s%I%i$H(B javax.xml.transform.sax.SAXTransformerFactory $B$r@8@.$7$^$9!#(BSAXTransformerFactory $B$O!"(BTransformerFactory $B$N7Q>5$G!"(BSAX$BMQ$N(B org.xml.sax.ContentHandler $B$r@8@.$9$k%U%!%/%H%j!&%a%=%C%I$rDs6!$7$^$9!#(B$B%j%9%H(B12$B$G$O!"(Bjavax.xml.transform.sax.TemplatesHandler $B$H!"(Bjavax.xml.transform.sax.TransformerHandler $B$r@8@.$7$F$$$^$9!#(B

    TemplatesHandler $B$O!"(BXSLT$BJ8=q$r9=J82r@O$7!"(Bjavax.xml.transform.Templates $B%*%V%8%'%/%H$r@8@.$9$k$N$KMxMQ$7$^$9!#(B$B%j%9%H(B12$B$G$O!"(BErrorHandler $B$J$I$b%G%U%)%k%H!&%O%s%I%i$r%;%C%H$7$F$+$i!"(BXSLT$BJ8=q$r9=J82r@O$7$F$$$^$9!#(B

    TransformerHandler $B$O!"(BXML$BJ8=q$r9=J82r@O$7!"%D%j!<9=B$JQ49$9$k%O%s%I%i$G$9!#(B$B%j%9%H(B12$B$G$O!"(BSAXTransformerFactory$B$N%U%!%/%H%j!&%a%=%C%I$K!"(BTemplatesHandler $B$,(BXSLT$BJ8=q$r9=J82r@O$7$FTemplates $B%*%V%8%'%/%H$rM?$($F@8@.$7$F$$$^$9!#(B

    TranslatesHandler $B$,JQ497k2L$r=PNO$9$k(B javax.xml.transform.sax.SAXResult $B$O!"%a%=%C%I(B setResult() $B$N0z?t$H$7$FM?$($^$9!#(BSAXResult $B$r@8@.$9$k$KEv$?$j!"%?!<%2%C%H$H$9$k(B ContentHandler $B$r0z?t$KM?$($k$3$H$G!"(BTransformerHandler $B$K$h$kJQ497k2L$,!"$=$N$^$^%?!<%2%C%H$N(B ContentHandler $B$KEO$5$l$k$3$H$K$J$j$^$9!#(B

    $B%j%9%H(B12. SAX$BMQ(BAPI (XSLTSAXDemo.java)

    import javax.xml.parsers.*;
    import javax.xml.transform.*;
    import javax.xml.transform.sax.*;
    import javax.xml.transform.stream.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;
    class XSLTSAXDemo {
        public static void main(String[] args) {
            try {
                // SAX$B%Q!<%5$N%U%!%/%H%j!<$N@8@.(B
                SAXParserFactory factory = SAXParserFactory.newInstance();
                // $B%U%#!<%A%c!<$N@_Dj(B
                factory.setNamespaceAware(true);
                factory.setFeature("http://apache.org/xml/features/validation/dynamic", true);
                factory.setFeature("http://apache.org/xml/features/validation/schema", true);
                // SAX$B%Q!<%5$N@8@.(B
                SAXParser parser = factory.newSAXParser();
                // XMLReader$B$N@8@.(B
                XMLReader reader = parser.getXMLReader();
                //$B%G%U%)%k%H!&%O%s%I%i$N@8@.(B
                DefaultHandler handler = new MySAXHandler();
                // $B%O%s%I%i$NEPO?(B
                reader.setDTDHandler(handler);
                reader.setErrorHandler(handler);
                
                // SAXTransformerFactory$B$N@8@.(B
                SAXTransformerFactory saxTFactory = (SAXTransformerFactory)TransformerFactory.newInstance();
                
                // TemplatesHandler$B$N@8@.(B
                TemplatesHandler templatesHandler = saxTFactory.newTemplatesHandler();
                // TemplatesHandler$B$NEPO?(B
                reader.setContentHandler(templatesHandler);
                // XSLT$BJ8=q$N2r@O(B
                reader.parse(args[0]);
                // Templates$B$N@8@.(B
                Templates templates = templatesHandler.getTemplates();
                // TransformerHandler$B$N@8@.(B
                TransformerHandler transformerHandler = saxTFactory.newTransformerHandler(templates);
                // TransformerHandler$B$NEPO?(B
                reader.setContentHandler(transformerHandler);
                
                // SAXResult$B$N@8@.(B
                SAXResult result = new SAXResult(new MySAXHandler());
                // SAXResult$B$NEPO?(B
                transformerHandler.setResult(result);
                
                // $B
    

    $B%j%9%H(B12$B$NXPathDemo.xml) $B$,(B XSLT$BJ8=q(B (XSLTDemo3.xsl) $B$K$h$C$F(B XHTML $BJ8=q$KJQ49$5$l!"$=$N7k2L$r(B MySAXHandler $B$,=hM}$7$F$$$k$3$H$,J,$+$j$^$9!#(B

    $B%j%9%H(B13. XSLTSAXHandler.java$B$N

    >javac XSLTSAXDemo.java
    >java XSLTSAXDemo XSLTDemo3.xsl XPathDemo.xml
    startDocument()
    startElement()
            namespace=http://www.w3.org/1999/xhtml
            local name=html
            qualified name=html
            attribute name=
            attribute qualified name=xmlns
            attribute value=http://www.w3.org/1999/xhtml
            attribute name=lang
            attribute qualified name=xml:lang
            attribute value=ja
    startElement()
            namespace=http://www.w3.org/1999/xhtml
            local name=head
            qualified name=head
    startElement()
            namespace=http://www.w3.org/1999/xhtml
            local name=meta
            qualified name=meta
            attribute name=content
            attribute qualified name=content
            attribute value=text/html; charset=UTF-8
            attribute name=http-equiv
            attribute qualified name=http-equiv
            attribute value=content-type
    endElement()
    ...$B>JN,(B
    


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