posts - 176, comments - 240, trackbacks - 0, articles - 7

          tpl標(biāo)簽結(jié)構(gòu)

          Posted on 2005-11-22 23:09 canonical 閱讀(1028) 評論(0)  編輯  收藏 所屬分類: Witrix開發(fā)平臺
              witrix平臺中的tpl模板技術(shù)的重點(diǎn)在于標(biāo)簽定義的設(shè)計, 在于如何最大限度的發(fā)揮xml格式的表達(dá)能力。
              tpl自定義標(biāo)簽的基本結(jié)構(gòu)如下:
              <Namespace:TagName tpl:tag="realTagName"
                  tpl:noborder="${booleanExprInCompileContext}"
                  tpl:ignore="${booleanExprInCompileContext}"
                  attrName="stringOrExpression" cp:attributeInCompileContext="atringOrExpression"
                  OtherNamespace:OtherAttrName="stringOrExpression"
                  >
                  bodyContent
              </NameSpace:TagName>
              自定義標(biāo)簽總是處在某一名字空間中, tpl名字空間中的屬性由tpl編譯器負(fù)責(zé)進(jìn)行解析并處理, 而cp名字空間中的屬性在編譯期能夠訪問,其他名字空間的屬性被完全忽略, 一般只有decorator會識別這些屬性(例如cache:timeout).所有無名字空間的屬性都相當(dāng)于是自定義標(biāo)簽的調(diào)用參數(shù),在標(biāo)簽運(yùn)行的時候 可以在標(biāo)簽內(nèi)部訪問到。
              tpl通過對namespace的使用, 避免了系統(tǒng)屬性, decorator屬性與普通標(biāo)簽屬性之間的相互干擾, 這與JSF和Tapestry都是不同的。
              tpl:tag屬性指定此標(biāo)簽在編譯時對應(yīng)的真實(shí)標(biāo)簽名, 即編譯期會識別RealTagName而不是Namespace:TagName。tpl:noborder為true的時候相當(dāng)于是直接編譯 bodyContent, 例如用來在編譯期控制是否在界面上使用某種邊框。
              tpl:ignore為true的時候,此標(biāo)簽將被忽略而不會被編譯。
              bodyContent在編譯期成為tagBody變量, 由自定義標(biāo)簽自己決定如何處理, 這種方式比FreeMarker的<#nested>機(jī)制要靈活和強(qiáng)大的多. 例如在標(biāo)簽內(nèi)部我們可以使用<cp:compile src="${tagBody}" /> 這等價于 FreeMarker的<#nested>. 也可以使用
              <cp:compile src="${tagBody.existingChild('header')}" />從bodyContent中取出header子節(jié)點(diǎn). 甚至我們可以對tagBody進(jìn)行加工之后再進(jìn)行編譯.
          主站蜘蛛池模板: 天柱县| 宝应县| 手机| 旺苍县| 南江县| 抚州市| 思茅市| 鹤壁市| 拉萨市| 宕昌县| 文登市| 得荣县| 塔城市| 启东市| 介休市| 泊头市| 灵寿县| 盘锦市| 屏南县| 霍山县| 手游| 博湖县| 琼海市| 龙门县| 桐城市| 房山区| 荆门市| 阳泉市| 时尚| 花垣县| 松江区| 远安县| 稻城县| 晋中市| 平果县| 弥勒县| 沧源| 井陉县| 桐庐县| 禹城市| 昂仁县|