2016-08-28 27 views
-1

Saxonを使用してXQueryファイルを実行しようとしています。コードが実行されると、このエラーが発生します。面白いのは、XMLSpyでスタンドアロンファイルとしてデバッグするときにXQがうまく動作することです。XQuery - エラー - XML-20201

Error reading datasource: XQuery Processor Exception: Exception while calling Saxon: org.xml.sax.SAXParseException: : XML-20201: (Fatal Error) Expected name instead of :.; SystemID: ; Line#: 8; Column#: -1; Cause: : XML-20201: (Fatal Error) Expected name instead of :. 

私はエラーが起こると私はそれを修正するために行うことができる場所を把握することはできませんよ。私はそれを展開し、自分のアプリケーションを実行すると、次の例外がスローされます。私の唯一の推測は、XQueryへの入力XMLが問題かもしれないということです。しかし、私はXQueryのどの行が失敗しているのかわかりません。 8行目はコメント行です!

エラーの原因を絞り込む方法はありますか?

+0

XQueryはXMLドキュメントをロードしますか? SAXParseExceptionは、XML文書の解析が失敗していることを示しています。コマンドラインやJavaコード内でSaxonをどのように使っていますか? Javaコードを使用する場合は、名前空間対応のSAXParserFactoryを使用してください。https://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/SAXParserFactory.html#setNamespaceAware(boolean) –

答えて

1

クエリの実行にはどのAPIを使用していますか?ソースドキュメントをどのように読み込みますか?

ソース文書のXMLパーサによってSaxonにエラーが報告されているように見えます。 8行目は、ソース文書の行番号への参照です。パーサー例外の形から、おそらくXQJ APIを介してプル・パーサーを使用していると思われます。 (しかし、これは純粋な推測であると少し話しました。)

まず、XMLソースドキュメントが実際に整形式であることを確認します。そうであれば、これはプルパーサーの問題かもしれません。私がテストしたStAXパーサの中には信頼性が非常に低いものがあり、私が推奨できるのはWoodstoxだけです。

+0

@MartinHonnen @ MichaelKay 遅れて申し訳ありませんが、私は何が間違っていたか把握することができました。これは、EclipseがXMLを保存する方法でした。 Ctrl + Iを押してXMLをインデントしました。そこで、いくつかの行が折り返して次の行に行きました。 xmlが読み込まれると、タグ名と "xmlns"の間にスペースはありませんでした。だから例外を投げていた。 ヒントをありがとう、私はあなたが言ったことから手がかりを拾うことができました。ありがとう! –