在eXist db/XQuery中将字符串编码为html
我正试图从一个集合(文件系统)生成一个树视图。不幸的是,有些文件具有特殊字符,如üä和ö。我希望将它们的html编码为在eXist db/XQuery中将字符串编码为html,xquery,exist-db,Xquery,Exist Db,我正试图从一个集合(文件系统)生成一个树视图。不幸的是,有些文件具有特殊字符,如üä和ö。我希望将它们的html编码为&-auml 当我从变量中获取它们时,它们是URL编码的。首先我把它们解码成UTF-8然后。。。。我不知道如何进一步 <li><a href="#">{util:unescape-uri($child, "UTF-8")}</a> 我建议使用xmldb:encode-uri()和xmldb:decode-uri()而不是util:unesca
&-auml代码>
当我从变量中获取它们时,它们是URL编码的。首先我把它们解码成UTF-8然后。。。。我不知道如何进一步
<li><a href="#">{util:unescape-uri($child, "UTF-8")}</a>
我建议使用xmldb:encode-uri()
和xmldb:decode-uri()
而不是util:unescape-uri()
。创建/存储集合或文档名称时,请对其使用encode
版本。显示集合或文档名称时,请使用解码版本。看
至于强制ä
而不是ü
,这是一个更棘手的序列化问题。两者,以及和#228代码>,是相同UTF-8字符的等效表示形式。为什么不让角色以的形式通过呢
xquery version "3.0";
declare namespace ls="ls";
declare option exist:serialize "method=html media-type=text/html omit-xml-declaration=yes indent=yes";
declare function ls:ls($collection as xs:string, $subPath as xs:string) as element()* {
if (xmldb:collection-available($collection)) then
(
for $child in xmldb:get-child-collections($collection)
let $path := concat($collection, '/', $child)
let $sPath := concat($subPath, '/', $child)
order by $child
return
<li><a href="#">{util:unescape-uri($child, "UTF-8")}</a>
<ul>
{ls:ls($path,$sPath)}
</ul>
</li>,
for $child in xmldb:get-child-resources($collection)
let $sPath := concat($subPath, '/', $child)
order by $child
return
<li> <a href="javascript:loadPage('{$sPath}');">{util:unescape-uri($child, "UTF-8")}</a></li>
)
else ()
};
let $collection := request:get-parameter('coll', '/db/apps/ebner-online/resources/xss/xml')
return
<ul>{ls:ls($collection,"")}</ul>