• XForm控件


    1、input
    • 要根据关联(ref)或绑定(bind)的MIP(Model Item Property)决定显示的具体是什么,录入方式如何,文本框、多行文本框还是DatePicker;
    • 要能根据实际情况调整录入后的显示内容,如金额录入框,数字要能调整为千分位分隔。
    • 校验,当然了。
    • 除了Base64Type不能存储,其他都可以用input来存放输入。
    • <input ref="string"> <!-- bound to node with XML Schema type xs:string -->
        
      <label>xsd:string</label>
      </input>
      <input ref="date"> <!-- bound to node with XML Schema type xs:date -->
        
      <label>Ship By:</label>
      </input>

    2、secret
        就是 input type=password
       
    <secret ref="/session/password">
      
    <label>Password</label>
    </secret>

    3、textarea
        同理
    <textarea ref="/msg:Message/mime:Body">
      
    <label>Message Body:</label>
    </textarea>

    4、output
    • 输出文本,遵循跟input一样的自调整原则
    • 不一定需要<label>了
    • 如果要显示的值跟关联实例节点关系不大,就可以只用value属性存放XPath表达式,而不用ref属性。
    5、upload
    • 规范命名了几种可能的输入源:
      • file upload,如image、audio、text、data和其他格式的文件,只能一次上传一个文件。
      • scribble,网页上似乎应用不多了,在线绘图
      • acquire image,除非控件支持了,否则网页如何做到直接从数码相机导入图片呢
      • record audio,录音,同上
      • record video
      • 其他可能:3D扫描录入、可视化编辑器
    • 使用mediatype属性描述上传的类型,MIME串,如果设备不支持,要能提示用户
    • 如何使用这个控件呈现已经上传的内容?要思考一下
    • 其target只能是二进制类型,如base64Binary或hexBinary,是否可以用url而特殊标示出来?
    • <upload bind="attachment1">
        
      <label>Select a file</label>
        
      <filename bind="fname1"/>
        
      <mediatype bind="mt1"/>
      </upload>
    6、range
    • 输入一定范围内的数据,要素:start、end和step
    • 某些数据类型可用此控件,如 xs:duration, xs:date, xs:time, xs:dateTime, xs:gYearMonth, xs:gYear, xs:gMonthDay, xs:gDay, xs:gMonth, xs:float, xs:decimal, xs:double
    7、trigger
    • 跟HTML的button对应,实际在草案中就是叫button;触发xform的action的扳机,按钮只是其中一种表现形式,其他可能性包括image、hyperlink等
    • 虽然不直接读写数据,但也具备bind属性以便赋予MIP,所以必要的时候可以disable掉
    • <trigger>
        
      <label>Login</label>
        
      </trigger>
    8、submit
    • 是trigger的特例,可以提交表单;提交参数通过其submission属性指向的IDREF的元素取得
    • <submit submission="formdata">
        
      <label>Buy</label>
      </submit>
    9、select1
    • 单选控件,表现形式多样
    • 例子:
      <select1 ref="cpu" appearance="full" accesskey="C">
        
      <label>CPU</label>
        
      <item>
          
      <label>Pentium 4 2.53Ghz - $220</label>
          
      <value>2.5</value>
        
      </item>
        
      <item>
          
      <label>Pentium 4 2.8Ghz - $415</label>
          
      <value>2.8</value>
        
      </item>
        
      <item>
          
      <label>Pentium 4 3.06Ghz - $620</label>
          
      <value>3.0</value>
        
      </item>
      </select1>
    • 如果对应的实例初始化数据在select1中找不到,就不显示选中了什么。
    • 如果selection属性等于“open”,则可以让用户自己录入有别于所有选项的“其他”内容,也受验证机制约束。
    • appearance属性可以做一些粗粒度的显示控制:
      • full 显示全部的选项
      • compact 如一个下拉框
      • minimal 最少,如要一个下拉菜单才能打开,紧凑型
    10、select
    • 选择没有东西、一个东西或者多个东西,很多特性跟select1一致
    • 对于多选,采集的数据是空格分隔的,因此每一项都不能包含空格
    • 应避免实例数据在提供的选项数据中找不到的情形
    • 理想的情形是绑定到从list继承的数据类型,内建类型也不是不行(string),下面描述更复杂的绑定。
    • <select ref="cctype">
        
      <label>List For Specifying All Card Types</label>
        
      <item>
          
      <label>Master Card</label>
          
      <value>MC</value>
        
      </item>
        
      <item>
          
      <label>Visa Card</label>
          
      <value>VI</value>
        
      </item>
        
      <item>
          
      <label>American Express</label>
          
      <value>AE</value>
        
      </item>
        
      <item>
          
      <label>Diners Club</label>
          
      <value>DC</value>
        
      </item>
      </select>
    11、复杂的列表
    • select和select1经过配置也可以指向结构化的实例节点,而不只是simpleContent或者string。
    • 通过itemset获取节点集合作为选项,如:
      <xforms:model id="list_items">
        
      <xforms:instance>
          
      <options>
            
      <email desc="work address">mdubinko@example.info</email>
            
      <email desc="home address">mdubinko@example.org</email>
            
      <email desc="alternate address">nospam@example.net</email>
          
      </options>
        
      </xforms:instance>
      <xforms:model>

      <xforms:model id="form_data">
        
      <xforms:instance>
          
      <user_selection/>
        
      </xforms:instance>
      </xforms:model>

      <xforms:select ref="." model="form_data">
        
      <xforms:label>Send a copy to the following email addresses</xforms:
                label><xforms:itemset nodeset="email" model="list_items"
      >
          
      <xforms:label><xforms:output value="concat('Your ', @desc)"/></xforms:
      label
      >
          
      <xforms:value ref="."/>
        
      </xforms:itemset>
      </xforms:select>
      • 根据itemset的内容,表达式“concat('Your',@desc)”会产生三个不同的label,value属性算成string类型的值
      • 前提是itemset中的item必须保持一致性,
        • 应该都是element并且是兄弟节点
        • 所有item包括命名空间在内的名字都要一样
        • itemset的序列要连续,即中间不能出现其他类型的节点
        • “copy”元素执行深拷贝,不只是产生值,包括节点、属性和值都会采集
        • 总体讲 itemset行为方式很像repeat
    12、在大多控件中都会出现的标签:
    • labels
      • 强制必备
      • label的内容可以是text、宿主语言(如css)的 标签(包括图片标签)、或者一个output控件,甚至可以来自一个外部文件(src属性),通过单节点绑定语法,还可以指向实例数据。
    • help、hint和alert
      • help就是tooltip,帮助理解的
      • hint就是缩略显示,如太长的文本要缩略显示加省略号,鼠标放在上面一定时间就自动显示完整内容
      • alert是验证失败的提示语
      • 跟label一样,可以有丰富的来源形式
    • navigation order
      • 就是tabindex,这里叫navindex,默认0
    • keyboard shortcut
      • 快捷键,注意避开浏览器已经使用的那些
    • 粗粒度的显示模式
      • select那里讲过了,appearance,所有控件都有这个属性,为form designer提供粗粒度界面呈现指示,细粒度还得css
    • input mode
      • 输入法,空格分隔的tag,如

        simplifiedHanzi symbols  暂不深究

    • event handler
      • 某些控件的子控件如items可以有事件句柄,以后再说。
  • 相关阅读:
    LightOJ--1094-- Farthest Nodes in a Tree(树的直径裸题)
    poj--1383--Labyrinth(树的直径)
    C字符数组和C++字符串
    Miracl库学习
    GBDT学习
    Java编程规范
    关于JS中的数组[]的方法
    焦点离开事件
    Firebug 安装方法
    JAVASE 中的String的字符串
  • 原文地址:https://www.cnblogs.com/xiaotaoliang/p/708028.html
Copyright © 2020-2023  润新知