Xquery delete 在 xml 文档中留下空行 - 如何删除它们? (存在数据库)

Xquery delete leaves empty lines in xml document - how to remove them? (eXist-db)

在 XQuery 3.1 (eXist 4.7) 中,我有一个操作从存储在 /db/apps/myapp/data/list_bibliography.xml 的 XML 文档中删除节点,如下所示:

<listBibl xmlns="http://www.tei-c.org/ns/1.0" xml:id="bibliography">
    <tei:biblStruct xmlns:tei="http://www.tei-c.org/ns/1.0" type="book" xml:id="Z-BF2WLW8Y">
        <tei:monogr>
            <tei:title level="m">footitle1</tei:title>
            <tei:author>
                <tei:name>author name</tei:name>
            </tei:author>
            <tei:imprint>
                <tei:publisher>some city</tei:publisher>
                <tei:date>2019</tei:date>
            </tei:imprint>
        </tei:monogr>
    </tei:biblStruct>
    <tei:biblStruct xmlns:tei="http://www.tei-c.org/ns/1.0" type="book" xml:id="Z-4KF7YNP3">
        <tei:monogr>
            <tei:title level="m">footitle2</tei:title>
            <tei:author>
                <tei:name>author name</tei:name>
            </tei:author>
            <tei:imprint>
                <tei:publisher>some other city</tei:publisher>
                <tei:date>2018</tei:date>
            </tei:imprint>
        </tei:monogr>
    </tei:biblStruct>
</listBibl>

以下函数:

declare local:delete-bibl()
{
   let $bibdoc := doc("/db/apps/myapp/data/list_bibliography.xml")
   for $bib in $bibdoc//tei:biblStruct[@xml:id = "Z-BF2WLW8Y"]
   return update delete $bib
};

将文件保留为白色space,如下所示:

<listBibl xmlns="http://www.tei-c.org/ns/1.0" xml:id="bibliography">












    <tei:biblStruct xmlns:tei="http://www.tei-c.org/ns/1.0" type="book" xml:id="Z-4KF7YNP3">
        <tei:monogr>
            <tei:title level="m">footitle2</tei:title>
            <tei:author>
                <tei:name>author name</tei:name>
            </tei:author>
            <tei:imprint>
                <tei:publisher>some other city</tei:publisher>
                <tei:date>2018</tei:date>
            </tei:imprint>
        </tei:monogr>
    </tei:biblStruct>
</listBibl>

是否有某种配置或功能可以折叠delete留下的白色space?

我尝试使用 return update replace $bib with "" 代替,但会抛出错误,因为替换必须是一个节点。

非常感谢。

没有用于折叠 eXist 的 XQuery 更新 delete 操作留下的空白的配置选项。

要解决将 $bib 替换为空字符串时收到的错误,请将其替换为文本节点:

update replace $bib with text { "" }