利用XML實現(xiàn)通用WEB報表打印實際使用中的例子_Xml教程
推薦:如何用FSO操作xml試了一下,xmlDoc.save()行不同,就試著用fso做了出來。 整理一下,供大家discuss。 由于用js操作本地xml文件之后save時會permission denied,所以據(jù)我所知就只能通過FSO來做。而用FSO,基本上就與文件是否是xml無關(guān)。 xml文件: root parent child1one/chil
最近做的一個B/S項目,在打印時采用了在IE中嵌入.net winform控件和XML結(jié)合的方式(參見http://www.yesky.com/20030214/1652186.shtml),在實際應(yīng)用過程中,有一些心得,和大家分享。
(一).使用通用模版格式化XML文件
系統(tǒng)中共用到了三種單據(jù),分別為出庫單,入庫單,送貨單,因此,定義三個模版文件,格式如下:
chukudan.xsl:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Bill">
<root>
<pagesetting>
<landscape>false</landscape>
<paperkind>Custom</paperkind>
<paperwidth>800</paperwidth>
<paperheight>600</paperheight>
<paperleft>0</paperleft>
<paperight>0</paperight>
<papetop>0</papetop>
<papebottom>0</papebottom>
</pagesetting>
<reporttable>
<bill x="55" y="19" border="0" bordercolor="white" maxlines="6">
<xsl:for-each select="BillMaster">
<toptable width="743">
<tr height="20">
<td width="118" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">車次號:</td>
<td width="449" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="SERIAL_NO" /></td>
<td width="35" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
<td width="138" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
</tr>
</toptable>
</xsl:for-each>
<detailtable width="373">
<xsl:for-each select="BillDetail">
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="BILL_NO" /></td>
<td width="173" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="PROD_MODEL_2" /></td>
<td width="55" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="PROD_NUM" /></td>
<td width="55" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="PIECE_NUM" /></td>
</tr>
</xsl:for-each>
</detailtable>
<mastertable width="370">
<xsl:for-each select="BillMaster">
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White">
</td>
<td width="280" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="ADDRESS" /></td>
</tr>
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="CONTACT_PERSON" /></td>
<td width="70" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="120" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="CONTACT_PHONE" /></td>
</tr>
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White">
</td>
<td width="280" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="DRIVER_UNIT" /></td>
</tr>
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="DRIVER_NO" /></td>
<td width="70" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="120" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="DRIVER_PERSON" /></td>
</tr>
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="CAR_MODEL" />
</td>
<td width="70" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="120" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
</tr>
<tr height="33">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="280" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="COME_TO" /></td>
</tr>
</xsl:for-each>
</mastertable>
<foottable width="743">
<xsl:for-each select="BillMaster">
<tr height="35">
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"></td>
<td width="173" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
<td width="55" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="White"></td>
<td width="55" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
<td width="90" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
</td>
<td width="280" align="right" fontsize="10" fontname="宋體" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="REMARK" /></td>
</tr>
</xsl:for-each>
</foottable>
</bill>
</reporttable>
</root>
</xsl:template>
</xsl:stylesheet>
其中,toptable是表頭,detailtable是表格左邊的產(chǎn)品明細,mastertable是表格右邊的運輸信息等,foottable是最下面制表人等信息。
然后,在asp.net頁面中,將查詢出的結(jié)果作如下轉(zhuǎn)換
'是否取得了單據(jù)
If billInfoXml <> Nothing Then
billInfoDoc.LoadXml(billInfoXml)
'billInfoDoc.LoadXml("http://111.111.111.111/stockmg/test.xsl")
billTrans.Load(billFormatXmlUrl)
billXmlWr.Formatting = System.Xml.Formatting.Indented
billXmlWr.Indentation = 4
billXmlWr.IndentChar = " "
billTrans.Transform(billNav, Nothing, billXmlWr, Nothing)
billXmlWr.Flush()
End If
返回的信息用javascript代碼加載到打印控件:
parent.frames.frmhidPrint.parent.frames.frmhidPrint.print1.SetXml(xmlResult); //SetMessage(xmlResult); parent.frames.frmhidPrint.parent.frames.frmhidPrint.print1.PrintAct();
注意,這里調(diào)用打印控件用了parent.frames....這是為了節(jié)省每次打開頁面時加載打印控件的時間,使用了一個框架網(wǎng)頁,把打印控件放在一個單獨的頁面中,從而不需每次加載。
分享:怎樣利用XSLT來換XML的根寫程序需要換XML的根,感覺很不便,于是寫了一個函數(shù),大致思路及實現(xiàn)如下: 首先覺得利用XSLT還能過濾一些東西,然后再發(fā)送回客戶端,所以決定采用XSLT 然后就是嘗試寫一個換根的XSL,如下 ?xml version=1.0 encoding=gb2312 ? xsl:stylesheet version=
- xml創(chuàng)建節(jié)點(根節(jié)點、子節(jié)點)
- WML開發(fā)教程之 WAP網(wǎng)站服務(wù)器配置方法
- WMLScript的語法基礎(chǔ)
- 收集的WML Script標(biāo)準(zhǔn)函數(shù)庫
- WML教程之文本框控件Input
- 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)
- xml文件的結(jié)構(gòu)解讀
- 關(guān)于XSL - XSL教程
- 選擇模式 - XSL教程 - 2
- XPath入門 - XSL教程 - 3
- 匹配模式 - XSL教程 - 4
- 測試模式 - XSL教程 - 5
- 相關(guān)鏈接:
- 教程說明:
Xml教程-利用XML實現(xiàn)通用WEB報表打印實際使用中的例子
。