2011-07-01 15 views
1

私はXMLからXHTMLへのXSL変換を実行するために変圧器を使用しています:このコードでXSLファイルを明示的に提供せずにXSL変換できますか?

import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.stream.StreamResult; 
import javax.xml.transform.stream.StreamSource; 
// ... 
Transformer transformer = TransformerFactory.newInstance() 
    .newTransformer(/* xsl */); 
transformer.transform(new StreamSource(xml), new StreamResult(xhtml)); 

私は明示的にXSLファイルを提供する必要があります。私の状況では、どのファイルを使用すべきか分かりません。代わりに、私は変圧器に元のXMLの<?xsl-stylesheet?>処理命令からこの情報を取得します。 JDK6とSaxonで可能ですか?

答えて

3

ザランができるのは、thisです。 おそらくサクソンだけでなく、それがjavax.xml.transform.TransformerFactoryの方法であって、私はそれはサクソンの下でうまく働いてい@JustYo提案へgetAssociatedStylesheet

1

感謝。

System.setProperty("javax.xml.transform.TransformerFactory", 
    "net.sf.saxon.TransformerFactoryImpl"); 

StreamSource xmlSource = new StreamSource(xml); 
TransformerFactory factory = TransformerFactory.newInstance(); 
Source xslSource = factory.getAssociatedStylesheet(xmlSource, null, null, null); 
Transformer transformer = factory.newTransformer(xslSource); 
transformer.transform(xmlSource, new StreamResult(xhtml));