Home   Single Page

ネイティブネームスペース, http://www.zkoss.org/2005/zk/native

http://www.zkoss.org/2005/zk/native

ネイティブネームスペースで、 ZUML ページ内の XML 要素は ZK コンポーネントになるよりも、直接ブラウザに送られるように指定します。例えば、

<n:ul xmlns:n="http://www.zkoss.org/2005/zk/native">
    <n:li>    
    <textbox/>    
    </n:li>    
    <n:li>    
    <textbox/>    
    </n:li>    
</n:ul>

では、次の HTML タグを生成してブラウザに送ります。

<ul>
    <li>    
    <input id="z_a3_2"/>    
    </li>    
    <li>    
    <input id="z_a3_5"/>    
    </li>    
</ul

ここで、 <input> は textbox コンポーネントによって生成された、HTML タグです。上記の例の textbox と違って、ZK ローダーは各々の ul と li.[45]に対してコンポーネントを生成することなく、むしろクライアントに直接送信されます。
もちろん、それらはクライアントに認識可能でなければなりません。HTML ブラウザにとっては、有効な HTML タグであるべきです。

ネィティブネームスペース関連の要素はクライアントに直接送られるので、それらは コンポーネントではありませんし、クライアントでの対応者もいません。利点はメモリと処理時間のパフォーマンスです。それに対して欠点はダイナミックにアクセスしたり変更できないことです。例えば、次のコードスニペットは、x と呼ばれるコンポーネントが無いので、誤りです。

<n:ul id="x" xmlns:n="http://www.zkoss.org/2005/zk/native"/>
<button label="add" onClick="new Li().setParent(x)"/>

もし、これらをダイナミックに変更したいときは以下のセクションで説明します、 XHTML ネームスペースを指定すべきです。

ネィティブネームスペースで他のネームスペースを出力する

もし出力に他のネームスペースを生成したいとき、ネィティブネームスペースの URI として、他のフォーマットを使用できます。

native:URI-of-another-namespace

例えば、、もしクライアントに SVG タグを直接送りたいとき、次のように native:http://www.w3.org/2000/svg と指定します。

<window>
    <svg width="100%" height="100%" version="1.1"    
xmlns="native:http://www.w3.org/2000/svg">
        <ellipse cx="240" cy="100" rx="220" ry="30" style="fill:purple"/>        
    </svg>    
</window>

するとクライアントは次のコードを受け取ります。

<div id="z_lx_0c" z.type="zul.wnd.Wnd">46The real HTML output of window depends on its implementation. Here is only a simplified version.
    <svg width="100%" height="100%" version="1.1"    
xmlns="http://www.w3.org/2000/svg">
        <ellipse cx="240" cy="100" rx="220" ry="30" style="fill:purple"/>        
    </svg>    
</div>


[45] ZK は実にネィティブネームスペースで出来るだけ多くの XML 要素として表現する特殊なコンポーネントを作成します。