XSLTの処理時にXMLコンテンツを含むパラメータを渡したいとします。 はここに私のコードです:JavaでのXSLT処理:パラメータ内のXMLコンテンツの受け渡し
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
File xmlFile = new File(xmlFilePath);
File xsltFile = new File(xslFilePath);
Source xmlSource = new StreamSource(xmlFile);
Result result = new StreamResult(System.out);
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);
trans.setParameter("foo", "<bar>Hello1</bar><bar>Hello2</bar>");
trans.transform(xmlSource, result);
は、その後、私は私のXSLファイルの「バー」タグに含まれる値を選択したいと思います。
<xsl:param name="foo"/>
...
<xsl:value-of select="$foo//foo[1]" />
しかし、これは動作しません、私は、このエラーメッセージが表示されます:
org.apache.xpath.objects.XString cannot be cast to org.apache.xpath.objects.XNodeSet
だから私は、私は私のsetParameterをメソッドにXMLオブジェクトを渡す必要がありますね、しかしどれ? XNodeSetオブジェクトを作成する簡単な例が見つかりません...
どうすればいいですか?おかげさまで
なぜパラメータを渡す前にタグを取り除かないのですか? – quaylar
*解析された* XML文書を生成し、これをパラメータの値として渡す必要があります。*渡す文字列*ではありません。 XMLDocument型のパラメータの受け渡しがどのようにサポートされているかについては、XSLTプロセッサのドキュメントを参照してください。 –
@Marcたぶん、このパラメータをどのように処理したいのかを反映するために質問を更新する必要があります。表示したくないからです。 – quaylar