Esempio n. 1
0
    public override void Item(object sender, ItemConverterEventArgs e)
    {
        XmlDocument dom = new XmlDocument();

        try
        {
            dom.LoadXml(e.Xml);
        }
        catch (Exception ex)
        {
            e.ResultString = ex.Message;
            return;
        }

        string strResult = "<html>";

        strResult += "<head>";
        strResult += "<link href='%mappeddir%\\styles\\itemhtml.css' type='text/css' rel='stylesheet' />";
        strResult += "<link href=\"%mappeddir%/jquery-ui-1.8.7/css/jquery-ui-1.8.7.css\" rel=\"stylesheet\" type=\"text/css\" />"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-1.4.4.min.js\"></script>"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-ui-1.8.7.min.js\"></script>"
                     + "<script type='text/javascript' charset='UTF-8' src='%mappeddir%\\scripts\\getsummary.js" + "'></script>";

        strResult += "</head>";
        strResult += "<body>";

        strResult += "<table class='iteminfo'>";

        {
            // 册条码
            string strItemBarcode = DomUtil.GetElementText(dom.DocumentElement, "barcode");

            /*
             * string strBarcodeLink = "<a href='" + App.OpacServerUrl + "/book.aspx?barcode=" + strItemBarcode + "&forcelogin=userid' target='_blank'>"
             + strItemBarcode
             + "</a>";
             * */
            string strBarcodeLink = "<a href='javascript:void(0);' onclick=\"window.external.OpenForm('ItemInfoForm', this.innerText, true);\">" + strItemBarcode + "</a>";
            strResult += GetOneTR("barcode", "册条码号", strBarcodeLink);

            // 馆藏地点
            strResult += GetOneTR(dom.DocumentElement, "location", "馆藏地点");

            // 书目摘要
            strResult += "<tr class='content summary'>";
            strResult += "<td class='name summary' nowrap>";
            strResult += "书目摘要";
            strResult += "</td>";
            strResult += "<td class='value summary pending'>";
            strResult += "B:" + strItemBarcode + "|" + e.RecPath;
            strResult += "</td></tr>";

            // 状态
            strResult += GetOneTR(dom.DocumentElement, "state", "状态");


            // 册价格
            strResult += GetOneTR(dom.DocumentElement, "price", "册价格");

            // 出版时间
            strResult += GetOneTR(dom.DocumentElement, "publishTime", "出版时间");

            // 渠道
            strResult += GetOneTR(dom.DocumentElement, "seller", "渠道");

            // 经费来源
            strResult += GetOneTR(dom.DocumentElement, "source", "经费来源");

            // 索取号
            strResult += GetOneTR(dom.DocumentElement, "accessNo", "索取号");

            // 卷
            strResult += GetOneTR(dom.DocumentElement, "volume", "卷");

            // 册类型
            strResult += GetOneTR(dom.DocumentElement, "bookType", "册类型");

            // 登录号
            strResult += GetOneTR(dom.DocumentElement, "registerNo", "登录号");

            // 注释
            strResult += GetOneTR(dom.DocumentElement, "comment", "注释");

            // 合并注释
            strResult += GetOneTR(dom.DocumentElement, "mergeComment", "合并注释");

            // 批次号
            strResult += GetOneTR(dom.DocumentElement, "batchNo", "批次号");

            string strBorrower = DomUtil.GetElementText(dom.DocumentElement, "borrower");       // 借者条码

            // 借者姓名
            strResult += "<tr class='content patronname'>";
            strResult += "<td class='name patronname' nowrap>";
            strResult += "借者姓名";
            strResult += "</td>";
            if (string.IsNullOrEmpty(strBorrower) == false)
            {
                strResult += "<td class='value patronname pending'>";
                strResult += "P:" + strBorrower;
            }
            else
            {
                strResult += "<td class='value patronname'>";
                strResult += "&nbsp;";
            }
            strResult += "</td></tr>";

            // 借者条码

            string strBorrowerLink = "";
            if (String.IsNullOrEmpty(strBorrower) == false)
            {
                /*
                 * strBorrowerLink = "<a href='" + App.OpacServerUrl + "/readerinfo.aspx?barcode=" + strBorrower + "&forcelogin=userid' target='_blank'>"
                 + strBorrower
                 + "</a>";
                 * */
                strBorrowerLink = "<a href='javascript:void(0);' onclick=\"window.external.OpenForm('ReaderInfoForm', this.innerText, true);\">" + strBorrower + "</a>";
            }
            else
            {
                strBorrowerLink = "&nbsp";
            }

            strResult += GetOneTR("borrower", "借者证条码号", strBorrowerLink);

            // 借阅日期
            string strBorrowDate = DomUtil.GetElementText(dom.DocumentElement, "borrowDate");
            strBorrowDate = LocalTime(strBorrowDate);
            strResult    += GetOneTR("borrowDate", "借阅日期", strBorrowDate);

            // 借阅期限
            string strBorrowPeriod = DomUtil.GetElementText(dom.DocumentElement, "borrowPeriod");
            strBorrowPeriod = LibraryApplication.GetDisplayTimePeriodString(strBorrowPeriod);
            strResult      += GetOneTR("borrowPeriod", "借阅期限", strBorrowPeriod);

            // 参考ID
            strResult += GetOneTR(dom.DocumentElement, "refID", "参考ID");

            // 册记录路径
            strResult += GetOneTR("recpath", "册记录路径", e.RecPath);

            // 册二维码

            /*
             * string strCode = "39code:" + strItemBarcode;
             * if (string.IsNullOrEmpty(strItemBarcode))
             *  strCode = "qrcode:@refID:" + DomUtil.GetElementText(dom.DocumentElement, "refID");
             */
            string strCode = "code=" + HttpUtility.UrlEncode(strItemBarcode) + ",type=code_39,width=300,height=80";
            if (string.IsNullOrEmpty(strItemBarcode))
            {
                strCode = "code=@refID:" + HttpUtility.UrlEncode(DomUtil.GetElementText(dom.DocumentElement, "refID")) + ",type=qr_code,width=200,height=200";
            }

            strResult += "<tr class='content qrcode'>";
            strResult += "<td class='value qrcode' colspan='2' >";
            // strResult += "<img id='qrcode' class='pending' name='"+strCode+"' src='%mappeddir%\\images\\ajax-loader.gif' alt='册记录的二维码' ></img>";
            strResult += "<img id='qrcode' src='barcode:" + strCode + "' alt='册记录的二维码' ></img>";
            strResult += "</td></tr>";

            strResult += "</table>";
        }

        // 借阅历史
        XmlNodeList nodes = dom.DocumentElement.SelectNodes("borrowHistory/borrower");

        if (nodes.Count > 0)
        {
            strResult += "<br/><b>历史</b><br/>";
            strResult += "<table class='borrowhistory'>\r\n";

            strResult += "<tr class='borrowcount'><td colspan='10' class='borrowcount'>";

            XmlNode nodeHistory     = dom.DocumentElement.SelectSingleNode("borrowHistory");
            string  strHistoryCount = "";
            if (nodeHistory != null)
            {
                strHistoryCount = DomUtil.GetAttr(nodeHistory, "count");
            }
            strResult += "本册共被 " + strHistoryCount + " 位读者借阅过 (下表中最多仅能显示最近 " + this.App.MaxItemHistoryItems.ToString() + " 位)";

            strResult += "</td></tr>\r\n";

            strResult += "<tr class='columntitle'><td class='index' nowrap>序</td><td class='barcode' nowrap>证条码号</td><td class='summary' nowrap>姓名</td><td class='no' nowrap>续借次</td><td class='borrowdate' nowrap>借阅日期</td><td class='period' nowrap>期限</td><td class='borrowoperator' nowrap>借阅操作者</td><td class='renewcomment' nowrap>续借注</td><td class='returndate' nowrap>还书日期</td><td class='operator' nowrap>还书操作者</td></tr>\r\n";

            for (int i = 0; i < nodes.Count; i++)
            {
                XmlNode node              = nodes[i];
                string  strBarcode        = DomUtil.GetAttr(node, "barcode");
                string  strNo             = DomUtil.GetAttr(node, "no");
                string  strBorrowDate     = DomUtil.GetAttr(node, "borrowDate");
                string  strPeriod         = DomUtil.GetAttr(node, "borrowPeriod");
                string  strBorrowOperator = DomUtil.GetAttr(node, "borrowOperator"); // 借书操作者
                string  strOperator       = DomUtil.GetAttr(node, "operator");       // 还书操作者
                string  strRenewComment   = DomUtil.GetAttr(node, "renewComment");
                // string strSummary = "";
                // string strConfirmItemRecPath = DomUtil.GetAttr(node, "recPath");
                string strReturnDate = DomUtil.GetAttr(node, "returnDate");

                // string strBarcodeLink = "<a href='" + App.OpacServerUrl + "/readerinfo.aspx?barcode=" + strBarcode + "&forcelogin=userid' target='_blank'>" + strBarcode + "</a>";
                string strBarcodeLink = "<a href='javascript:void(0);' onclick=\"window.external.OpenForm('ReaderInfoForm', this.innerText, true);\">" + strBarcode + "</a>";

                // 表格内容奇数行的类名
                string strOdd = "";
                if (((i + 1) % 2) != 0)
                {
                    strOdd = " odd";
                }

                strResult += "<tr class='content" + strOdd + "'>";
                strResult += "<td class='index' nowrap>" + (i + 1).ToString() + "</td>";
                strResult += "<td class='barcode' nowrap>" + strBarcodeLink + "</td>";
                strResult += "<td class='summary pending' nowrap>P:" + strBarcode + "</td>";

                strResult += "<td class='no' nowrap align='right'>" + strNo + "</td>";
                strResult += "<td class='borrowdate' nowrap>" + LocalDate(strBorrowDate) + "</td>";
                strResult += "<td class='period' nowrap>" + LibraryApplication.GetDisplayTimePeriodString(strPeriod) + "</td>";
                strResult += "<td class='borrowoperator' nowrap>" + strBorrowOperator + "</td>";
                strResult += "<td class='renewcomment' width='30%'>" + strRenewComment.Replace(";", "<br/>") + "</td>";
                strResult += "<td class='returndate' nowrap>" + LocalDate(strReturnDate) + "</td>";
                strResult += "<td class='operator' nowrap>" + strOperator + "</td>";
                strResult += "</tr>\r\n";
            }
            strResult += "</table>\r\n";
        }

        strResult += "</body></html>";

        e.ResultString = strResult;
    }
