データの読み込みでは、一部のXML属性が正しくマッピングされていないようで、これを修正しようとしていますが、MySQLによるこのXML列の処理に苦労しています。
サブフィールド(属性'code = "3"')を持つフィールド(属性'tag = "520"')のすべてのオカレンスのXML属性(値ではない)を修正したいと思います。以下のクエリは、影響を受けた0行、見つかった1行を返します。これを達成する方法に関する手がかり。
UPDATE biblioitems
SET marcxml = UpdateXML(marcxml,'datafield[@tag="520"]/subfield[@code="3"]',
'datafield[@tag="520"][@ind1="3"]/subfield[@code="a"]')
WHERE biblionumber = '220405';
明確にするために含まれているXMLフラグメント:
元のフラグメント
<datafield tag="300" ind1=" " ind2=" ">
<subfield code="f">article</subfield>
</datafield>
<datafield tag="520" ind1=" " ind2=" ">
<subfield code="3">A description of something here</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2=" ">
<subfield code="a"></subfield>
</datafield>
結果として私が欲しいもの:
<datafield tag="300" ind1=" " ind2=" ">
<subfield code="f">article</subfield>
</datafield>
<datafield tag="520" ind1="3" ind2=" ">
<subfield code="a">A description of something here</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2=" ">
<subfield code="a"></subfield>
</datafield>
コードブロックの変更を強調表示する方法を理解できませんでした(これは、tag = "520"データフィールドのind1属性であり、関連するサブフィールド属性です)