アカウント名:
パスワード:
書き方1
<sample> <item option="abc"> <name>ABC</name> </item></sample>
書き方2
<sample> <item> <name>ABC</name> <option>abc</option> </item></sample>
どっちが正しいのか分からず、数名と議論して、結局「書き方2」の方を選びましたけども。
dtd、Schemaとパーサー次第。妥当性検査するならきっちり決めた方がいいし、そうではなく連想配列に単純に突っ込みたいならどっちでもいい。Attributeはあくまで属性なので、読み飛ばされてもデータの根幹部分を毀損しないような感じにしてるけど、そうで無いschemaも見るのでそれぞれかな。
Attributeという名前に惑わされてないか。ElementもText NodeもAttributeも、等しくNodeの派生であって、XMLの規格で優先順位や重要度は設定されていない。故に、(事前に明確に不要とわかっている時以外は)読み飛ばすような処理をしてはならないし、一般的なXMLパーサーにそんな挙動はない。
XPath の string 関数で element node を文字列化すると、直下や配下 element node 配下の text node は文字列中に含まれるけど、配下 attribute node 配下の text node は文字列中に含まれない、とかはあるよね。XPath の仕様が変なわけでもなく、XMLノードを文字列化する際によく見る仕様だと思う。(HTMLの仕様がそうだから、XML非対応ブラウザで無理やり XML を開いた場合等もそんな感じになる)
規格上、element も attribute も等しく node であるというのはそうだけれども、だったら element だけあればよいのであって、attribute なんていらない。
少なくとも、XPath の規格設計者はそう考えてるんだと思う。
XPath使うならchildのtext見るより対象ノードのattributeみる方が自然だと思うけど。特定の要素が不可分に持つデータは属性、分離しても意味を持ちうるのが子要素じゃないの?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生unstable -- あるハッカー
仕様が自由過ぎて悩ましい (スコア:1)
書き方1
書き方2
どっちが正しいのか分からず、数名と議論して、結局「書き方2」の方を選びましたけども。
Re:仕様が自由過ぎて悩ましい (スコア:1)
dtd、Schemaとパーサー次第。
妥当性検査するならきっちり決めた方がいいし、そうではなく連想配列に単純に突っ込みたいならどっちでもいい。
Attributeはあくまで属性なので、読み飛ばされてもデータの根幹部分を毀損しないような感じにしてるけど、そうで無いschemaも見るのでそれぞれかな。
Re:仕様が自由過ぎて悩ましい (スコア:1)
Attributeという名前に惑わされてないか。
ElementもText NodeもAttributeも、等しくNodeの派生であって、XMLの規格で優先順位や重要度は設定されていない。
故に、(事前に明確に不要とわかっている時以外は)読み飛ばすような処理をしてはならないし、一般的なXMLパーサーにそんな挙動はない。
Re: (スコア:0)
XPath の string 関数で element node を文字列化すると、
直下や配下 element node 配下の text node は文字列中に含まれるけど、
配下 attribute node 配下の text node は文字列中に含まれない、
とかはあるよね。
XPath の仕様が変なわけでもなく、XMLノードを文字列化する際によく見る仕様だと思う。
(HTMLの仕様がそうだから、XML非対応ブラウザで無理やり XML を開いた場合等もそんな感じになる)
規格上、element も attribute も等しく node であるというのはそうだけれども、
だったら element だけあればよいのであって、attribute なんていらない。
Re: (スコア:0)
少なくとも、XPath の規格設計者はそう考えてるんだと思う。
XPath使うならchildのtext見るより対象ノードのattributeみる方が自然だと思うけど。
特定の要素が不可分に持つデータは属性、分離しても意味を持ちうるのが子要素じゃないの?