Esempio n. 2
0
    public override void Item(object sender, ItemConverterEventArgs e)
    {
        XmlDocument dom = new XmlDocument();

        try
        {
            dom.LoadXml(e.Xml);
        }
        catch (Exception ex)
        {
            e.ResultString = ex.Message;
            return;
        }

        string strResult = "<html>";

        strResult += "<head>";
        strResult += "<link href='%mappeddir%\\styles\\orderhtml.css' type='text/css' rel='stylesheet' />";
        strResult += "<link href=\"%mappeddir%/jquery-ui-1.8.7/css/jquery-ui-1.8.7.css\" rel=\"stylesheet\" type=\"text/css\" />"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-1.4.4.min.js\"></script>"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-ui-1.8.7.min.js\"></script>"
                     + "<script type='text/javascript' charset='UTF-8' src='%mappeddir%\\scripts\\getsummary.js" + "'></script>";
        strResult += "</head>";
        strResult += "<body>";

        strResult += "<table class='orderinfo'>";

        {
            // 编号
            string strIndex = DomUtil.GetElementText(dom.DocumentElement, "index");
            strResult += GetOneTR("index", "编号", strIndex);

            // 书目摘要
            strResult += "<tr class='content summary'>";
            strResult += "<td class='name summary' nowrap>";
            strResult += "书目摘要";
            strResult += "</td>";
            strResult += "<td class='value summary pending'>";
            strResult += "B:|" + e.RecPath;
            strResult += "</td></tr>";

            // 状态
            strResult += GetOneTR(dom.DocumentElement, "state", "状态");

            // 书目号
            strResult += GetOneTR(dom.DocumentElement, "catalogNo", "书目号");

            // 渠道
            strResult += GetOneTR(dom.DocumentElement, "seller", "渠道");

            // 经费来源
            strResult += GetOneTR(dom.DocumentElement, "source", "经费来源");

            // 时间范围
            strResult += GetOneTR(dom.DocumentElement, "range", "时间范围");

            // 包含期数
            strResult += GetOneTR(dom.DocumentElement, "issueCount", "包含期数");

            // 复本数
            strResult += GetOneTR(dom.DocumentElement, "copy", "复本数");

            // 单价
            strResult += GetOneTR(dom.DocumentElement, "price", "单价");

            // 总价格
            strResult += GetOneTR(dom.DocumentElement, "totalPrice", "总价");

            // 订购时间
            string strOrderTime = DomUtil.GetElementText(dom.DocumentElement, "orderTime");
            strResult += GetOneTR("orderTime", "订购时间", LocalTime(strOrderTime));

            // 订单号
            strResult += GetOneTR(dom.DocumentElement, "orderID", "订单号");

            // 馆藏分配
            strResult += GetOneTR(dom.DocumentElement, "distribute", "馆藏分配");

            // 类别
            strResult += GetOneTR(dom.DocumentElement, "class", "类别");

            // 附注
            strResult += GetOneTR(dom.DocumentElement, "comment", "附注");


            // 批次号
            strResult += GetOneTR(dom.DocumentElement, "batchNo", "批次号");

            // 渠道地址
            strResult += GetOneTR(dom.DocumentElement, "sellerAddress", "渠道地址");

            // 参考ID
            strResult += GetOneTR(dom.DocumentElement, "refID", "参考ID");

            // 订购记录路径
            strResult += GetOneTR("recpath", "订购记录路径", e.RecPath);

            strResult += "</table>";
        }

        // 操作历史
        XmlNodeList nodes = dom.DocumentElement.SelectNodes("operations/operation");

        if (nodes.Count > 0)
        {
            strResult += "<br/><b>操作历史</b><br/>";
            strResult += "<table class='operationhistory'>\r\n";

            strResult += "<tr class='columntitle'><td class='index' nowrap>序</td><td class='name' nowrap>操作名</td><td class='time' nowrap>操作时间</td><td class='operator' nowrap>操作者</td></tr>\r\n";

            for (int i = 0; i < nodes.Count; i++)
            {
                XmlNode node        = nodes[i];
                string  strName     = DomUtil.GetAttr(node, "name");
                string  strTime     = DomUtil.GetAttr(node, "time");
                string  strOperator = DomUtil.GetAttr(node, "operator"); // 还书操作者

                // 表格内容奇数行的类名
                string strOdd = "";
                if (((i + 1) % 2) != 0)
                {
                    strOdd = " odd";
                }

                strResult += "<tr class='content" + strOdd + "'>";
                strResult += "<td class='index' nowrap>" + (i + 1).ToString() + "</td>";
                strResult += "<td class='name' nowrap>" + strName + "</td>";
                strResult += "<td class='time' nowrap>" + LocalTime(strTime) + "</td>";
                strResult += "<td class='operator' nowrap>" + strOperator + "</td>";
                strResult += "</tr>\r\n";
            }
            strResult += "</table>\r\n";
        }

        strResult += "</body></html>";

        e.ResultString = strResult;
    }
