http://www.rebol.com/docs/core23/rebolcore-15.htmlの章を読み直して解析しましたが、この種の階層構造を解析することはできません。それは可能ですか?
<Multipage>
<tab id=1>
<box id=1>
</box>
</tab>
<tab id=2>
<box id=2>
Hello
</box>
</tab>
<tab>
</tab>
<tab>
</tab>
</Multipage>
http://www.rebol.com/docs/core23/rebolcore-15.htmlの章を読み直して解析しましたが、この種の階層構造を解析することはできません。それは可能ですか?
<Multipage>
<tab id=1>
<box id=1>
</box>
</tab>
<tab id=2>
<box id=2>
Hello
</box>
</tab>
<tab>
</tab>
<tab>
</tab>
</Multipage>
http://www.rebol.org/view-script.r?script=xml-parse.r1にあるGavinMacKenzieのxml-parseスクリプトは、ほとんどのXMLデータを解析します。これは一般化されたソリューションであるため、特定のXMLファイルの一連の解析ルールよりも当然複雑です。
はい、それは可能であり、それほど難しいことではありません:
data: {...}
ws-chars: charset " ^/^M^-"
ws: [any ws-chars]
rule: [
ws <Multipage> any [
ws "<tab" opt [ws "id=" copy id to ">" (print ["tab id:" id])] ">" any [
ws "<box" opt [ws "id=" copy value to ">" (print ["box id:" id])] ">"
opt [copy text to "<" (if text [?? text])]
</box>
]
ws </tab>
]
ws </Multipage> ws
]
parse/all data rule
このコードを実行すると、出力として取得されます。
tab id: "1"
box id: "1"
text: "^/ "
tab id: "2"
box id: "2"
text: "^/ Hello^/ "