2010-07-13 7 views
5

Wie werden die folgenden Daten im XML-Format dargestellt?Wie werden die folgenden Daten in XML dargestellt?

commandA     (a | b | c) 

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

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

[option1] 

[option2 = "Hello"] 

[option3] 

Hinweis: [] -> bezeichnet optional,

() -> bezeichnet Pflicht

| -> bezeichnet jemand des Wertes

ZB:

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

Wie effektiv diese Daten in XML darstellen?

Ich habe versucht, so etwas wie dieses,

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

Aber wie den Befehlswert d.h a|b|c und Position zu handhaben d.h m|n|o?

EDIT: Befehl: Syntax:

Commanda (a | b | c) pos = 0 [w | x | y | z] [spa = 0,0 [w | x | y | z]] [ str = "Hallo"]

Commanda a pos = 0W spa = 0.0z str = "Hallo"

ich so etwas wie dies versucht,

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

Irgendwelche Vorschläge zu diesem Thema?

+4

Schauen Sie in das Erstellen einer XML-DTD oder eines Schemas, um bestimmte Attribute auf bestimmte Werte zu beschränken. DTDs sind einfacher zu schreiben, Schemata sind flexibler. –

+0

Danke. Ich suche nach einer einfachen XML-Darstellung aufgrund von Implementierungsbeschränkungen. –

+0

DTDs sind wohlgeformte XML. Die DTD kann sogar direkt in der XML-Datei platziert werden. –

Antwort

4

Wie wäre es mit so etwas? Es kombiniert Tags, um die Auto-Vervollständigung zu führen, zusammen mit Tags für den Befehl 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> 

Der Auto-Vervollständigung Code Literalelement Text genau einmal übereinstimmt, es sei denn, es in einem choice oder optional-Tag enthalten ist, die entsprechend das Verhalten ändert. Ich habe diese Autocomplete-Tags in einem separaten Namespace platziert, um zu unterscheiden, was der Autovervollständigungscode erkennt und was das DOM ist, obwohl Sie keinen separaten Namespace pflegen müssen, wenn Sie nicht möchten.

Der Tag match stimmt mit einem regulären Ausdruck überein oder vervollständigt ihn. Beim Erstellen des DOM werden die Match-Tags durch den eingegebenen Literaltext ersetzt.

Die Tags zur automatischen Vervollständigung geben die automatische Vervollständigung an, wie mit untergeordneten Tags verfahren wird. Die Namen der untergeordneten Tags sind willkürlich und werden nicht von der automatischen Vervollständigung verwendet. Sie können jedoch verwendet werden, um ein DOM für den Befehl zu erstellen, den der Benutzer eingegeben hat: sobald die automatische Vervollständigung das Modell erstellt hat und Tags automatisch vervollständigt werden entfernt, was übrig bleibt, ist ein DOM für den Befehl, den der Benutzer eingegeben hat.

+0

Vielen Dank MDMA für die Beispiel-XML und detaillierte Erklärung. –

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

Ist das, was Sie suchen? Oder möchten Sie eine DTD?

+0

Danke. a, b, c und m, n, o sind festgelegt. Wie speichert man alle? Auch m = 1,0 oder m = 2,0 sind Dummy-Werte. Diese Werte werden vom Benutzer übernommen. Im Grunde versuche ich für Kontext-basierte automatische Vervollständigung mit dieser XML-Datei. –

+2

RP, Plattformen wie Eclipse fügen Autovervollständigung und Popup-Hilfe hinzu, wenn die XML-Datei eine DTD mit den entsprechenden Einschränkungen enthält oder darauf verweist. –

+0

Yup. Aber ich entwickle einen angepassten Editor mit eigener Autovervollständigungsunterstützung. –

Verwandte Themen