Esempio n. 3
0
    public override void Item(object sender, ItemConverterEventArgs e)
    {
        XmlDocument dom = new XmlDocument();

        try
        {
            dom.LoadXml(e.Xml);
        }
        catch (Exception ex)
        {
            e.ResultString = ex.Message;
            return;
        }

        string strResult = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\">";

        strResult += "<head>";
        strResult += "<link href='%mappeddir%\\styles\\commenthtml.css' type='text/css' rel='stylesheet' />";
        strResult += "<link href=\"%mappeddir%/jquery-ui-1.8.7/css/jquery-ui-1.8.7.css\" rel=\"stylesheet\" type=\"text/css\" />"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-1.4.4.min.js\"></script>"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-ui-1.8.7.min.js\"></script>"
                     + "<script type='text/javascript' charset='UTF-8' src='%mappeddir%\\scripts\\getsummary.js" + "'></script>";

        strResult += "</head>";
        strResult += "<body>";

        strResult += "<table class='commentinfo'>";

        {
            // 帖子标题
            string strTitle = DomUtil.GetElementText(dom.DocumentElement, "title");
            strResult += GetOneTR("title", "标题", strTitle);

            // 作者
            string strOriginCreator = DomUtil.GetElementText(dom.DocumentElement, "creator");
            strResult += GetOneTR("creator", "作者", strOriginCreator);

            // 馆代码
            strResult += GetOneTR(dom.DocumentElement, "libraryCode", "馆代码");


            // 帖子状态
            string strState = DomUtil.GetElementText(dom.DocumentElement, "state");
            strResult += GetOneTR(dom.DocumentElement, "state", "状态");

            // 订购建议
            string strType = DomUtil.GetElementText(dom.DocumentElement, "type");
            strResult += GetOneTR("type", "类型", strType);

            string strOrderSuggestion = DomUtil.GetElementText(dom.DocumentElement, "orderSuggestion");

            if (strType == "订购征询")
            {
                string strOrderSuggestionText = this.GetString("建议不要订购本书");
                string strYesOrNo             = "no";
                string strImg = "<img class='icon' src='%datadir%\\no_order_24.png'>";
                if (strOrderSuggestion == "yes")
                {
                    // 建议订购
                    strOrderSuggestionText = this.GetString("建议订购本书");
                    strYesOrNo             = "yes";
                    strImg = "<img class='icon' src='%datadir%\\yes_order_24.png'>";
                }
                else if (string.IsNullOrEmpty(strOrderSuggestion) == true)
                {
                    // 无所谓
                    strOrderSuggestionText = this.GetString("无所谓");
                    strYesOrNo             = "";
                    strImg = "<img class='icon' src='%datadir%\\null_order_32.png'>";
                }

                strResult += GetOneTR("order_suggestion", "订购建议", strImg + strOrderSuggestionText);
            }

            // 正文
            string strOriginContent = DomUtil.GetElementText(dom.DocumentElement, "content");
            string strContent       = strOriginContent.Replace("\\r", "\r\n");
            strContent = ParseHttpString(
                strContent);

            strContent = GetHtmlContentFromPureText(
                strContent,
                Text2HtmlStyle.P);
            strResult += GetOneTR("content", "正文", strContent);

            //
            string strOperInfo = "";
            {
                string strFirstOperator = "";
                string strTime          = "";

                XmlNode node = dom.DocumentElement.SelectSingleNode("operations/operation[@name='create']");
                if (node != null)
                {
                    strFirstOperator = DomUtil.GetAttr(node, "operator");
                    strTime          = DomUtil.GetAttr(node, "time");
                    strOperInfo     += " " + this.GetString("创建") + ": "
                                       + GetUTimeString(strTime);
                }

                node = dom.DocumentElement.SelectSingleNode("operations/operation[@name='lastContentModified']");
                if (node != null)
                {
                    string strLastOperator = DomUtil.GetAttr(node, "operator");
                    strTime      = DomUtil.GetAttr(node, "time");
                    strOperInfo += "<br/>" + this.GetString("最后修改") + ": "
                                   + GetUTimeString(strTime);
                    if (strLastOperator != strFirstOperator)
                    {
                        strOperInfo += " (" + strLastOperator + ")";
                    }
                }

                XmlNodeList nodes = dom.DocumentElement.SelectNodes("operations/operation[@name='stateModified']");
                if (nodes.Count > 0)
                {
                    XmlNode tail            = nodes[nodes.Count - 1];
                    string  strLastOperator = DomUtil.GetAttr(tail, "operator");
                    strTime      = DomUtil.GetAttr(tail, "time");
                    strOperInfo += "<br/>" + this.GetString("状态最后修改") + ": "
                                   + GetUTimeString(strTime);
                    if (strLastOperator != strFirstOperator)
                    {
                        strOperInfo += " (" + strLastOperator + ")";
                    }
                }
            }
            strResult += GetOneTR("operinfo", "创建时间", strOperInfo);

            {
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
                nsmgr.AddNamespace("dprms", DpNs.dprms);

                // 全部<dprms:file>元素
                XmlNodeList nodes = dom
                                    .DocumentElement.SelectNodes("//dprms:file", nsmgr);
                foreach (XmlNode node in nodes)
                {
                    string strMime = DomUtil.GetAttr(node, "__mime");
                    if (StringUtil.HasHead(strMime, "image/") == false)
                    {
                        continue;   // 只关注图像文件
                    }
                    string strResPath = e.RecPath + "/object/" + DomUtil.GetAttr(node, "id");

                    string strImage = "<img class='upload pending' name='"
                                      + "object-path:" + strResPath + "' src='%mappeddir%\\images\\ajax-loader.gif' alt=''></img>";
                    strResult += GetOneTR("operinfo", "上传图像", strImage);
                }
            }

            // 参考ID
            strResult += GetOneTR(dom.DocumentElement, "refID", "参考ID");

            // 册记录路径
            strResult += GetOneTR("recpath", "评注记录路径", e.RecPath);

            strResult += "</table>";
        }

        strResult += "</body></html>";

        e.ResultString = strResult;
    }
