XML DOM XSLT 8章 Transformer
- 8.1. Transformer
- 8.2. 基本的な変換
- 8.3. 出力方式の設定
- 8.4. パラメータの設定
8.3 出力方式の設定
XSLTでは、output要素を使用することにより、出力形式を指定することが可能です。(XSLT 7章参照)。TransformerのsetOutputPropertyメソッドを使用して、出力形式を指定することも可能です。DOMツリーをファイルに出力する、などスタイルシートを指定しない場合などはsetOutputPropertyメソッドを使用します。setOutputPropertyメソッドは、2つ引数を持ちます。1つの目の引数に出力プロパティ名、2つ目の引数に出力プロパティの値を指定します。指定可能な出力プロパティ名は、OutputKeysクラスの文字列定数に登録されています。
定数 | 対応する output要素の属性 |
内容 | 値 |
---|---|---|---|
METHOD | method | 出力される文書の形式を指定する。 | xml, html, text |
VERSION |
version |
出力メソッドのバージョンを指定する。 | |
ENCODING |
encoding | キャラクタエンコーディングを指定する。 | [IANA] または [RFC2278] に登録されている charset 名または X- で始まるもの |
OMIT_XML_DECLARATION |
omit-xml-declaration | XSLT プロセッサに XML 宣言を出力させるべきかどうかを指定する。 | yes または no |
STANDALONE | standalone | XSLT プロセッサにスタンドアロンドキュメント宣言を出力すべきかどうかを指定する。 | yes または no |
DOCTYPE_PUBLIC |
doctype-public |
ドキュメント型宣言で使用される公開識別子を指定する。 | |
DOCTYPE_SYSTEM |
doctype-system | ドキュメント型宣言で使用されるシステム識別子を指定する | |
CDATA_SECTION_ELEMENTS |
cdata-section-elements | テキストノードである子を CDATA セクションに入れて出力すべき要素の名前のリストを指定する。 | |
INDENT | indent | XSLT プロセッサによる結果ツリーの出力時に、空白を追加するかどうかを指定する。 | yes または no |
MEDIA_TYPE | media-type | 結果ツリーの出力結果データのメディア型 (MIME コンテントタイプ) を指定する。 |
setOutputPropertyメソッドは、「6.3.DTDを書く」のプログラムで使用しています。
... 17 18 public static void main(String args[]) throws Exception{ 19 ... 27 28 Document document = domImpl.createDocument("","struts-config",documentType); 29 30 31 TransformerFactory transformerFactory = TransformerFactory.newInstance(); 32 Transformer transformer = transformerFactory.newTransformer(); 33 transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 34 transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 35 transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd") 36 transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "-//Apache SoftWare Foundation//DTD Struts Configuration 1.1//EN"); 37 38 39 DOMSource source = new DOMSource(document); 40 File newXML = new File("struts-config.xml"); 41 FileOutputStream os = new FileOutputStream(newXML); 42 StreamResult result = new StreamResult(os); 43 transformer.transform(source, result); 44 ...
33−36行目で出力プロパティを設定しています。INDENTプロパティをyesに指定することにより、出力結果に改行や空白文字が随時追加されます。また、DOCTYPE_SYSTEM、DOCTYPE_PUBLICプロパティを指定することにより、DTDが出力されます。