Hatena::Grouperlang

檜山正幸のErlang未確認情報 RSSフィード

 | 

2008-12-22 (月)

ehtmlの基本

| 08:46

要素を表す構文の基本は3項タプル:

  • {タグ名, 属性リスト, 内容リスト}

{h1, [],
  [
     "Hello, EHTML."
  ]
}

意味は自明だろう。ehtmlとして認識させるには、目印ehtmlを付けて

  • {ehtml, EHTMLターム}

とする。

{ehtml, 
   {h1, [],
     [
       "Hello, EHTML."
     ]
   }
}.

http://yaws.hyber.org/yman.yaws?page=yaws_api に次の記述があっった。

{ehtml, Term}
  This will transform the erlang term Term into a stream  of  HTML
  content. The basic syntax of Term is

  EHTML = [EHTML] | {Tag, Attrs, Body} | {Tag, Attrs} | {Tag} |
          binary() | character()
  Tag   = atom()
  Attrs = [{Key, Value}]  or {EventTag, {jscall, FunName, [Args]}}
  Key   = atom()
  Value = string()
  Body  = EHTML

つまり、

  1. 内容リストは省略できる。
  2. 内容リストと属性リストの両方を省略できる。
  3. だが、属性リストだけの省略は不可能。
  4. アトムだけのtagはさすがにダメか。構文的には、やろうと思えばできるけどね。
  5. テキストノードの表現には、やはりbinary()が使える。
  6. X = [X] | binary() | character() | ... であるから、iodata() 型を包含する。
  7. 属性値にはバイナリが使えない。少し残念。
  8. 用語的に言えば、bodyはcontentの間違い。
  9. 結局EHTMLは要素とは限らず、内容(バランストテキスト、フラグメント)の表現となる。
  10. {EventTag, {jscall, FunName, [Args]}} はonloadとかのことだろうが、なぜ特別扱いしているか不明。

XMerlのショートハンドと互換性はないような気がするが、XMerl構文のほうを忘れてしまったので、にわかに断定はできない。

まー、常識的な感覚(?)で書いていればそうは間違えないだろう。

ChrisChris2012/10/08 18:35I have exalcty what info I want. Check, please. Wait, it's free? Awesome!

ehiuwhjehiuwhj2012/10/09 05:41dRVMpk <a href="http://mwqynuzrielz.com/">mwqynuzrielz</a>

cikndmzkucikndmzku2012/10/11 13:543HjQHE <a href="http://esjngyqtffkz.com/">esjngyqtffkz</a>

xuremzxuremz2012/10/12 03:1521avPK , [url=http://alsrcycxgrye.com/]alsrcycxgrye[/url], [link=http://mftdjxvbmeto.com/]mftdjxvbmeto[/link], http://cqcupvbysolc.com/

 |