Esempio n. 4
0
    public override void Item(object sender, ItemConverterEventArgs e)
    {
        XmlDocument dom = new XmlDocument();

        try
        {
            dom.LoadXml(e.Xml);
        }
        catch (Exception ex)
        {
            e.ResultString = ex.Message;
            return;
        }

        string strResult = "<html>";

        strResult += "<head>";
        strResult += "<link href='%mappeddir%\\styles\\issuehtml.css' type='text/css' rel='stylesheet' />";
        strResult += "<link href=\"%mappeddir%/jquery-ui-1.8.7/css/jquery-ui-1.8.7.css\" rel=\"stylesheet\" type=\"text/css\" />"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-1.4.4.min.js\"></script>"
                     + "<script type=\"text/javascript\" src=\"%mappeddir%/jquery-ui-1.8.7/js/jquery-ui-1.8.7.min.js\"></script>"
                     + "<script type='text/javascript' charset='UTF-8' src='%mappeddir%\\scripts\\getsummary.js" + "'></script>";
        strResult += "</head>";
        strResult += "<body>";

        strResult += "<table class='issueinfo'>";

        {
            // 出版时间
            strResult += GetOneTR(dom.DocumentElement, "publishTime", "出版时间");

            // 书目摘要
            strResult += "<tr class='content summary'>";
            strResult += "<td class='name summary' nowrap>";
            strResult += "书目摘要";
            strResult += "</td>";
            strResult += "<td class='value summary pending'>";
            strResult += "B:|" + e.RecPath;
            strResult += "</td></tr>";

            // 状态
            strResult += GetOneTR(dom.DocumentElement, "state", "状态");

            // 期号
            strResult += GetOneTR(dom.DocumentElement, "issue", "期号");

            // 总期号
            strResult += GetOneTR(dom.DocumentElement, "zong", "总期号");

            // 卷号
            strResult += GetOneTR(dom.DocumentElement, "volumn", "卷号");

            // 附注
            strResult += GetOneTR(dom.DocumentElement, "comment", "附注");

            // 批次号
            strResult += GetOneTR(dom.DocumentElement, "batchNo", "批次号");

            // 参考ID
            strResult += GetOneTR(dom.DocumentElement, "refID", "参考ID");

            // 期记录路径
            strResult += GetOneTR("recpath", "期记录路径", e.RecPath);

            strResult += "</table>";
        }

        // 操作历史
        XmlNodeList nodes = dom.DocumentElement.SelectNodes("operations/operation");

        if (nodes.Count > 0)
        {
            strResult += "<br/><b>操作历史</b><br/>";
            strResult += "<table class='operationhistory'>\r\n";

            strResult += "<tr class='columntitle'><td class='index' nowrap>序</td><td class='name' nowrap>操作名</td><td class='time' nowrap>操作时间</td><td class='operator' nowrap>操作者</td></tr>\r\n";

            for (int i = 0; i < nodes.Count; i++)
            {
                XmlNode node        = nodes[i];
                string  strName     = DomUtil.GetAttr(node, "name");
                string  strTime     = DomUtil.GetAttr(node, "time");
                string  strOperator = DomUtil.GetAttr(node, "operator"); // 还书操作者

                // 表格内容奇数行的类名
                string strOdd = "";
                if (((i + 1) % 2) != 0)
                {
                    strOdd = " odd";
                }

                strResult += "<tr class='content" + strOdd + "'>";
                strResult += "<td class='index' nowrap>" + (i + 1).ToString() + "</td>";
                strResult += "<td class='name' nowrap>" + strName + "</td>";
                strResult += "<td class='time' nowrap>" + LocalTime(strTime) + "</td>";
                strResult += "<td class='operator' nowrap>" + strOperator + "</td>";
                strResult += "</tr>\r\n";
            }
            strResult += "</table>\r\n";
        }

        {
            strResult += "<div class='cover_container'>";

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
            nsmgr.AddNamespace("dprms", DpNs.dprms);

            XmlNodeList files = dom.DocumentElement.SelectNodes("//dprms:file", nsmgr);
            foreach (XmlElement file in files)
            {
                string id    = file.GetAttribute("id");
                string usage = file.GetAttribute("usage");
                if (usage.StartsWith("FrontCover") == false)
                {
                    continue;
                }

                string path = e.RecPath + "/object/" + id;
                strResult += "<img class='cover' src='dpres:" + path + "' alt='" + HttpUtility.HtmlEncode(usage) + "'></img>";
            }

            strResult += "</div>";
        }


        strResult += "</body></html>";

        e.ResultString = strResult;
    }