0

FreeMarker の実験を始めたばかりで、この問題にぶつかりました。

提供されたXMLファイルでオンラインチュートリアルを使用し、次のようなものを書くと

${doc.book.chapter.para[0]}

期待される出力が得られます。

ただし、独自の XML ドキュメントを使用しようとすると、エラー Expression.... is undefined が表示されます。

これは、私の XML には属性があり、チュートリアルには属性がないためであることがわかったと思います。

この結論に達したのは、

${doc.MyElement[0]}  

未定義のエラーが発生します

しかし、XML ドキュメントから属性を削除して、同じことを入力すると、

${doc.MyElement[0]}

MyElement に Children があるため、別のエラーが発生します。

私は明らかに 2 番目のエラーを予期して理解しましたが、なぜ属性を削除するだけで変更されるのでしょうか? 確かにこれらは無視されるべきですか?

他の誰かがこの問題を抱えていますか? 解決策は何ですか?

ありがとう、

バジル

PS。用語が正しいことを確認するために、属性と言うときは、つまり

単なる「本」ではなく、「本の種類 = フィクション」

4

1 に答える 1

0

コメントで提供されている例から、違いの原因は、xmlnsXML で特別な意味を持つ属性を追加/削除することです。doc.Dataクエリが要素と一致するDataには、要素名と XML 名前空間の両方が一致する必要があります。XML 名前空間が使用されていない場合doc.Dataは、要素に一致しDataます。ただし、XML の要素を XML 名前空間に入れると、doc.Data(FreeMarker でデフォルトの名前空間を設定していないため) 0 要素に一致するため、doc.Data長さが 0 のシーケンスになるため、[0]存在しません。詳細については、 http://freemarker.org/docs/xgui_imperative_learn.htmlのXML 名前空間を参照してください。

于 2012-07-12T09:55:40.303 に答える