<%@ Page Title="" Language="C#" MasterPageFile="~/Management/SiteManage.Master" AutoEventWireup="true"
    CodeBehind="ContentExtractionRule.aspx.cs" Inherits="Amr.SuperSiteGroup.Web.Management.ContentExtractionRule" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="right" style="text-align: center; margin-top: 10px;">
        <table width="100%" border="0" cellspacing="1" cellpadding="1" class="edit">
            <tr>
                <td class="title_edit">
                    <h1 style="float: left">
                        内容提取规则设置</h1>
                </td>
            </tr>
            <tr>
                <td class="edit_main">
                    <table width="100%" border="0" cellspacing="1" cellpadding="1" class="table_list">
                        <tr class="tr1">
                            <td colspan="2">
                                <asp:Label ID="laTitle" runat="server" Text="添加内容提取规则"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                            <div style="text-align:left">
                                内容提取规则将以埋码的方式工作，请您将<asp:Label ID="laContentExtractRule" runat="server" ForeColor="Red"></asp:Label>作为替换符放置在您想放置的网页位置，可通过节点规则，替换规则等实现埋码。<br />
                                参数说明：参数一，规则的编号，必须填写；参数二，提取结果个数，非必需，如果为0代表不限制，参数三为动态参数类型，所有参数里不能有<span 
                                    class="red">逗号</span>。<br />参数三为0代表手动往提取页面地址中中填写动态参数，是用于填充到提取页面地址里面的占位符。
                                比如，提取页面地址为http://www.baidu.com/s?wd={0}&pn=10&ie=utf-8&usm=3&rsv_page={1},其中{0}，{1}的位置，就是动态参数占位符，分别对应参数四，五，依次对应下去；<br />1代表从执行提取规则的当前页面的网址里面动态的映射参数，
                                比如，当前页面地址为http://www.mydomain.com/?id=1&name=myname, 此处指定为映射网址中的参数后，第四和第五个参数应该指定为id，name，这代表将把id的值1和name的值myname填充到提取页面地址中去；<br />
                                2代表正则提取当前网址中的值，比如，当前页面地址为http://www.mydomain.com/news_100.html,假设我们要提取这个中间的数字100，那么第四个参数将指定正则表达，这里应该为news_(?&lt;a1&gt;.*?)\.html,这里的a1名字随便取相当于提取内容命名一下。这样，系统将自动将匹配内容做为动态参数填充到第五，第六等等参数里面去。
                                <br />
                                3代表从当前网页内容里面利用正则提取参数，从第四个参数开始，将直接作为正则表达式来匹配网页中内容，并填充到来源网址占位符中，提取到多条记录的话，只取第一条<br />
                                4代表从当前网页内容里面
                                利用xpath来提取参数，从第四个参数开始，直接用xpath来提取参数，xpath的格式为xpath<%=ExpressionKeyDelimiter%>属性名，如果不填写属性则只提取节点值</div>
                                <asp:Label ID="laErrorInfo" runat="server" ForeColor="Red"></asp:Label>
                                <asp:Label ID="laSuccessInfo" runat="server" ForeColor="Green"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    提取规则名称<font color="red">*</font>：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbName" runat="server" Width="80" Wrap="False" />
                                <validation targetid="<%=tbName.ClientID%>" targetname="提取规则名称" type="text" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    提取页面地址<font color="red">*</font>：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbUrl" runat="server" Width="100%" Wrap="False" />
                                <validation targetid="<%=tbUrl.ClientID%>" targetname="页面地址" type="text" />
                            </td>
                        </tr>
                        <tr>
                            <td width="20%">
                                <div align="right">
                                    内容表达式<font color="red">*</font>：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbContentExpression" runat="server" CausesValidation="True" EnableViewState="False"
                                    TextMode="MultiLine" Width="100%" Wrap="False" ValidationGroup="checkAdd" />
                                <validation targetid="<%=tbContentExpression.ClientID%>" targetname="提取内容表达式" type="text" />
                                <br />
                                页面会有多个提取结果，这里填写的是，提取每一个提取结果的xpath
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    内容子项表达式<font color="red">*</font>：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbChildExpression" runat="server" TextMode="MultiLine" Width="100%"
                                    Wrap="False" />
                                <validation targetid="<%=tbChildExpression.ClientID%>" targetname="内容子项" type="text" />
                                <br />
                                每一个提取结果里面有很多信息，这里填写的是提取每一个子信息的xpath，格式：name1<%=ExpressionKeyDelimiter%>xpath1<%=ExpressionKeyDelimiter%>attribute1<%=ExpressionDelimiter%>name2<%=ExpressionKeyDelimiter%>xpath2,
                                其中name1是对该提取内容的编号命名，xpath是针对内容的详细提取，attribute是属性名，如果没有指定属性名，将提取匹配节点的html，指定则提取指定值。
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    内容模板<font color="red">*</font>：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbContentTemplate" runat="server" TextMode="MultiLine" Width="100%"
                                    Wrap="False" />
                                <validation targetid="<%=tbContentTemplate.ClientID%>" targetname="内容模板" type="text" />
                                <br />
                                内容模板将会替换子项表达式的提取内容，如子项表达式的格式定义，如果我们要将name1的内容放置在某个位置，那么只需要将[*ContentValue(name1)*]放置在模板里，将自动的替换成name1所对应的内容
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    内容外层模板：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbContentOutTemplate" runat="server" TextMode="MultiLine" Width="100%"
                                    Wrap="False" /><br />
                                            内容外层模板是指将所有内容的容器的模板,所有的内容都会放置在模板容器中,例：
                                                &lt;div&gt;<%=SearchAllContent%><asp:Literal ID="liAllContent" 
                                    runat="server"></asp:Literal>
                                &lt;/div&gt;；<asp:Literal ID="liAllContent1" runat="server"></asp:Literal>
                                就代表所有搜索内容的占位符,例子中说的就是在内容外面套一层div</td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    无提取结果字符串：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbNoResult" runat="server" TextMode="MultiLine" Width="100%" Wrap="False" /><br />
                                当没有提取结果的时候，显示的字符串
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    编码：</div>
                            </td>
                            <td align="left">
                                <asp:TextBox ID="tbEncoding" runat="server" Width="80" Wrap="False" />
                                请指定提取页面的编码。
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div align="right">
                                    选项：</div>
                            </td>
                            <td align="left">
                                <asp:CheckBox ID="cbIsEnable" CssClass="checkbox" runat="server" Text="是否激活" Checked="True" />
                                <asp:CheckBox ID="cbIsConvert" CssClass="checkbox" runat="server" Text="是否转换提取链接为本地链接" />
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <asp:LinkButton ID="lbSubmit" runat="server" Text="【提交】" OnClick="lbSubmit_Click"
                                    OnClientClick="return validateForm()" />
                                &nbsp;<asp:LinkButton ID="lbCancel" runat="server" Text="【取消】" OnClick="lbCancel_Click" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </div>
    <div class="clear">
    </div>
    <div class="right" style="text-align: center; margin-top: 10px;">
        <div class="clear">
        </div>
        <table width="100%" border="0" cellspacing="1" cellpadding="1" class="edit">
            <tr>
                <td class="title_edit">
                    <h1 style="float: left">
                        提取规则列表</h1>
                </td>
            </tr>
            <tr>
                <td class="edit_main">
                    <asp:GridView ID="gvExtractionRules" runat="server" AutoGenerateColumns="False" GridLines="None"
                        CssClass="table_list" Width="100%" EnableModelValidation="True">
                        <Columns>
                            <asp:TemplateField HeaderText="操作" ShowHeader="False">
                                <ItemTemplate>
                                    <asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" Text="【编辑】" CommandArgument='<%# Bind("RuleId") %>'
                                        OnClick="lbEdit_Click"></asp:LinkButton>
                                    &nbsp;<asp:LinkButton ID="lbDelete" runat="server" CausesValidation="False" CommandArgument='<%# Bind("RuleId") %>'
                                        Text="【删除】" OnClick="lbDelete_Click" OnClientClick="if(confirm('确认删除记录?')){eval(this.attributes['href'].value)}else{return false}"></asp:LinkButton>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="RuleId" HeaderText="编号" SortExpression="RuleId" />
                            <asp:CheckBoxField DataField="IsEnable" HeaderText="是否激活" SortExpression="IsEnable" />
                            <asp:BoundField DataField="Name" HeaderText="提取规则名称" SortExpression="Name" />
                            <asp:TemplateField HeaderText="提取内容表达式" SortExpression="ContentExpression">
                                <ItemTemplate>
                                    <asp:TextBox ID="contentExpression" runat="server" Text='<%# Bind("ContentExpression") %>'
                                        ReadOnly="true" TextMode="MultiLine" Width="200px" Wrap="False"></asp:TextBox>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="内容子项表达式" SortExpression="ChildExpression">
                                <ItemTemplate>
                                    <asp:TextBox ID="childExpression" runat="server" Text='<%# Bind("ChildExpression") %>'
                                        ReadOnly="true" TextMode="MultiLine" Width="200px" Wrap="False"></asp:TextBox>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="内容模板" SortExpression="ContentTemplate">
                                <ItemTemplate>
                                    <asp:TextBox ID="contentTemplate" runat="server" Text='<%# Bind("ContentTemplate") %>'
                                        ReadOnly="true" TextMode="MultiLine" Width="400px" Wrap="False"></asp:TextBox>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="Encoding" HeaderText="编码" SortExpression="Encoding" />
                        </Columns>
                        <HeaderStyle CssClass="tr1" />
                        <RowStyle CssClass="tr_a" />
                        <AlternatingRowStyle CssClass="tr_b" />
                        <FooterStyle CssClass="dg_header" />
                    </asp:GridView>
                </td>
            </tr>
        </table>
    </div>
    <div class="clear" style="margin-top: 10px;">
    </div>
</asp:Content>
