xdmp:eval() 関数を使用して、これらの各コマンドを異なるトランザクションで実行する必要があることがわかりました。以下を実行すると動作します。
let $deleteCommand := "declare variable $directory as xs:string external; xdmp:directory-delete($directory)"
let $createCommand := "declare variable $directory as xs:string external; xdmp:directory-create($directory)"
let $_ := xdmp:eval($deleteCommand, (xs:QName("directory"), $directory),<options xmlns="xdmp:eval"><isolation>different-transaction</isolation><prevent-deadlocks>false</prevent-deadlocks></options>)
let $_ := xdmp:eval($createCommand, (xs:QName("directory"), $directory),<options xmlns="xdmp:eval"><isolation>different-transaction</isolation><prevent-deadlocks>false</prevent-deadlocks></options>)
return $_
eval でコマンドの 1 つを実行して他のコマンドを呼び出すと、デッドロックが発生するため機能しません。
この答えがありますが、ディレクトリの内容を誰かが持っている場合は削除するソリューションにまだ興味があります。