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 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/89151629

この記事へのトラックバック
×

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