0

コレクション (ファイルシステム) からツリービューを生成しようとしています。残念ながら、一部のファイルには、ü ä や ö などの特殊文字が含まれています。そして、それらをHTMLとしてエンコードしたいと思います&­auml;

変数から取得すると、URL エンコードされます。最初にそれらを UTF-8 にデコードしてから ....さらに先に進む方法がわかりません。

<li><a href="#">{util:unescape-uri($child, "UTF-8")}</a>

関数util:parseは、私が望むものとは正反対のことをしています。

再帰関数は次のとおりです。

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> 
4

1 に答える 1

1

ではなく、andutil:unescape-uri()を使用することをお勧めします。コレクションまたはドキュメントを作成/保存するときに、コレクションまたはドキュメントの名前にバージョンを使用します。コレクションまたはドキュメント名を表示するときにバージョンを使用します。xmldb モジュールの関数ドキュメントを参照してください。xmldb:encode-uri()xmldb:decode-uri()encodedecode

&auml;の代わりに強制することに関してはü、これはさらにトリッキーなシリアライゼーションの問題です。どちらも とともに&#228;、同じ UTF-8 文字の同等の表現です。キャラクターを as として通過させてみませんüか?

于 2013-07-31T03:47:44.720 に答える