0

JAXBとmaven-jaxb2-pluginを使用していますが、現在、スキーマをJavaコードに正常にバインドできます。
また、特定のスキーマを変更して追加情報を追加する.xslファイル「annotate_schemas.xsl」もあります。
最後に、変換するスキーマに、ヘッダーを追加しました。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="annotate_schemas.xsl"?>
...

問題は、.xslが正しい間(ブラウザーでスキーマファイルを開いた場合、変換は問題なく実行されます)、JAXBはそれを無視し、変更されていないバージョンのスキーマをバインドすることです。

私の質問は:JAXB(および/またはそのプラグイン)にはXSLTプロセッサがありますか?元の変換ではなくXSLT変換の結果をバインドするようにJAXBに指示する方法はありますか?

どうもありがとうございます

4

2 に答える 2

2

JAXBは、XMLを消費するアプリケーションの大部分と同様に、<?xml-stylesheet?>処理命令を認識しません。ドキュメントをJAXBに渡す前に変換する場合は、たとえばJAXP変換APIを使用して、ドキュメントを明示的に変換する必要があります。(JAXPには、xml-stylesheet PIの値に従って変換を要求するオプションがあります:TransformerFactory.useAssociatedStylesheet())。

于 2012-07-24T21:35:31.610 に答える
0

あなたはこのようなことを試すことができます:

TransformerFactory transFact = TransformerFactory.newInstance();
Templates displayTemplate = transFact.newTemplates(new StreamSource(new File("your_xsl_file")));

TransformerHandler handler = 
  ((SAXTransformerFactory) transFact).newTransformerHandler(displayTemplate);
于 2012-07-24T14:40:53.847 に答える