目次へ

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が出力されます。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp