# Nobelman

## INDEX

- Nobelmanとは？
- 概要
- 動作環境
- パッケージ内容
- 注意事項
- インストール方法
- 設定ファイルの書き方
- 設定リファレンス
- 利用方法
- KHTMLNリファレンス
- 更新履歴

Nobelmanとは？

  NobelmanはWebページをブラウザに合わせて動的変換するISAPI Filterです。

  以下のようなことが可能です。

  - 一つのソースからi-mode、EZweb、SoftBank、PCブラウザなどへの動的変換。
  - Cookie模倣によるCookieが利用できないブラウザでの一時Cookieの利用。
  - 統一絵文字表による絵文字変換。
  - リダイレクト時の相対パスを絶対パスに自動補正。
  - 設定ファイルによる新機種対応。
  - など。。。
概要

  Nobelmanは KHTMLN を変換します。
  KHTMLNはHTMLに似たXMLであり、携帯端末向けに機能が拡張されています。
  以下に簡単な例を示します。

  Sample.khtmln

  <html> <head> <title>Sample</title> </head> <body> <div style="text-align:center; ">Sample</div> <hr/> <div> これはサンプルです。<k-emoji num="157"/><br/> このようにまるでHTMLのように書くだけで 各携帯端末に自動変換されて出力されます。<br/> </div> <hr/> <div style="text-align:right; "> Natural Style Co. Ltd. </div> </body> </html>

  例に示すとおり、Nobelmanを使えばページのソースは一つで各携帯端末に対応でき、
  絵文字はk-emojiタグで利用することができます。
  Cookie模倣も自動的に行われ、サイト構築が楽しくなること間違いなし。

  これはほんの入り口。
  Nobelmanによって楽しくなるモバイルサイト構築をご堪能ください。

動作環境
  IIS 5.0, 5.1, 6.0, 7.0, 7.5 and later
パッケージ内容
  Nobelman.dll
    ISAPI Filter本体
  Nobelman.setting
    設定ファイル
  Emoji.setting
    絵文字設定ファイル
  EmojiList.pdf
    絵文字一覧
  emoji.zip
    絵文字代替画像
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
インストール方法
  1. "Nobelman.setting" を目的の設定に編集。
  2. "Nobelman.dll" を目的のWebサイトのISAPIフィルタに設定。
  3. "emoji.zip" を解凍し "/emoji/" などのWebディレクトリに設定。
設定ファイルの書き方

  設定ファイルはXMLで記述してください。

  例
    <?xml version="1.0" encoding="UTF-8"?> <nobelman> <LocationCorrect>on</LocationCorrect> <CookieImitation>on</CookieImitation> <NewOutputCoordinator> <UAPattern>.*</UAPattern> <EmojiType>none</EmojiType> <EmojiImgSrc>/emoji/%num%.gif</EmojiImgSrc> <CodePage>932</CodePage> <Charset>Shift_JIS</Charset> <ContentType>text/html</ContentType> <HTMLMode>on</HTMLMode> </NewOutputCoordinator> </nobelman>
  説明
    - 相対パスリダイレクトを利用できない端末のために絶対パス補正機能を有効にする。
    - Cookieを利用できない端末のためにCookie模倣機能を有効にする。
    - どのような端末へもShift_JISでHTMLを返すOutput Coordinatorを用意する。
設定リファレンス
  <nobelman/>

    Nobelman設定のルート要素。

    属性
      [なし]
    子要素
      - <LocationCorrect/>
      - <LocationCorrectBasePathSVName/>
      - <CookieImitation/>
      - <CookieStockKey/>
      - <CookieStockKeyRaw/>
      - <CookiePaddingMarkL/>
      - <CookiePaddingMarkR/>
      - <CookieStockerTimeoutMinutes/>
      - <InputCoordinator/>
      - <NewOutputCoordinator/>
  <LocationCorrect/>

    相対パスリダイレクトを利用できない端末のために絶対パス補正をするかしないかを指定します。

    値
      on、off [Default:on]
    属性
      [なし]
    子要素
      [なし]
  <LocationCorrectBasePathSVName/>

    <LocationCorrect/> の絶対パス補正で利用される元パスを得るためのServer Variables名を指定します。
    ここで指定したServer Variables値が得られればそれを元に絶対パス補正を行い、
    得られなければ Server Variables:"URL" が絶対パス補正の元パスとして利用されます。

    値
      "HTTP_X_GUIDEMAN_LOG_TARGET" など [Default:""]
    属性
      [なし]
    子要素
      [なし]
  <CookieImitation/>

    Cookieを利用できない端末のためにCookie模倣をするかしないかを指定します。
    Cookie模倣はCookie模倣Keyを a/@href, form/@action に自動埋め込みすることで実現します。
    Cookie模倣では 一時Cookie は模倣されますが期限付きのCookieは模倣されません。

    値
      on、off [Default:on]
    属性
      [なし]
    子要素
      [なし]
  <CookieStockKey/>

    Cookie模倣処理で内部的に利用するServer Variables名を指定します。
    ここで指定した名前を利用してASPなどからCookie模倣Keyを取得することができます。

    値
      [Default:"HTTP_X_COOKIE_STOCK_KEY"]
    属性
      [なし]
    子要素
      [なし]
  <CookieStockKeyRaw/>

    <CookieStockKey/> のRaw名を指定します。
    Raw名は頭の "HTTP_" を取り除き、"_" を "-" に置換して、尻に必ず ":" を付加してください。

    値
      [Default:"X-Cookie-Stock-Key:"]
    属性
      [なし]
    子要素
      [なし]
  <CookiePaddingMarkL/>

    Cookie模倣時に a/@href, form/@action に自動埋め込みされるKeyの開始マークを指定します。

    値
      [Default:"(="]
    属性
      [なし]
    子要素
      [なし]
  <CookiePaddingMarkR/>

    Cookie模倣時に a/@href, form/@action に自動埋め込みされるKeyの終了マークを指定します。

    値
      [Default:"=)"]
    属性
      [なし]
    子要素
      [なし]
  <CookieStockerTimeoutMinutes/>

    Cookie模倣のタイムアウト時間を分単位で指定します。
    模倣されたCookieの内ここで指定した時間以上経過したものは破棄されます。

    値
      [Default:60]
    属性
      [なし]
    子要素
      [なし]
  <InputCoordinator/>

    変換元ソースを受け付けるCoordinatorを設定します。

    属性
      [なし]
    子要素
      - <ContentType/>
      - <DOCTYPE/>
      - <ErrorSource/>
      - <AddAccesskeyIcon/>
  <InputCoordinator/> - <ContentType/>

    KHTMLNとして反応して変換処理を行うContentTypeを指定します。

    値
      [Default:"text/x-khtmln"]
    属性
      [なし]
    子要素
      [なし]
  <InputCoordinator/> - <DOCTYPE/>

    KHTMLのXML DOCTYPEを指定します。

    値
      [Default:"<!DOCTYPE html [<!ENTITY nbsp "&#160;"><!ENTITY copy "&#169;"><!ENTITY reg "&#174;">]>"]
    属性
      [なし]
    子要素
      [なし]
  <InputCoordinator/> - <ErrorSource/>

    KHTMLの解析に失敗した場合のソースを指定します。
    ソース自体はKHTMLで記述してください。
    この値を空文字列に設定すると解析エラー詳細(デバッグ用)が出力されます。

    値
      [Default:"<html><head><title>ERROR</title></head><body>KHTMLN Parse Error occured.</body></html>"]
    属性
      [なし]
    子要素
      [なし]
  <InputCoordinator/> - <AddAccesskeyIcon/>

    <a accesskey="xxx">でのアクセスキーに対応したアイコンの表示を設定します。
    デフォルトではアイコンが表示されません。

    属性
      [なし]
    子要素
      - <Icon/>
  <InputCoordinator/> - <AddAccesskeyIcon/> - <Icon/>

    アクセスキーに対してアイコン表示を登録します。
    アイコンは絵文字か文字かどちらかを指定できます。
    <Icon/>は複数指定することができます。

    属性
      key
        どのアクセスキーについてかを指定します。(ex. "0")
      emoji
        アイコンとして絵文字を表示する場合には絵文字番号を指定します。(ex. "61")
      text
        アイコンとして文字を表示する場合には文字を指定します。(ex. "[0]")
    子要素
      [なし]
  <NewOutputCoordinator/>

    端末へデータを送出するCoordinatorを新しく生成します。
    この要素は複数指定することが可能です。
    <NewOutputCoordinator/> の書かれた順番に <UAPattern/> が評価されます。

    属性
      [なし]
    子要素
      - <UAPattern/>
      - <EmojiType/>
      - <EmojiImgSrc/>
      - <CodePage/>
      - <Charset/>
      - <XMLDeclaration/>
      - <XMLDTD/>
      - <ContentType/>
      - <HTMLMode/>
      - <iXHTML/>
      - <LocationCorrect/>
      - <CookieImitation/>
  <NewOutputCoordinator/> - <UAPattern/>

    どのUser Agentに向けて送出を担当するかを正規表現で指定します。
    正規表現はPerl互換(Boost.Regex　Perl Regular Expression Syntax)で記述して下さい。

    値
      "DoCoMo/2.0 .*" など [Default:".*"]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <EmojiType/>

    絵文字の種類を指定します。
    "Comment"の場合は絵文字を表現する単語が出力されます。
    "none"の場合は絵文字を表す画像への imgタグ が出力されます。
    "i-mode", "EZweb", "J-SKY" の場合でも、絵文字番号に相当する絵文字がない場合には
    絵文字を表す画像への imgタグ が出力されます。
    絵文字のマッピングやCommentについての設定は "Emoji.setting" で可能です。

    値
      "Comment", "i-mode", "EZweb", "J-SKY", "none" [Default:"Comment"]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <EmojiImgSrc/>

    絵文字を表す画像への imgタグ の src値 を指定します。
    端末固有の絵文字が存在しない場合に利用されます。

    値
      "/emoji/%num%.gif" など [Default:""]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <CodePage/>

    出力時のコードページを指定します。
    値については Supported Code Pages などを参考にしてください。

    値
      [Default:65001]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <Charset/>

    出力時のCharsetを指定します。
    <CodePage/> に合ったものを指定する必要があります。
    ここで値を指定しても変換元ソースのHTTPヘッダー:Content-Type に charset 指定がない場合は
    出力に charset 指定がされません。

    値
      [Default:"UTF-8"]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <XMLDeclaration/>

    出力の頭に吐く XML宣言 を指定します。

    値
      "<?xml version="1.0" encoding="Shift_JIS"?>" など [Default:""]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <XMLDTD/>

    出力の頭に吐く DOCTYPE宣言 を指定します。

    値
      "<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.2) 1.0//EN" "i-xhtml_4ja_10.dtd">" など [Default:""]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <ContentType/>

    出力時のContentTypeを指定します。

    値
      [Default:"text/html"]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <HTMLMode/>

    出力時に空要素(<br/>など)をHTMLとして(<br>など)出力するかしないかを指定します。

    値
      on, off [Default:off]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <iXHTML/>

    "<marquee/>", "<input istyle/>", "<textarea istyle/>" を i-mode XHTML に準拠した style に変換するかどうかを指定します。

    値
      on, off [Default:off]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <LocationCorrect/>

    相対パスリダイレクト時に絶対パス補正をするかしないかを指定します。
    全体設定の<LocationCorrect/>を上書いて設定する場合に指定してください。

    値
      on, off [Default:全体設定の<LocationCorrect/>]
    属性
      [なし]
    子要素
      [なし]
  <NewOutputCoordinator/> - <CookieImitation/>

    Cookie模倣をするかしないかを指定します。
    Cookie模倣はCookie模倣Keyを a/@href, form/@action に自動埋め込みすることで実現します。
    Cookie模倣では 一時Cookie は模倣されますが期限付きのCookieは模倣されません。
    全体設定の<CookieImitation/>を上書いて設定する場合に指定してください。

    値
      on, off [Default:全体設定の<CookieImitation/>]
    属性
      [なし]
    子要素
      [なし]
利用方法

  NobelmanはHTTPレスポンスのContent-Type:'text/x-khtmln'に反応しますので以下のようにして利用してください。
  なお、値:'text/x-khtmln'は設定ファイルで設定可能です。

  例: 拡張子が khtmln のファイル(静的ページ)を変換する場合。
    目的のWebディレクトリのMIMEマップに、 　　関連付けられた拡張子： khtmln 　　コンテンツの種類 ： text/x-khtmln を追加。
  例: ASPの出力(動的ページ)を変換する場合。
    <% Response.ContentType = "text/x-khtmln": %> <html> <head> ... </head> <body> ... </body> </html>
KHTMLNリファレンス

  KHTMLN は XML で記述してください。
  HTML要素、属性はすべて記述することが可能ですが、端末へ送出された場合に利用可能かどうかは
  その端末次第ですので、目的の端末で利用可能な要素、属性のみを利用するようにしてください。
  また、KHTMLNでは以下の拡張要素も利用可能です。

  <k-carrier/>

    アクセスしてきた端末に応じて出力するか否かを制御します。

    例
      <k-carrier ez="true" pc="true"> ezweb、PCの方ようこそ </k-carrier>
    説明
      ezwebかPCの方にメッセージが出力されます。
    属性
      i

        i-mode(docomo)端末に出すか否かを指定します。[値："true", "false"]

      j

        j-sky(softbank)端末に出すか否かを指定します。[値："true", "false"]

      ez

        ezweb(au)端末に出すか否かを指定します。[値："true", "false"]

      pc

        PC端末に出すか否かを指定します。[値："true", "false"]

    子要素
      [なし]
  <k-emoji/>

    絵文字を挿入します。
    絵文字一覧は Emoji.setting をご覧ください。
    絵文字は OutputCoordinator の <EmojiType/> の指定を元に変換されます。
    端末に存在しない絵文字番号を指定すると絵文字画像へのimgタグを出力します。
    imgタグのsrcは Nobelman.setting の <EmojiImgSrc/> で設定できます。

    例
      <k-emoji num="114"/>
    説明
      各端末に "禁煙" の絵文字が出力されます。
    属性
      num

        絵文字番号を指定します。

    子要素
      [なし]
  <input|textarea k-mode/>

    テキスト入力モードを指定します。

    例
      年齢: <input type="text" k-mode="n"/>
    説明
      デフォルトで数字入力モードになります。
    値
      jp

        日本語入力モードにします。（istyle="1"）

      en

        アルファベット入力モードにします。（istyle="3"）

      n

        数字入力モードにします。（istyle="4"）

更新履歴
  2008/04/11
    - Version: 1.10.6.0
  2008/10/03
    - Version: 1.10.7.0
    - LocationCorrectが "/" まで補っていたのを "http" まで補うように変更
  2008/10/06
    - Version: 1.11.8.0
    - 絵文字タイプ:J-SKYの絵文字でうまく表示されないものがある問題対処
    - 絵文字タイプすべてにおいてUnicode出力に変更
  2008/10/15
    - Version: 1.14.9.0
    - <InputCoordinator/> - <ErrorSource/>の追加
    - <NewOutputCoordinator/> - <LocationCorrect/>の追加
    - <NewOutputCoordinator/> - <CookieImitation/>の追加
  2008/10/23
    - Version: 1.14.10.0
    - HTML番号文字参照が化ける不具合対処
  2008/10/27
    - Version: 1.15.10.0
    - <a accesskey="x">でのアイコンの表示機能追加
  2008/11/11
    - Version: 1.16.10.0
    - <NewOutputCoordinator/> - <iXHTML/>の追加
  2009/06/09
    - Version: 1.16.10.0
    - パッケージに EmojiList.pdf を追加
  2009/11/27
    - Version: 1.18.10.0
    - KHTMLNに<k-carrier/>を追加
    - KHTMLNに<input|textarea k-mode/>を追加
  2010/04/02
    - Version: 1.18.11.0
    - x64対応
    - 絵文字代替画像 "emoji" を同梱