2009-09-11 13 views
5

私は組み込みのJava XML Transformerを使用してXML文書をテキストにシリアライズしています。私はHTMLモードで出力しているときに問題があります。「HTML」メソッドを使用してJava XMLトランスフォーマに<META>タグを追加しないようにするにはどうすればよいですか?

head要素を挿入するたびに、内蔵トランスフォーマーはコンテンツタイプのデータでMETAタグを挿入することを決定します。私はこのタグを自分のデータの中に入れたくないので、この機能を無効にする出力パラメータを見つけることができないようです。私はxsltスタイルシートを構築して問題のタグを取り除くことができますが、それを無効にするトランスフォーマ自体のパラメータを設定するだけで簡単になります。

あなたは本当にこのタグを持っているはずです - 私を信じて、私はそれを必要としません、簡潔さのために私はそれに入っていません。

サンプルコード

Document d; 
//d = <html><head><title></title></head><body></body></html> 

Transformer t; //properly inited with no xslt specified 

t.setOutputProperty(OutputKeys.METHOD,"html"); 
t.setOutputProperty(OutputKeys.INDENT,"no"); 
t.transform(new DOMSource(d), result); 

System.out.println(result); 

戻り

<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title><style type="text/css"></style></head><body></body></html> 

ポイントのケースは、私はそこにそのMETAタグを望んでいません。可能な限り簡単に取り除くにはどうしたらいいですか?

UPDATE:

私は私が探しているものを行うことになっているオプション{http://xml.apache.org/xalan}omit-meta-tag渡って実行しました。しかし、それは無視されているように見えます。

+0

セット** XML **値として動作しているようです。 – adatapost

+0

それは私がやっていることのためにhtmlにする必要があります – Mike

+1

これはXSLTの[specs](http://www.w3.org/TR/xslt#section-HTML-Output-Method)による標準的な動作です。デフォルト以外の文字セットエンコードを使用している場合 –

答えて

2

組み込みのJavaトランスフォームでは"{http://xml.apache.org/xalan}omit-meta-tag"が無視されるため、これは複雑な状況です。

xalanjのようなものをダウンロードし、クラスパスに手動で入力するのが簡単な答えです。

+4

これを行う場合は、Javaに組み込まれているバージョンを上書きするように、保証されたディレクトリに配置する必要があります。詳細については、http://java.sun.com/javase/6/docs/technotes/guides/standards/を参照してください。 –

4

は下に追加してみます。Java 8のu 131、

transformer.setOutputProperty("{http://xml.apache.org/xalan}omit-meta-tag", "yes"); 

trans.setOutputProperty(OutputKeys.METHOD, "xml"); 
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
0

OutputKeys.METHODの期待

関連する問題