如何用XML格式表示以下数据?
commandA ( a | b | c )
position = pos [(m | n | o )]
[space = space] [(m|n|o)]
[option1]
[option2 = "Hello"]
[option3]
Run Code Online (Sandbox Code Playgroud)
注意:[] - >表示可选,
() - >表示强制性
| - >表示任何值
例如:
commandA a position = 1.0<m> space = 2.0<n> option1 option2="Hello"
Run Code Online (Sandbox Code Playgroud)
如何在xml中有效地表示这些数据?
我试过这样的事,
<command name="commandA" position = "position" >
<option name="option1"/>
<option name="option2" value = "Hello"/>
<option name="option3"/>
</command>
Run Code Online (Sandbox Code Playgroud)
但是如何处理命令值ie a|b|c
和位置即m|n|o
?
编辑:命令:语法:
commandA(a | b | c)pos = 0 [w | x | y | z] [spa = 0.0 [w | x | y | z]] [str ="Hello"]
commandA a pos = 0w spa = 0.0z str ="你好"
我试过这样的事,
<command name="commandA">
<direction>
<direction name="a"/>
<direction name="b">
<direction name="c"/>
</direction>
<parameter>
<position value="pos=0" />
<spacing value="spa=0.0" />
<options>
<option name="w"/>
<option name="x"/>
<option name="y"/>
<option name="z"/>
</options>
</parameter>
<string value="str=" />
</command>
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
像这样的事情怎么样?它结合了标签来指导自动完成,以及命令 DOM 的标签:
<ac:autocomlete>
<command>
<command-name>commandA</command-name>
<separator> </separator>
<ac:choice>
<command-type>a</command-type>
<command-type>b</command-type>
<command-type>c</command-type>
</ac:choice>
<separator> </separator>
<pos>
<pos-text>pos=</pos-text>
<pos-value><ac:match regex="\d+"/></pos-value>
<ac:optional>
<ac:choice>
<pos-unit>w</pos-unit>
<pos-unit>x</pos-unit>
<pos-unit>y</pos-unit>
<pos-unit>z</pos-unit>
</ac:choice>
</ac:optional>
</pos>
<ac:optional>
<spa-separator> </spa-separator>
<spa>
<spa-text>spa=</spa-text>
<spa-value><ac:match regex="\d+\.\d+"/></spa-value>
<ac:optional>
<ac:choice>
<spa-unit>w</spa-unit>
<spa-unit>x</spa-unit>
<spa-unit>y</spa-unit>
<spa-unit>z</spa-unit>
</ac:choice>
</ac:optional>
</spa>
</ac:optional>
<ac:optional>
<arg-separator> </arg-separator>
<arg-name>str=</arg-name>
<arg-value><ac:match regex='"[^"]*"'/></arg-value>
</ac:optional>
</command>
</autocomlete>
Run Code Online (Sandbox Code Playgroud)
自动完成代码仅匹配文字元素文本一次,除非它包含在choice
oroptional
标记中,这会相应地更改行为。我已将这些自动完成标记放在单独的命名空间中,以分隔自动完成代码识别的内容以及 DOM,但如果您不愿意,则不必维护单独的命名空间。
标签match
根据正则表达式匹配/完成文本。构建 DOM 时,匹配标签将替换为输入的文字文本。
自动完成标签告诉自动完成如何处理子标签。子标签的名称是任意的,自动完成不会使用,但可以用于为用户输入的命令构建 DOM:一旦自动完成构建了模型,自动完成标签删除后,剩下的是用户输入的命令的 DOM。
归档时间: |
|
查看次数: |
1229 次 |
最近记录: |