XForms ºÍ XPath
XForms ʹÓà XPath ¶ÔÊý¾Ý¼±ÐÔѰַ¡£Õâ¸ö¹ý³Ì±»³ÆÎª°ó¶¨¡£
XForms °ó¶¨
XForms ʹÓÃÁ½¸ö²¿·ÖÀ´¶¨ÒåÊý¾Ý£ºXForms Ä£ÐÍºÍ XForms Óû§½çÃæ¡£
XForms Ä£ÐÍÊÇÕë¶ÔÊý¾ÝµÄÒ»¸ö XML Ä£°å£¨ÊµÀý£©£¬¶ø XForms Óû§½çÃæÊǶÔÊý¾ÝÊäÈëºÍÏÔʾµÄÃèÊö¡£
XForms ʹÓà XPath À´¶¨ÒåÕâ¸öÁ½¸ö²¿·ÖµÄÁ¬½Ó¡£Õâ±»³ÆÎª°ó¶¨£¨binding£©¡£
XPath
XPath ÓÃÓÚ¶¨Òå XML ÎĵµµÄ¸÷²¿·ÖµÄ W3C ±ê×¼Óï·¨¡£
XPath ʹÓ÷¾¶±í´ïʽÀ´±êʾ XML ÎĵµÖеĽڵ㡣ÕâЩ±í´ïʽÓëÄúÔÚ¼ÆËã»úϵͳÖп´µ½µÄÎļþ·¾¶±í´ïʽ·Ç³£ÀàËÆ¡£
XPath ±í´ïʽ£º
/person/fname
¶Ô XML ÎĵµÖÐµÄ fname ½Úµã½øÐÐѰַ£º
<person> <fname>David</fname> <lname>Smith</lname> </person>
ÔÚÎÒÃÇµÄ XPath ½Ì³Ì ÖÐѧϰ¸ü¶àÓÐ¹Ø XPath µÄ֪ʶ¡£
ʹÓà Ref ½øÐаó¶¨
XForms Ä£ÐÍÊÇÕâÑùµÄ£º
<instance> <person> <name><fname/>
<lname/>
</name> </person> </instance>
XForms Óû§½çÃæ¿ÉʹÓà ref ÊôÐÔÀ´À¦°ó <input> ÔªËØ£º
<input ref="name/fname"
> <label>First Name</label> </input> <input ref="name/lname"
> <label>Last Name</label> </input>
ÉÏÃæÀý×ÓÖÐµÄ ref="name/fname" ÊôÐÔÊÇÒ»¸öÖ¸ÏòʵÀýÄ£ÐÍÖÐ <fname> ÔªËØµÄ XPath ±í´ïʽ¡£Ëü¿É½«ÊäÈëÓòÀ¦°óµ½Õý´Ó±íµ¥ÊÕ¼¯Êý¾ÝµÄ XML Îĵµ£¨ÊµÀý£©ÖÐµÄ <fname> ÔªËØ¡£
XForms Óû§½çÃæÒ²¿ÉÒÔʹÓÃÒýÓãº
<input ref="/person/name/fname"
>
<label>First Name</label>
</input>
<input ref="/person/name/lname"
>
<label>Last Name</label>
</input>
ÔÚÉÏÃæµÄÀý×ÓÖУ¬XPath ±í´ïʽÆðʼ²¿Î»µÄÕýб¸Ü (/) ָʾ XML ÎĵµµÄ¸ù¡£
ʹÓà Bind ½øÐаó¶¨
XForms Ä£ÐÍÊÇÕâÑùµÄ£º
<model> <instance> <person> <name><fname/>
<lname/>
</name> </person> </instance> <bind nodeset="/person/name/fname" id="firstname"/> <bind nodeset="/person/name/lname" id="lastname"/> </model>
XForms Óû§½çÃæ¿ÉʹÓà bind ÊôÐÔÀ´À¦°ó <input> ÔªËØ£º
<input bind="firstname"
> <label>First Name</label> </input> <input bind="lastname"
> <label>Last Name</label> </input>
Ϊʲô»áÓÐÁ½ÖÖ½«ÊäÈë¿Ø¼þÔªËØÀ¦°óµ½ÊµÀýÊý¾ÝµÄ·½·¨ÄØ£¿
ÔõÃ´ËµÄØ£¬µ±ÄúÔÚ¸´ÔÓµÄÓ¦ÓóÌÐòÖпªÊ¼Ê¹Óà XForms ʱ£¬Äú»á·¢ÏÖ£¬Ê¹Óà bind ½øÐаó¶¨ÊÇÒ»ÖÖ¸üÁé»îµÄ´¦Àí¶àÖØ±íµ¥ºÍ¶àÖØÊµÀýÄ£Ð͵ķ½·¨¡£