Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
与えられた:
declare variable $seq := ( (('foo', 'bar'), ('baz')) ); <result>{ ($seq[(.)[1][1] = 'foo'])[2][1] }</result>
私が期待する:
<result>baz</result>
しかし、得る:
</result>
なんで?
XQuery では配列に次元(('foo', 'bar'), ('baz'))がないため、 と変わりません('foo', 'bar', 'baz')。
(('foo', 'bar'), ('baz'))
('foo', 'bar', 'baz')
($seq[(.)[1][1] = 'foo'])$seq[. = 'foo']=>と同じtext{'foo'}です。これは長さ 1 のシーケンスとして扱われます。つまり(text{'foo'})[1]=>text{'foo'}ですが、(text{'foo'})[2]明らかに です()。
($seq[(.)[1][1] = 'foo'])
$seq[. = 'foo']
text{'foo'}
(text{'foo'})[1]
(text{'foo'})[2]
()