[4] 構造型(LISPのS式に対応)
LISP形式
structured-type ::=
()
(exp exp ....)
([symbol 属性リスト])
([symbol 属性リスト] exp ....)
XML形式
([symbol 属性リスト] ....)
は、
<symbolと同じ文字列 属性リスト> </symbolと同じ文字列>
と等価である。たとえば、
([greeting
FirstName = "Hirohisa"
LastName = "Mori"]
"Hello World")
は、
<greeting
FirstName="Hirohisa"
LastName = "Mori">
Hello World
</greeting>
と変換できる。この場合、Hello World は一続きの文字列として認識されるが、これを別々に分けたい場合は、間に \ をいれる。つまり、
<greeting
FirstName="Hirohisa"
LastName = "Mori">
Hello \ World
</greeting>
は、
(greeting [
FirstName = "Hirohisa"
LastName = "Mori"]
"Hello" "World")
と等価である。
属性値にシンボルを定義したい場合は、
(greeting [FirstName = "^symbol" ]
"Hello" "World")
<greeting FirstName = "^symbol"> Hello World </greeting>
というように、属性値の頭に ^ を付ければよい。 ^ を二つ続け、" ^^symbol "とすると、それはシンボルではなく、" ^symbol "という文字列と解釈される。
▲