XForms och XPath

Kursrekommendationer:

XForms använder XPath för att snabbt adressera data. Detta process kallas binding.

XForms-binding

XForms-modellen är en XML-mall (exempel) för data, medan XForms-användargränssnittet är en beskrivning av datainmatning och visning.

XForms använder XPath för att definiera anslutningen mellan dessa två delar. Detta kallasBinding (binding).

XPath

XPath används för att definiera W3C-standardgrammatiken för olika delar av ett XML-dokument.

XPath använder sökvägsuttryck för att beteckna noder i XML-dokument. Dessa uttryck liknar mycket de sökvägsuttryck du ser i datorssystem.

XPath-uttryck:

/person/fname

Adressera noden i XML-dokumentet <fname>:

<person>
   <fname>David</fname>
   <lname>Smith</lname>
</person>

i vår XPath-Handledning för att lära sig mer om XPath.

Använd Ref för att binda

XForms modellen ser ut så här:

<instance>
  <person>
    <name>
      <fname/>
      <lname/>
    </name>
  </person>
</instance>

XForms användargränssnitt kan använda ref egenskap attbind <input> elementet:

<input ref="name/fname">
<label>Efternamn</label>
</input>
<input ref="name/lname">
<label>Förnamn</label>
</input>

I ovanstående exempel är egenskapen ref="name/fname" en XPath-uttryck som pekar på <fname>-elementet i modellen. Det kan användas för attbindtill den XML-dokument (exempel) där data samlas in från formuläret <fname> element.

XForms användargränssnitt kan också använda hänvisningar:

<input ref="/person/name/fname">
<label>Efternamn</label>
</input>
<input ref="/person/name/lname">
<label>Förnamn</label>
</input>

I det ovanstående exemplet indikerar den positiva snedstrecken (/) i XPath-uttrycket XML-dokumentets rot.

Använd Bind för att binda

XForms modellen ser ut så här:

<model>
<instance>
  <person>
    <name>
      <fname/>
      <lname/>
    </name>
  </person>
</instance>
<bind nodeset="/person/name/fname" id="förnamn"/>
<bind nodeset="/person/name/lname" id="efternamn"/>
</model>

XForms användargränssnitt kan använda bind egenskap attbind <input> elementet:

<input bind="efternamn">
<label>Efternamn</label>
</input>
<input bind="förnamn">
<label>Förnamn</label>
</input>

Varför finns det två sätt att binda inputkontroll element till instansdata?

Så vad sägs om när du börjar använda XForms i komplexa applikationer, då upptäcker du att använda bind för att binda är ett mer flexibelt sätt att hantera flera formulär och flera modeller.