NAME (ja)

YATT::LRXML - Loose But Recursive XML.

DESCRIPTION

名前空間をマーカーとする

LRXML は XML 系のテキストの構造化・テンプレート化のための 構文です。タグ <TAG>、エンティティ参照 &ENTITY;、 処理命令 <?processing-instruction?> 、 コメント <!--comment--> の全てについて、指定した 名前空間・接頭辞を持つものだけを目印にし、これらのみで 構文木を作ります。 DTD は一切必要ありません。

# 名前空間 yatt: を使う例:

<yatt:record>
  ...any text... <yatt:subrecord /> ....
  ...
  ...&yatt:entity-reference;...
  ...
</yatt:record>

属性タグ (属性を表すタグ)

『情報を属性で表すか、タグで表すか』問題に終止符を打つため、 属性情報をタグとして記述する構文を用意しました。 (Common Lisp の :keyword パラメータと同じように見てください)

<yatt:person name="hkoba" interest="prog-lang anime manga">
  <yatt:product name="YATT"/>
</yatt:person>
# ↓
<yatt:person>
  <:yatt:name>hkoba</:yatt:name>
  <:yatt:interest>prog-lang anime manga</:yatt:interest>
  <yatt:product>
    <:yatt:name>YATT</:yatt:name>
  </yatt:product>
</yatt:person>
# 又は
<yatt:person>
  <yatt:product>
    <:yatt:name>YATT
  </yatt:product>
  <:yatt:name/>hkoba
  <:yatt:interest/>prog-lang anime manga
</yatt:person>

テンプレート向きの拡張記法を公式に許可。

属性の中でも <> を使えるので、条件式を読みやすく書けます。

<yatt:event if="x > 0">....</yatt:event>

AUTHOR

"KOBAYASI, Hiroaki" (小林 弘明) hkoba at cpan.org