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

          tpl標簽結構

          Posted on 2005-11-22 23:09 canonical 閱讀(1029) 評論(0)  編輯  收藏 所屬分類: Witrix開發平臺
              witrix平臺中的tpl模板技術的重點在于標簽定義的設計, 在于如何最大限度的發揮xml格式的表達能力。
              tpl自定義標簽的基本結構如下:
              <Namespace:TagName tpl:tag="realTagName"
                  tpl:noborder="${booleanExprInCompileContext}"
                  tpl:ignore="${booleanExprInCompileContext}"
                  attrName="stringOrExpression" cp:attributeInCompileContext="atringOrExpression"
                  OtherNamespace:OtherAttrName="stringOrExpression"
                  >
                  bodyContent
              </NameSpace:TagName>
              自定義標簽總是處在某一名字空間中, tpl名字空間中的屬性由tpl編譯器負責進行解析并處理, 而cp名字空間中的屬性在編譯期能夠訪問,其他名字空間的屬性被完全忽略, 一般只有decorator會識別這些屬性(例如cache:timeout).所有無名字空間的屬性都相當于是自定義標簽的調用參數,在標簽運行的時候 可以在標簽內部訪問到。
              tpl通過對namespace的使用, 避免了系統屬性, decorator屬性與普通標簽屬性之間的相互干擾, 這與JSF和Tapestry都是不同的。
              tpl:tag屬性指定此標簽在編譯時對應的真實標簽名, 即編譯期會識別RealTagName而不是Namespace:TagName。tpl:noborder為true的時候相當于是直接編譯 bodyContent, 例如用來在編譯期控制是否在界面上使用某種邊框。
              tpl:ignore為true的時候,此標簽將被忽略而不會被編譯。
              bodyContent在編譯期成為tagBody變量, 由自定義標簽自己決定如何處理, 這種方式比FreeMarker的<#nested>機制要靈活和強大的多. 例如在標簽內部我們可以使用<cp:compile src="${tagBody}" /> 這等價于 FreeMarker的<#nested>. 也可以使用
              <cp:compile src="${tagBody.existingChild('header')}" />從bodyContent中取出header子節點. 甚至我們可以對tagBody進行加工之后再進行編譯.
          主站蜘蛛池模板: 禄丰县| 徐州市| 永靖县| 北安市| 石门县| 新郑市| 监利县| 衡水市| 安多县| 齐齐哈尔市| 祁东县| 平谷区| 漯河市| 梁河县| 高雄县| 中牟县| 水富县| 沙湾县| 兴和县| 木兰县| 沅江市| 永安市| 鹰潭市| 辽源市| 洛阳市| 凤城市| 大同市| 集安市| 伊宁县| 桑日县| 灌阳县| 七台河市| 阜南县| 武邑县| 自贡市| 德惠市| 临邑县| 香港 | 吉安县| 八宿县| 绥化市|