2008年03月11日

XQueryでこけたとこ

XQueryなかなか楽しい。コメントの形式が「(:」ではじまって、「:)」で終わるところがステキだw

で、書いている最中にこんなエラーが


An attribute node (title) cannot be created after the children of the containing element


どうも「$todo//*['created' = ./@class]/@title」とかXPathを書いたときに帰ってくるのは属性値のみだと思ってたけど、これだと属性ノードが帰ってくる??


エレメントに子を追加した後に、そのエレメントにアトリビュートを追加すること。このような場合、実装はエラーを通知してもよいし、アトリビュートを無視してもよい。


XSLT1.0のこれ↑(7.1.3)にひっかかってるのかと思い「$todo//*['created' = ./@class]/@title/data()」とかにしてみても
エラーが出る。なんじゃこれはと思いいろいろ検索。

リテラル結果要素で出力をつくるときに、

1. 親要素Aをつくる
2. Aの属性をつくる
3. Aの内容(子要素 or テキスト)をつくる

の順に従わず、2と3が逆になるとXSLT1.0では警告、XSLT2.0ではエラーということか。たぶん。また仕様を確かめた方がよさげ。

http://biglist.com/lists/lists.mulberrytech.com/xsl-list/archives/200609/msg00036.html

XSLT1.0ではエラー、XSLT2.0からは警告が出るのがプロセッサの正しい仕様
ラベル:xml XSLT XQuery
posted by りゃま at 15:18| 🌁| Comment(0) | TrackBack(0) | Tips/Memo | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。