解答例 - 実習課題2 - 7.DOMと名前空間
(実習課題2)
7.4で例に挙げたプログラムを完成させなさい。
解答例
package com.techscore.dom.chapter7.exercise2;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* WriteJSPFile.java
*
* TECHSCORE Java XML DOM XSLT 7章 実習課題2
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
public class WriteJSPFile {
public static void main(String[] args) throws Exception{
String xhtml_namespace_uri="http://www.w3.org/1999/xhtml";
String htmltag_namespace_uri="http://jakarta.apache.org/struts/tags-html-1.0";
String xmlns_namespace_uri="http://www.w3.org/2000/xmlns/";
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder=factory.newDocumentBuilder();
DOMImplementation domImpl=builder.getDOMImplementation();
Document document=domImpl.createDocument(xhtml_namespace_uri,"html",null);
Element html=document.getDocumentElement();
Attr xhtmlDeclare=document.createAttributeNS(xmlns_namespace_uri,"xmlns");
xhtmlDeclare.setValue(xhtml_namespace_uri);
html.setAttributeNodeNS(xhtmlDeclare);
Element body = document.createElementNS(xhtml_namespace_uri, "body");
html.appendChild(body);
Element form=document.createElementNS(xhtml_namespace_uri,"form");
body.appendChild(form);
Attr action=document.createAttributeNS(null,"action");
action.setValue("/sample2/productInput.jsp");
form.setAttributeNodeNS(action);
Attr method = document.createAttributeNS(null, "method");
method.setValue("post");
form.setAttributeNodeNS(method);
Element table = document.createElementNS(xhtml_namespace_uri, "table");
Element tr = document.createElementNS(xhtml_namespace_uri, "tr");
Element td1 = document.createElementNS(xhtml_namespace_uri, "td");
td1.appendChild(document.createTextNode("商品名"));
tr.appendChild(td1);
Element input = document.createElementNS(xhtml_namespace_uri, "input");
Attr type = document.createAttributeNS(null, "type");
type.setValue("text");
input.setAttributeNodeNS(type);
Attr name = document.createAttributeNS(null, "name");
name.setValue("name");
input.setAttributeNodeNS(name);
Element td2 = document.createElementNS(xhtml_namespace_uri, "td");
td2.appendChild(input);
tr.appendChild(td2);
table.appendChild(tr);
form.appendChild(table);
Element formWithPrefix=document.createElementNS(htmltag_namespace_uri,"form");
Attr action2=document.createAttributeNS(null,"action");
action2.setValue("/sample/productInput.do");
formWithPrefix.setAttributeNodeNS(action2);
Attr method2 = document.createAttributeNS(null, "method");
method2.setValue("post");
formWithPrefix.setAttributeNodeNS(method2);
body.appendChild(formWithPrefix);
Attr htmlTagDeclare=document.createAttributeNS(xmlns_namespace_uri,"html");
htmlTagDeclare.setPrefix("xmlns");
htmlTagDeclare.setValue(htmltag_namespace_uri);
formWithPrefix.setAttributeNodeNS(htmlTagDeclare);
formWithPrefix.setPrefix("html");
Element table2 = document.createElementNS(xhtml_namespace_uri, "table");
Element tr2 = document.createElementNS(xhtml_namespace_uri, "tr");
Element td3 = document.createElementNS(xhtml_namespace_uri, "td");
td3.appendChild(document.createTextNode("商品名"));
tr2.appendChild(td3);
Element td4 = document.createElementNS(xhtml_namespace_uri, "td");
Element inputWithPrefix = document.createElementNS(xmlns_namespace_uri, "input");
Attr typeInput = document.createAttributeNS(xmlns_namespace_uri, "type");
typeInput.setValue("text");
Attr propertyInput = document.createAttributeNS(xmlns_namespace_uri, "property");
propertyInput.setValue("property");
inputWithPrefix.setAttributeNodeNS(typeInput);
inputWithPrefix.setAttributeNodeNS(propertyInput);
inputWithPrefix.setPrefix("html");
td4.appendChild(inputWithPrefix);
tr2.appendChild(td4);
table2.appendChild(tr2);
formWithPrefix.appendChild(table2);
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
transformer.setOutputProperty(OutputKeys.ENCODING,"EUC-JP");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
}
}

