ganti node di basex xml menggunakan xquery

Saya mencoba mengganti node di xml menggunakan kode berikut

String xquery_replace="xquery replace node CIDEM/ShopFloor/foo[/CIDEM/ShopFloor/ShopFloorID=1] with "+new_gbXML;
session.execute(xquery_replace);

Jadi saya ingin misalnya mengubah node foo dari node ShopFloor pertama

Xml memiliki konten berikut

<CIDEM>
    <ShopFloor>
        <ShopFloorID>1</ShopFloorID>
        <foo bar="2">
            <baz>there</baz>
        </foo>
    </ShopFloor>
  <ShopFloor>
      <ShopFloorID>2</ShopFloorID>
      <foo bar="5">
          <baz>there</baz>
      </foo>
  </ShopFloor>
</CIDEM>

Dan saya menerima kesalahan berikut "[XUTY0008] Elemen tunggal, teks, atribut, komentar, atau pi diharapkan sebagai target pengganti."

Tahu kenapa?


person vagelis    schedule 19.08.2015    source sumber
comment
Jalannya salah. Seharusnya seperti CIDEM/ShopFloor[ShopFloorID="1"]/foo ketika menangani node foo dari ShopFloorID PERTAMA   -  person John    schedule 20.08.2015


Jawaban (1)


Pesan kesalahan itu sendiri memberitahukan apa yang salah.

"[XUTY0008] Elemen tunggal, teks, atribut, komentar, atau pi diharapkan sebagai target pengganti."

artinya mengharapkan elemen atau teks atau atribut... sebagai target untuk diganti. Namun jalur dalam kueri Anda tidak menghasilkan apa-apa. Baca komentar saya untuk jalur yang benar.

Misalnya: Jika Anda ingin mengganti nilai atribut bar untuk ShopFloorID dengan nilai 1, maka jalurnya harus CIDEM/ShopFloor[ShopFlorrID="1"]/foo/@bar

person John    schedule 20.08.2015