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 { "" }
在 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 { "" }