/ / Jak reprezentować następujące dane w XML? - xml

Jak reprezentować następujące dane w XML? - xml

Jak reprezentować następujące dane w formacie XML?

commandA                 ( a | b | c )

position = pos [(m | n | o )]

[space = space] [(m|n|o)]

[option1]

[option2 = "Hello"]

[option3]

Uwaga: [] -> oznacza opcjonalnie,

() -> oznacza obowiązkowe

| -> oznacza każdą wartość

Na przykład:

 commandA a position = 1.0<m> space = 2.0<n> option1  option2="Hello"

Jak skutecznie reprezentować te dane w formacie xml?

Próbowałem czegoś takiego,

<command name="commandA" position = "position" >
<option name="option1"/>
<option name="option2" value = "Hello"/>
<option name="option3"/>
</command>

Ale jak obsługiwać wartość polecenia, np a|b|c i położenie, tj m|n|o ?

EDYTOWAĆ: Command: Składnia:

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 = "Hello"

Próbowałem czegoś takiego,

   <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>

Wszelkie sugestie na ten temat?

Odpowiedzi:

4 dla odpowiedzi № 1

Co powiesz na coś takiego. Łączy ona znaczniki w celu prowadzenia autouzupełniania wraz z tagami dla polecenia 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>

Kod autouzupełniania dopasowuje dosłowny tekst elementu dokładnie jeden raz, o ile nie jest zawarty w kodzie choice lub optional tag, który odpowiednio zmienia zachowanie. Umieszczę te znaczniki autouzupełniania w osobnym obszarze nazw, aby oddzielić to, co rozpoznaje kod autouzupełniania, a co to jest DOM, chociaż nie musisz utrzymywać oddzielnej przestrzeni nazw, jeśli nie chcesz tego robić.

The match tag dopasowuje / uzupełnia tekst zgodnie z wyrażeniem regularnym. Podczas budowania modelu DOM znaczniki dopasowania zastępowane są wprowadzonym tekstem literałowym.

Tagi automatycznego uzupełniania informują o automatycznym uzupełnieniujak radzić sobie z tagami podrzędnymi. Nazwy znaczników podrzędnych są arbitralne i nie są używane przez autouzupełnianie, ale można je wykorzystać do budowania DOM dla polecenia, które użytkownik wpisał: po ukończeniu autouzupełniania modelu i automatycznym wypełnianiu tagów usunięte, pozostaje DOM dla polecenia wpisanego przez użytkownika.


3 dla odpowiedzi № 2
<command value="a">
<position type="m">1.0</position>
<space type="m">2.0</space>
<option1 />
<option2>Hello</option2>
<option3 />
</command>

Czy tego właśnie szukasz? A może chcesz DTD?