こんにちは私はxqueryとxqueryでのレギュラー式の使用の初心者です。特定のビットを見つけたいxmlタグがあります。somethingjpgですが、.jpgを検索する必要はありません。問題は、somethingjpgが常に同じスペースにあるとは限らないことです。
xmlの例を次に示します。
<book title="Harry Potter">
<description
xlink:type="simple"
xlink:href="http://book.com/2012/12/28/20121228-there_is_somethingjpg_123456789a1s23e4.jpg"
xlink:show="new">
As his fifth year at Hogwarts School of Witchcraft and
Wizardry approaches, 15-year-old Harry Potter is.......
</description>
</book>
または、xlink:hrefは次のようになります。
<book title="Harry Potter">
<description
xlink:type="simple"
xlink:href="http://book.com/2012/12/28/20121228-there_is_always_more_to_somethingelsejpg_123456789a1s23e4.jpg"
xlink:show="new">
As his fifth year at Hogwarts School of Witchcraft and
Wizardry approaches, 15-year-old Harry Potter is.......
</description>
</book>
私が達成しようとしているのは(可能であれば)、そのsomethingjpgまたはsomethingelsejpgを検索するxqueryコードの一部です。次に、somethingjpgまたはsomethingelsejpgを修正して、何かまたは何かを言うだけにし、リンクを再度連結して、eXist-dbの古いリンクに新しいリンクを置き換えます。
コード的には私が持っています。
let $a := collection('/db/articles/')//book
for $b in $a//@xlink:href[contains(.,'jpg_')]
let $c := tokenize(replace($b, 'Some sort of redex I can't figure out', '$1;$2;$3'), ';')
let $d := $c[2]
let $e := replace(substring-before($d, 'jpg_'). '_')
let $f := concat ($c[1]. $e, $c[3])
return update replace $b with $f
残りがわからない…助けて!