以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  XML 摸板解析????  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=57202)


--  作者:wonggl
--  发布时间:12/26/2007 10:39:00 AM

--  XML 摸板解析????
请看以下XML :
是从 微软的RMS 中找到的, 它用来定义票据的打印摸板。 这个模板应该用什么解析它, 并把他们变成可执行语句???
   <SET name="FooterLine4" custom="true" description="Footer Line 4" type="vbString">  </SET>
   <SET name="FooterLine5" custom="true" description="Footer Line 5" type="vbString">  </SET>
   <SET name="LogoHeader" custom="true" description="Logo Filename (Header)" type="vbString">   </SET>
   <SET name="LogoFooter" custom="true" description="Logo Filename (Footer)" type="vbString">   </SET>
   <!--
   ===========================
   Variable Declarations
   ===========================
-->
   <SET name="PageWidth" type="vbdouble">  PaperWidth - MarginLeft - MarginRight  </SET>
   <SET name="PageHeight" type="vbdouble">  PaperHeight - MarginTop - MarginBottom </SET>
   <SET name="NewAccountBalance" type="vbcurrency">  0 </SET>
   <SET name="SigAmountOut" type="vbcurrency"> 0 </SET>
  <!--
   =============================
   SUB: PrintHeader
   =============================
-->
   <SUB name="PrintHeader">
      <!-- Print Header Logo -->
      <IF>
         <CONDITION> ShowHeaderLogo </CONDITION>
         <THEN>
            <PICTURE>
               <FILENAME>  LogoHeader           </FILENAME>
               <WIDTH>     PageWidth            </WIDTH>
               <LEFT>      MarginLeft           </LEFT>
               <HEIGHT>    0                    </HEIGHT>
            </PICTURE>
         </THEN>
      </IF>
      <!-- Print Store Information -->
      <TABLE>
         <BORDER>    tbNone            </BORDER>
         <COLUMNHEADER>
            <ALIGNMENT> "^"            </ALIGNMENT>
            <WIDTH>     PageWidth      </WIDTH>
         </COLUMNHEADER>
         <IF>
            <CONDITION> ShowStoreInfo </CONDITION>
            <THEN>
               <ROW></ROW>
               <IF><CONDITION> Len(Store.Name)     </CONDITION>
                  <THEN><ROW>    Store.Name        </ROW></THEN>
               </IF>
               <IF><CONDITION> Len(Store.Address1) </CONDITION>
                  <THEN><ROW>    Store.Address1    </ROW></THEN>
               </IF>
               <IF><CONDITION> Len(Store.Address2) </CONDITION>
                  <THEN><ROW>    Store.Address2    </ROW></THEN>
               </IF>
               <IF><CONDITION> Len(Store.CityStateZip)   </CONDITION>
                  <THEN><ROW>    Store.CityStateZip      </ROW></THEN>
               </IF>
               <IF><CONDITION> Len(Store.Phone)    </CONDITION>
                  <THEN><ROW>    Store.Phone       </ROW></THEN>
               </IF>
               <IF><CONDITION> Len(Store.Fax)      </CONDITION>
                  <THEN><ROW>    Store.Fax         </ROW></THEN>
               </IF>
            </THEN>
         </IF>
         <ROW></ROW>
      </TABLE>
   </SUB>
  <!--
   =============================
   MAIN DOCUMENT
   =============================
-->
   <DOCUMENT>
      <CALL>   "PrintCreditCardSlip"      </CALL>
      <CALL>   "PrintHeader"              </CALL>
      <CALL>   "PrintTransactionType"     </CALL>
      <CALL>   "PrintCustomerData"        </CALL>
      <CALL>   "PrintTransactionComment"  </CALL>
      <CALL>   "PrintDropPayout"          </CALL>
      <CALL>   "PrintAccountPayment"      </CALL>
      <CALL>   "PrintTransactionDetails"  </CALL>
      <CALL>   "PrintTransactionTotals"   </CALL>
      <CALL>   "PrintVATAnalysis"         </CALL>
      <CALL>   "PrintDiscounts"           </CALL>
      <CALL>   "PrintBarcode"             </CALL>
      <CALL>   "PrintFooter"              </CALL>
   </DOCUMENT>

--  作者:enyaxp
--  发布时间:12/26/2007 7:49:00 PM

--  
用XML描述VB代码,微软的命名空间不知道开不开放,不开放的话就只好自己用DOM写解析程序,对<IF>等元素做文本替换,最后生成VB源码就可以执行了吧。

希望有高人能够指点。


--  作者:wonggl
--  发布时间:12/26/2007 8:51:00 PM

--  
RMS 是个vb 写的exe 可执行程序。 它调用这个模板, 生成receipt. 用户可根据他的语法自定义打印格式。
它的<IF> <Condition> <Then> 语法显得很神奇。 就是想不明白怎样实现!!!
它的这种xml 用法才真正显示了xml 的巨大意义。
望高手给个方向!!!!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms