<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>days of linnchord &#187; netsoft</title>
	<atom:link href="http://linnchord.net/archives/tag/netsoft/feed" rel="self" type="application/rss+xml" />
	<link>http://linnchord.net</link>
	<description>南台静坐 : : :</description>
	<lastBuildDate>Thu, 17 Jun 2010 05:43:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>一个Web系统界面设计和开发.5</title>
		<link>http://linnchord.net/archives/118.html</link>
		<comments>http://linnchord.net/archives/118.html#comments</comments>
		<pubDate>Tue, 01 Jun 2004 21:23:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[web设计]]></category>
		<category><![CDATA[界面设计]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/06/%e4%b8%80%e4%b8%aaweb%e7%b3%bb%e7%bb%9f%e7%95%8c%e9%9d%a2%e8%ae%be%e8%ae%a1%e5%92%8c%e5%bc%80%e5%8f%915/</guid>
		<description><![CDATA[6.典型交互模式 界面交互中，根据功能不同，有不同的交互方式。应该尽量提取抽象，尽可能减少交互模式的种类，或者把交互方式尽可能设计的类似，以方便用户快速熟悉系统。 下面列举3个系统中比较典型的交互模式，供大家参考。 单项选择 多项选择 项目分解（GIF动画 4桢） 7.Demo开发 Demo是详细设计阶段的重要成果之一，在对系统进行详细的分析设计之后，开发出界面Demo原型，主要作用是提供给合作客户，在基本功能、系统组成和易用性上进行测试。 本系统的Demo主要包括界面的设计制作，和部分客户端表现层脚本的开发。为了在后面的实际业务开发中尽可能获得重用，Demo的制作在页面规范、CSS样式定义和JS脚本编写方面都严格遵循了系统开发规范，并在以后的代码编写工作中严格执行。 本系统整个Demo包括大约50个页面，耗时月3周。 在后续的开发过程中，仍然要严格控制整个开发过程，保证整个系统界面的统一，并随时维护更新系统界面的设计。 8.结语 太长了&#8230;&#8230;需要对以前很多东西进行回顾，实在很困难。很多细节，包括很多设计、技术上的东西，都已经记忆不清了，文章也显得有些紊乱。 因此，如果大家有什么疑问，或有意见、指正，请提出或来信与我交流。]]></description>
			<content:encoded><![CDATA[<p><strong>6.典型交互模式</strong> </p>
<p>界面交互中，根据功能不同，有不同的交互方式。应该尽量提取抽象，尽可能减少交互模式的种类，或者把交互方式尽可能设计的类似，以方便用户快速熟悉系统。 </p>
<p>下面列举3个系统中比较典型的交互模式，供大家参考。 </p>
<p>单项选择 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/act1.gif" border="1" alt="" /> </p>
<p>多项选择 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/act2.gif" border="1" alt="" /> </p>
<p>项目分解（GIF动画 4桢） </p>
<p><img src="http://linnchord.net/upload/x2blog/img/act3.gif" width="550px" border="1" alt="" /> </p>
<p><strong>7.Demo开发</strong> </p>
<p>Demo是详细设计阶段的重要成果之一，在对系统进行详细的分析设计之后，开发出界面Demo原型，主要作用是提供给合作客户，在基本功能、系统组成和易用性上进行测试。 </p>
<p>本系统的Demo主要包括界面的设计制作，和部分客户端表现层脚本的开发。为了在后面的实际业务开发中尽可能获得重用，Demo的制作在页面规范、CSS样式定义和JS脚本编写方面都严格遵循了系统开发规范，并在以后的代码编写工作中严格执行。 </p>
<p>本系统整个Demo包括大约50个页面，耗时月3周。 </p>
<p>在后续的开发过程中，仍然要严格控制整个开发过程，保证整个系统界面的统一，并随时维护更新系统界面的设计。 </p>
<p><strong>8.结语</strong> </p>
<p>太长了&hellip;&hellip;需要对以前很多东西进行回顾，实在很困难。很多细节，包括很多设计、技术上的东西，都已经记忆不清了，文章也显得有些紊乱。 </p>
<p>因此，如果大家有什么疑问，或有意见、指正，请提出或来信与我交流。</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/118.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个Web系统界面设计和开发.4</title>
		<link>http://linnchord.net/archives/119.html</link>
		<comments>http://linnchord.net/archives/119.html#comments</comments>
		<pubDate>Mon, 31 May 2004 22:43:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[web设计]]></category>
		<category><![CDATA[界面设计]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/%e4%b8%80%e4%b8%aaweb%e7%b3%bb%e7%bb%9f%e7%95%8c%e9%9d%a2%e8%ae%be%e8%ae%a1%e5%92%8c%e5%bc%80%e5%8f%914/</guid>
		<description><![CDATA[5.典型界面 以下是系统中几个比较典型的界面模型。 在整个系统界面的设计过程中，需要注意整个系统的统一，设计风格要一致，界面中的交互元素，从色彩、样式到排版方式、具体位置都要具备延续性，这样才能使用户尽快习惯整个系统操作。]]></description>
			<content:encoded><![CDATA[<p><strong><font size="3">5.典型界面</font></strong> </p>
<p>以下是系统中几个比较典型的界面模型。 </p>
<p><img alt="" border="1" src="http://linnchord.net/upload/x2blog/img/UI1.gif" /> </p>
<p><img alt="" border="1" src="http://linnchord.net/upload/x2blog/img/UI2.gif" /> </p>
<p><img alt="" border="1" src="http://linnchord.net/upload/x2blog/img/UI3.gif" /> </p>
<p><img alt="" border="1" src="http://linnchord.net/upload/x2blog/img/UI4.gif" /> </p>
<p>在整个系统界面的设计过程中，需要注意整个系统的统一，设计风格要一致，界面中的交互元素，从色彩、样式到排版方式、具体位置都要具备延续性，这样才能使用户尽快习惯整个系统操作。</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/119.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个Web系统界面设计和开发.3</title>
		<link>http://linnchord.net/archives/120.html</link>
		<comments>http://linnchord.net/archives/120.html#comments</comments>
		<pubDate>Mon, 31 May 2004 22:42:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[web设计]]></category>
		<category><![CDATA[界面设计]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/%e4%b8%80%e4%b8%aaweb%e7%b3%bb%e7%bb%9f%e7%95%8c%e9%9d%a2%e8%ae%be%e8%ae%a1%e5%92%8c%e5%bc%80%e5%8f%913/</guid>
		<description><![CDATA[4.主界面设计 设计主界面，确定系统基本风格，是概要设计中的工作之一。首页主界面的主要实现功能是导航，它要达到的目的，是尽可能使用户仅通过首页面板就可以完成所有常规任务。 该主界面包含以下部分 用户信息区域 显示当前用户信息 用户导航区域 用户页面导航，收藏功能可以将当前功能页面收藏到快捷功能面板 用户导航功能树 用户页面导航，收藏功能可以将当前功能页面收藏到快捷功能面板 功能树隐藏 可水平扩展页面空间]]></description>
			<content:encoded><![CDATA[<p><strong>4.主界面设计</strong> </p>
<p>设计主界面，确定系统基本风格，是概要设计中的工作之一。首页主界面的主要实现功能是导航，它要达到的目的，是尽可能使用户仅通过首页面板就可以完成所有常规任务。 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/home_of_ui_l.gif" /> </p>
<p>该主界面包含以下部分 </p>
<p><span style="COLOR: rgb(0,102,102)">用户信息区域</span> 显示当前用户信息 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/UserInfoBar.gif" /> </p>
<p><span style="COLOR: rgb(0,102,102)">用户导航区域</span> 用户页面导航，收藏功能可以将当前功能页面收藏到快捷功能面板 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/UserGuideBar.gif" /> </p>
<p><span style="COLOR: rgb(0,102,102)">用户导航功能树</span> 用户页面导航，收藏功能可以将当前功能页面收藏到快捷功能面板 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/GuideTree.gif" /> </p>
<p><span style="COLOR: rgb(0,102,102)">功能树隐藏</span> 可水平扩展页面空间 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/HideBar.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/120.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个Web系统界面设计和开发.2</title>
		<link>http://linnchord.net/archives/121.html</link>
		<comments>http://linnchord.net/archives/121.html#comments</comments>
		<pubDate>Mon, 31 May 2004 22:39:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[web设计]]></category>
		<category><![CDATA[界面设计]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/%e4%b8%80%e4%b8%aaweb%e7%b3%bb%e7%bb%9f%e7%95%8c%e9%9d%a2%e8%ae%be%e8%ae%a1%e5%92%8c%e5%bc%80%e5%8f%912/</guid>
		<description><![CDATA[2.需求分析 在需求分析阶段，主要针对界面交互相关问题，对用户进行若干调研。 主要包括以下内容]]></description>
			<content:encoded><![CDATA[<p><strong><font size="3">2.需求分析</font></strong> </p>
<p>在需求分析阶段，主要针对界面交互相关问题，对用户进行若干调研。 </p>
<p>主要包括以下内容 </p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/121.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个Web系统界面设计和开发.1</title>
		<link>http://linnchord.net/archives/122.html</link>
		<comments>http://linnchord.net/archives/122.html#comments</comments>
		<pubDate>Mon, 31 May 2004 22:38:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[web设计]]></category>
		<category><![CDATA[界面设计]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/%e4%b8%80%e4%b8%aaweb%e7%b3%bb%e7%bb%9f%e7%95%8c%e9%9d%a2%e8%ae%be%e8%ae%a1%e5%92%8c%e5%bc%80%e5%8f%911/</guid>
		<description><![CDATA[早在中国IT业方兴未艾之时，计算机应用系统主要以功能实现为主，几乎没有界面设计这个概念。时至今日，随着计算机和网络的不断普及，社会信息化程度日益加深，用户和市场的不断成熟，人们已经不仅仅满足于&#8220;够用&#8221;，而是更加强调&#8220;好用&#8221;&#8220;易用&#8221;；因此，不论是普通最终用户的个人软件，还是企业应用的大型系统，界面设计在系统构建中都成为了一个非常重要的方面。 但是，（至少在中国）由于IT业发展滞后、市场还不够成熟等原因，在绝大多数企业中，界面设计在软件系统开发中还没有获得与之重要性相匹配的一席之地，并且在企业运作和协调中也没有形成成熟的模式和解决方案，如何做好界面设计和开发，仍然是大家不断研究探讨的一个问题。 我写这篇文章，主要内容是我参加一个面向质检行业的Web系统界面设计和开发工作的过程，包括其间的一些构思和想法；希望能和大家一起探讨一下这个问题，供大家参考。 另外，我同时承担了系统开发和界面设计工作，所以，虽然这是一篇讨论界面设计的文章，我会尽量把文章限制在界面设计范围内，但也有可能包含一些开发和系统设计的内容，请大家辨析清楚，欢迎指正。 1.工作流程 下图，是整个开发过程中与界面设计相关的主要流程工作。 从最初需求分析开始，我就加入项目，自始自终参加整个开发过程。 在需求分析阶段，参与了对客户的访问和调研； 在概要设计阶段，参与了部分系统设计分析工作； 在详细设计阶段，完成了整个系统界面设计和Demo制作，并提交用户反馈； 在代码开发阶段，参与了系统表现层的设计开发。]]></description>
			<content:encoded><![CDATA[<p>早在中国IT业方兴未艾之时，计算机应用系统主要以功能实现为主，几乎没有界面设计这个概念。时至今日，随着计算机和网络的不断普及，社会信息化程度日益加深，用户和市场的不断成熟，人们已经不仅仅满足于&ldquo;够用&rdquo;，而是更加强调&ldquo;好用&rdquo;&ldquo;易用&rdquo;；因此，不论是普通最终用户的个人软件，还是企业应用的大型系统，界面设计在系统构建中都成为了一个非常重要的方面。 </p>
<p>但是，（至少在中国）由于IT业发展滞后、市场还不够成熟等原因，在绝大多数企业中，界面设计在软件系统开发中还没有获得与之重要性相匹配的一席之地，并且在企业运作和协调中也没有形成成熟的模式和解决方案，如何做好界面设计和开发，仍然是大家不断研究探讨的一个问题。 </p>
<p>我写这篇文章，主要内容是我参加一个面向质检行业的Web系统界面设计和开发工作的过程，包括其间的一些构思和想法；希望能和大家一起探讨一下这个问题，供大家参考。 </p>
<p>另外，我同时承担了系统开发和界面设计工作，所以，虽然这是一篇讨论界面设计的文章，我会尽量把文章限制在界面设计范围内，但也有可能包含一些开发和系统设计的内容，请大家辨析清楚，欢迎指正。 </p>
<p>
<strong style="FONT-SIZE: 14px">1.工作流程</strong></p>
<p>下图，是整个开发过程中与界面设计相关的主要流程工作。 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/flow_of_ui.gif" /> </p>
<p>从最初需求分析开始，我就加入项目，自始自终参加整个开发过程。 <br />
在需求分析阶段，参与了对客户的访问和调研； <br />
在概要设计阶段，参与了部分系统设计分析工作； <br />
在详细设计阶段，完成了整个系统界面设计和Demo制作，并提交用户反馈； <br />在代码开发阶段，参与了系统表现层的设计开发。 </p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/122.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器代码参考.3</title>
		<link>http://linnchord.net/archives/124.html</link>
		<comments>http://linnchord.net/archives/124.html#comments</comments>
		<pubDate>Mon, 17 May 2004 21:36:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[netsoft]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%bb%a3%e7%a0%81%e5%8f%82%e8%80%833/</guid>
		<description><![CDATA[界面交互 在XML中一共定义了 select/ input_ColorSelect / input_SizeSelect / input_BorderSelect（后3种为颜色/大小/边框输入模式）共4种输入模式，除select为直接选择外，其他在对应控件初始化的时候作为class属性赋值到控件中，类似class代码如下 /* 颜色输入模式input框的样式类 */ .input_ColorSelect { width:100px; font-family:Tahoma; behavior:url(htc/effColorSelect.htc); } 通过behavior属性，把该输入控件和相应的组件相关联，该组件effColorSelect.htc代码如下 &#60;public:ATTACH EVENT="onfocus" ONEVENT="getShow()"/&#62; &#60;public:METHOD NAME="getChange"/&#62; &#60;script LANGUAGE="JScript"&#62; function getShow() { element.blur(); //记录当前交互控件的ID effElement=element.id; //在页面中加载输入控件 ShowControl ("SelectColor"); } function getChange() { //当值发生变化时，对可视化样式元素赋值 SetAttribute(element.id,element.value); } &#60;/script&#62; 其他 设计器中的值输入模式框只是页面中的几个层，通过上面的htc组件触发显示出来，输入后再把值传入到样式属性控件中，同时也会设置可视化样式元素。 另外还需要注意的是，XML文档是可以自行扩展或缩减的，但是在实际应用中，不能完全依据CSS标准来定义，因为可视化元素的style属性会自动格式化。例如如果你在XML中定义border-bottom-width属性，在将值取出时会自动格式化为border-bottom，这样会造成设计器中控件不能匹配。我在MSDN没有查到相关文档，所以只有经过实际测试来验证。 OK,比较关键的代码已经差不多了……希望能对大家有所帮助。 参考 另外再列出部分技术参考，如果大家对其中的技术细节如HTC和XmlDom等有所疑问，可以再详细研究一下，也欢迎大家来和我交流。 MSDN关于JS操作XmlDom的文档 这是英文文档,网上没有看到比较详细的中文文档,好在不复杂,大家将就一下吧 (最近MSDN不知道什么毛病，经常访问有问题，如果无法访问，请先登录msdn，再输入地址浏览) 蓝色理想的HTC教程 网上也没看见比较全面的讲述，这个简单易学,基本概念清楚了。]]></description>
			<content:encoded><![CDATA[<p><strong>界面交互</strong></p>
<p>在XML中一共定义了 select/ input_ColorSelect / input_SizeSelect / input_BorderSelect（后3种为颜色/大小/边框输入模式）共4种输入模式，除select为直接选择外，其他在对应控件初始化的时候作为class属性赋值到控件中，类似class代码如下</p>
<pre>/* 颜色输入模式input框的样式类 */
.input_ColorSelect
{
	width:100px;
	font-family:Tahoma;
	behavior:url(htc/effColorSelect.htc);
}</pre>
<p>通过behavior属性，把该输入控件和相应的组件相关联，该组件effColorSelect.htc代码如下</p>
<pre>&lt;public:ATTACH EVENT=<span style="color: #0000ff;">"onfocus"</span> ONEVENT=<span style="color: #0000ff;">"getShow()"</span>/&gt;
&lt;public:METHOD NAME=<span style="color: #0000ff;">"getChange"</span>/&gt;

&lt;script LANGUAGE=<span style="color: #0000ff;">"JScript"</span>&gt;
<span style="color: #000080; font-weight: bold;">function</span> getShow()
{
element.blur();

<span style="color: #008800; font-style: italic;">//记录当前交互控件的ID </span>
effElement=element.id;

<span style="color: #008800; font-style: italic;">//在页面中加载输入控件</span>
ShowControl (<span style="color: #0000ff;">"SelectColor"</span>);
}

<span style="color: #000080; font-weight: bold;">function</span> getChange()
{
<span style="color: #008800; font-style: italic;">//当值发生变化时，对可视化样式元素赋值</span>
SetAttribute(element.id,element.value);
}
&lt;/script&gt;</pre>
<p><strong>其他</strong></p>
<p>设计器中的值输入模式框只是页面中的几个层，通过上面的htc组件触发显示出来，输入后再把值传入到样式属性控件中，同时也会设置可视化样式元素。</p>
<p>另外还需要注意的是，XML文档是可以自行扩展或缩减的，但是在实际应用中，不能完全依据CSS标准来定义，因为可视化元素的style属性会自动格式化。例如如果你在XML中定义border-bottom-width属性，在将值取出时会自动格式化为border-bottom，这样会造成设计器中控件不能匹配。我在MSDN没有查到相关文档，所以只有经过实际测试来验证。</p>
<p>OK,比较关键的代码已经差不多了……希望能对大家有所帮助。<br />
<strong>参考</strong></p>
<p>另外再列出部分技术参考，如果大家对其中的技术细节如HTC和XmlDom等有所疑问，可以再详细研究一下，也欢迎大家来和我交流。</p>
<p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/DOM_HDI_JS.asp" target="_blank">MSDN关于JS操作XmlDom的文档</a></p>
<p>这是英文文档,网上没有看到比较详细的中文文档,好在不复杂,大家将就一下吧 <img src='http://linnchord.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>(最近MSDN不知道什么毛病，经常访问有问题，如果无法访问，请先登录msdn，再输入地址浏览)</p>
<p><a href="http://www.blueidea.com/tech/web/2003/1227.asp" target="_blank">蓝色理想的HTC教程 </a></p>
<p>网上也没看见比较全面的讲述，这个简单易学,基本概念清楚了。</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/124.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器代码参考.2</title>
		<link>http://linnchord.net/archives/125.html</link>
		<comments>http://linnchord.net/archives/125.html#comments</comments>
		<pubDate>Wed, 12 May 2004 11:31:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[netsoft]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%bb%a3%e7%a0%81%e5%8f%82%e8%80%832/</guid>
		<description><![CDATA[设计器初始化 Js脚本读取解析样式元素的style属性值，然后为设计器中构建的控件赋值 //设计器初始化 function Init() { //获得由服务器端赋值的样式属性值 var txt=document.all("DemoShow").style.cssText; if (txt.length>0) { var strClassName; //解析字符串 var aryClass = txt.split(/[:;]/); for( i in aryClass) { var str = aryClass[i].replace(/(^s*)&#124;(s*$)/g, ""); if(!(i%2==1)) { //当i为奇数时，解析的字符串应该为样式属性名称 strClassName=str; } else { //当i为偶数时，获得属性值 //属性名称即控件ID //判断该属性对应的控件是输入框还是选择列表 if(document.all(strClassName).type=="select-one") { //如果是选择列表通过setIndexOfValue函数设定选择项 setIndexOfValue(strClassName,str); } else { document.all(strClassName).value=str; } } i++; } } }]]></description>
			<content:encoded><![CDATA[<p><strong>设计器初始化</strong></p>
<p>Js脚本读取解析样式元素的style属性值，然后为设计器中构建的控件赋值 </p>
<p></p>
<pre>
//设计器初始化
function Init()
{
   //获得由服务器端赋值的样式属性值
   var txt=document.all("DemoShow").style.cssText;

   if (txt.length>0)
   {
      var strClassName;

      //解析字符串
      var aryClass = txt.split(/[:;]/);

      for( i in aryClass)
      {
         var str = aryClass[i].replace(/(^s*)|(s*$)/g, "");
         if(!(i%2==1))
         {
            //当i为奇数时，解析的字符串应该为样式属性名称
            strClassName=str;
         }
         else
         {
            //当i为偶数时，获得属性值

              //属性名称即控件ID
            //判断该属性对应的控件是输入框还是选择列表
            if(document.all(strClassName).type=="select-one")
            {

               //如果是选择列表通过setIndexOfValue函数设定选择项
               setIndexOfValue(strClassName,str);

            }
            else
            {
               document.all(strClassName).value=str;
            }
         }
         i++;
      }
   }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/125.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器代码参考.1</title>
		<link>http://linnchord.net/archives/126.html</link>
		<comments>http://linnchord.net/archives/126.html#comments</comments>
		<pubDate>Mon, 10 May 2004 20:11:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[netsoft]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/05/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%bb%a3%e7%a0%81%e5%8f%82%e8%80%831/</guid>
		<description><![CDATA[这里对前面讲的CSS设计器系统关键代码作一些小结，如果没有看过前面文章请先参看前文 解析CSS样式文件 这段代码主要作用是把CSS文件分解为多个样式类，并按名称/文本属性生产ClassItem对象，并保存在一个ArrayList(cssList)中(C#代码) //读取文件 FileInfo theSource= new FileInfo (@m_filePath); StreamReader reader = theSource.OpenText(); //将文件流转化为文本 m_cssText = reader.ReadToEnd(); reader.Close(); //定义CSS文本分割符 char[] delimiters = new char[] { '{','}'}; int iCheck = 1;string className = null; //将文本转化为ArrayList foreach ( string substring in m_cssText.Split(delimiters)) { if (iCheck%2==0) //当iCHeck为偶数时,字符串为样式属性内容 //将解析的样式名和属性作为ClassItem对象存入cssList cssList.Add( new ClassItem ( className, substring.Trim() ) ); else //当iCHeck为奇数时,字符串为样式名,暂存 [...]]]></description>
			<content:encoded><![CDATA[<p>这里对前面讲的CSS设计器系统关键代码作一些小结，如果没有看过前面文章请先参看前文<br />
<strong>解析CSS样式文件</strong></p>
<p>这段代码主要作用是把CSS文件分解为多个样式类，并按名称/文本属性生产ClassItem对象，并保存在一个ArrayList(cssList)中(C#代码)</p>
<pre>
<span style="color: #008800; font-style: italic;">//读取文件</span>
 FileInfo theSource= <span style="color: #000080; font-weight: bold;">new</span> FileInfo (@m_filePath);
 StreamReader reader = theSource.OpenText();

 <span style="color: #008800; font-style: italic;">//将文件流转化为文本</span>
 m_cssText = reader.ReadToEnd();
 reader.Close();

 <span style="color: #008800; font-style: italic;">//定义CSS文本分割符</span>
 <span style="color: #000080; font-weight: bold;">char</span>[] delimiters = <span style="color: #000080; font-weight: bold;">new</span> <span style="color: #000080; font-weight: bold;">char</span>[] <span style="color: #000080; font-weight: bold;">{</span> <span style="color: #800080;">'{'</span>,<span style="color: #800080;">'}'</span><span style="color: #000080; font-weight: bold;">}</span>;
 <span style="color: #000080; font-weight: bold;">int</span> iCheck = <span style="color: #0000ff;">1</span>;<span style="color: #000080; font-weight: bold;">string</span> className = <span style="color: #000080; font-weight: bold;">null</span>;

 <span style="color: #008800; font-style: italic;">//将文本转化为ArrayList</span>
 <span style="color: #000080; font-weight: bold;">foreach</span> ( <span style="color: #000080; font-weight: bold;">string</span> substring <span style="color: #000080; font-weight: bold;">in</span> m_cssText.Split(delimiters))
 <span style="color: #000080; font-weight: bold;">{</span>
     <span style="color: #000080; font-weight: bold;">if</span> (iCheck%<span style="color: #0000ff;">2</span>==<span style="color: #0000ff;">0</span>)
         <span style="color: #008800; font-style: italic;">//当iCHeck为偶数时,字符串为样式属性内容 </span>
         <span style="color: #008800; font-style: italic;">//将解析的样式名和属性作为ClassItem对象存入cssList        </span>
         cssList.Add( <span style="color: #000080; font-weight: bold;">new</span> ClassItem ( className, substring.Trim() ) );

     <span style="color: #000080; font-weight: bold;">else</span>
         <span style="color: #008800; font-style: italic;">//当iCHeck为奇数时,字符串为样式名,暂存 </span>
         className = substring.Trim(); iCheck++;
 <span style="color: #000080; font-weight: bold;">}</span>
 </pre>
<p><strong>交互界面构建</strong></p>
<p>交互界面由Javascript通过XmlDocument读取Xml文件动态生成。</p>
<p>首先要读取XML文件，然后遍历整个XML文件，先遍历样式分类，再对每个分类遍历其下的所有样式属性。比较关键的代码是对XML的遍历，下面是对样式分类的遍历代码。</p>
<pre>
<span style="color: #008800; font-style: italic;">//LoadXML是XML文件读取函数</span>
<span style="color: #000080; font-weight: bold;">var</span> dom = LoadXML(<span style="color: #0000ff;">"css.xml"</span>);

<span style="color: #008800; font-style: italic;">//通过XPath和selectNodes方法返回一个XMLDOMNodeList对象</span>
<span style="color: #000080; font-weight: bold;">var</span> oNode = dom.selectNodes(<span style="color: #0000ff;">"//Category/Name"</span>);

<span style="color: #008800; font-style: italic;">//获取该对象长度，即XML文档中该路径节点的数量</span>
<span style="color: #000080; font-weight: bold;">var</span> intCategory = oNodes.length;
<span style="color: #000080; font-weight: bold;">for</span> (i=<span style="color: #0000ff;">0</span>; i&amp;lt;intCategory; i++)
{
<span style="color: #008800; font-style: italic;">//获取集合中的节点</span>
oNode = oNodes.nextNode;

<span style="color: #000080; font-weight: bold;">if</span> (oNode != <span style="color: #000080; font-weight: bold;">null</span>)
{
<span style="color: #008800; font-style: italic;">//样式分类界面构建代码-略 ……</span>
}
}
</pre>
<p>样式输入控件构建函数，该函数作用是根据XPath路径查询XML定义，生成交互控件</p>
<pre>
<span style="color: #000080; font-weight: bold;">function</span> BuildInput ( path )
{
<span style="color: #000080; font-weight: bold;">var</span> str=<span style="color: #0000ff;">""</span>;
<span style="color: #000080; font-weight: bold;">var</span> aNode=<span style="color: #000080; font-weight: bold;">null</span>;
<span style="color: #000080; font-weight: bold;">var</span> attValue=<span style="color: #000080; font-weight: bold;">null</span>;

<span style="color: #008800; font-style: italic;">//通过selectSingleNode返回符合条件的第一个节点 </span>
<span style="color: #000080; font-weight: bold;">var</span> actNode = dom.selectSingleNode(path+<span style="color: #0000ff;">"ActionType"</span>);
<span style="color: #000080; font-weight: bold;">var</span> nameNode = dom.selectSingleNode(path+<span style="color: #0000ff;">"CssName"</span>);

<span style="color: #008800; font-style: italic;">//如果属性为选择输入，则读取SelectItems，并构建select控件 </span>
<span style="color: #000080; font-weight: bold;">if</span> (actNode.text==<span style="color: #0000ff;">"select"</span>)
{
str += <span style="color: #0000ff;">"&lt;select id='"</span>+nameNode.text+<span style="color: #0000ff;">"' name='"</span>+nameNode.text+<span style="color: #0000ff;">"'class='eSelect'&gt;"</span>;

<span style="color: #008800; font-style: italic;">//查询该项的所有选择列表项 </span>
<span style="color: #000080; font-weight: bold;">var</span> itemsNodes = dom.selectNodes (path+<span style="color: #0000ff;">"SelectItems/Item"</span>);
str += <span style="color: #0000ff;">"&lt;option value='-1'&gt;未设置&lt;/option&gt;"</span>;
<span style="color: #000080; font-weight: bold;">for</span> (ii=<span style="color: #0000ff;">0</span>;ii&lt;itemsNodes.length;ii++){
aNode = dom.selectSingleNode (path+<span style="color: #0000ff;">"SelectItems/Item["</span>+ii+<span style="color: #0000ff;">"]"</span>);

<span style="color: #008800; font-style: italic;">//如果该项含有Name属性则在列表中显示Name属性值</span>
attValue = aNode.getAttribute(<span style="color: #0000ff;">"Name"</span>)
<span style="color: #000080; font-weight: bold;">var</span> txtNode = dom.selectSingleNode (path+<span style="color: #0000ff;">"SelectItems/Item["</span>+ii+<span style="color: #0000ff;">"]"</span>);
<span style="color: #000080; font-weight: bold;">if</span> (attValue==<span style="color: #000080; font-weight: bold;">null</span>)
str += <span style="color: #0000ff;">"&lt;option value='"</span>+txtNode.text+<span style="color: #0000ff;">"'&gt;"</span>+txtNode.text+<span style="color: #0000ff;">"&lt;/option&gt;"</span>;
<span style="color: #000080; font-weight: bold;">else</span>
str += <span style="color: #0000ff;">"&lt;option value='"</span>+txtNode.text+<span style="color: #0000ff;">"'&gt;"</span>+attValue+<span style="color: #0000ff;">"&lt;/option&gt;"</span>;
}
str += <span style="color: #0000ff;">"&lt;/select&gt;"</span>;
}
<span style="color: #000080; font-weight: bold;">else</span>
<span style="color: #008800; font-style: italic;">//如果属性为其他模式，则构建input输入，设置class属性为ActionType</span>
{
str = <span style="color: #0000ff;">"&lt;input name='"</span>+nameNode.text+<span style="color: #0000ff;">"' id='"</span>+nameNode.text+<span style="color: #0000ff;">"' class='"</span>+actNode.text+<span style="color: #0000ff;">"'&gt;"</span>;
}

<span style="color: #000080; font-weight: bold;">return</span>(str);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/126.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器之界面交互</title>
		<link>http://linnchord.net/archives/129.html</link>
		<comments>http://linnchord.net/archives/129.html#comments</comments>
		<pubDate>Thu, 29 Apr 2004 16:55:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[界面设计]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/04/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%b9%8b%e7%95%8c%e9%9d%a2%e4%ba%a4%e4%ba%92/</guid>
		<description><![CDATA[整个操作交互过程，除了最后保存文件外，其他都是由javascript完成。 首先DesignerBuild函数读取XML样式属性定义文件，构建整个设计器界面。然后Init函数读取服务器端赋给设计元素的Style属性，并把属性作为输入控件ID在设计器中查找并赋值，完成初始化。 在操作过程中，根据输入控件的样式类Class，触发绑定的HTC组件，做相应的客户端操作。 最后再读取设计元素的style属性，保存。 设计器界面 不同的设计元素 不同输入控件的不同class属性（根据XML中ActionType生成）触发不同HTC组件，实现不同输入模式。 由于商业原因，这里不便提供源代码；我将在后面提供部分关键代码供参考。]]></description>
			<content:encoded><![CDATA[<p>整个操作交互过程，除了最后保存文件外，其他都是由javascript完成。 </p>
<p>首先DesignerBuild函数读取XML样式属性定义文件，构建整个设计器界面。然后Init函数读取服务器端赋给设计元素的Style属性，并把属性作为输入控件ID在设计器中查找并赋值，完成初始化。 </p>
<p>在操作过程中，根据输入控件的样式类Class，触发绑定的HTC组件，做相应的客户端操作。 </p>
<p>最后再读取设计元素的style属性，保存。 </p>
<p>设计器界面 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/cssdesigner.gif" alt="" /> </p>
<p>不同的设计元素 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/cssdesigner1.gif" alt="" /> </p>
<p>不同输入控件的不同class属性（根据XML中ActionType生成）触发不同HTC组件，实现不同输入模式。 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/cssdesignerinput1.gif" alt="" /> </p>
<p><img src="http://linnchord.net/upload/x2blog/img/cssdesignerinput2.gif" alt="" /> </p>
<p><img src="http://linnchord.net/upload/x2blog/img/cssdesignerinput3.gif" alt="" /> </p>
<p>由于商业原因，这里不便提供源代码；我将在后面提供部分关键代码供参考。</p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/129.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器之XML样式属性定义</title>
		<link>http://linnchord.net/archives/130.html</link>
		<comments>http://linnchord.net/archives/130.html#comments</comments>
		<pubDate>Tue, 27 Apr 2004 19:52:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[设计]]></category>
		<category><![CDATA[软件开发]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/04/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%b9%8bxml%e6%a0%b7%e5%bc%8f%e5%b1%9e%e6%80%a7%e5%ae%9a%e4%b9%89/</guid>
		<description><![CDATA[CSS样式中包含很多属性，设计器中当然要包含相应的属性类型；那么这些属性信息从哪里来呢？ 采用XML定义是一种很自然就会想到的方式。 经常使用DW和VS.NET，所以在交互设计上采用了类似的模式；先将样式属性分类，再设置详细属性。 CSS属性是比较复杂的，如果要完全按照DW或VS.NET的模式，实现会比较复杂。为了简化，我把值的输入简化为两种形式，选择和文本输入。对于选择，直接在XML文件中定义；对于文本输入，抽象几种输入类型，在设计器生成时根据类型设定不同的HTC组件操作。这样就将一些复杂的属性输入封装到 HTC组件中，整个构架就简洁起来。 XML文件描述 首先是属性分类 &#60;cssdesign&#62; &#60;category&#62; &#60;name&#62;文字&#60;/name&#62; &#60;style&#62; &#60;name&#62;字体&#60;/name&#62; ...... &#60;/style&#62; &#60;style&#62; &#60;name&#62;样式&#60;/name&#62; ...... &#60;/style&#62; ...... &#60;/category&#62; &#60;category&#62; &#60;name&#62;背景&#60;/name&#62; &#60;style&#62; &#60;name&#62;颜色&#60;/name&#62; ...... &#60;/style&#62; ...... &#60;/category&#62; &#60;/cssdesign&#62; 系统分为文字、背景、文本、位置、布局、方框、边框和其他，每种类型有一个Name子元素和若干Style子元素。 每个Style子元素表示一个Style属性，结构如下 &#60;style&#62; &#60;name&#62;字体&#60;/name&#62; &#60;cssName&#62;font-family&#60;/cssName&#62; &#60;actionType&#62;select&#60;/actionType&#62; &#60;selectItems&#62; &#60;item&#62;verdana,arial&#60;/item&#62; &#60;item Name="宋体"&#62;SimSun&#60;/item&#62; &#60;item Name="黑体"&#62;SimHei&#60;/item&#62; &#60;/selectItems&#62; &#60;/style&#62; &#60;style&#62; &#60;name&#62;大小&#60;/name&#62; &#60;cssName&#62;font-size&#60;/cssName&#62; &#60;actionType&#62;select&#60;/actionType&#62; &#60;selectItems&#62; &#60;item&#62;12px&#60;/item&#62; &#60;item&#62;14px&#60;/item&#62; &#60;item&#62;9px&#60;/item&#62; &#60;/selectItems&#62; &#60;/style&#62; &#60;style&#62; &#60;name&#62;颜色&#60;/name&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>CSS样式中包含很多属性，设计器中当然要包含相应的属性类型；那么这些属性信息从哪里来呢？</p>
<p>采用XML定义是一种很自然就会想到的方式。</p>
<p>经常使用DW和VS.NET，所以在交互设计上采用了类似的模式；先将样式属性分类，再设置详细属性。</p>
<p>CSS属性是比较复杂的，如果要完全按照DW或VS.NET的模式，实现会比较复杂。为了简化，我把值的输入简化为两种形式，选择和文本输入。对于选择，直接在XML文件中定义；对于文本输入，抽象几种输入类型，在设计器生成时根据类型设定不同的HTC组件操作。这样就将一些复杂的属性输入封装到 HTC组件中，整个构架就简洁起来。</p>
<p>XML文件描述</p>
<p>首先是属性分类</p>
<pre>
<span style="color: #000080; font-weight: bold;">&lt;cssdesign&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;category&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>文字<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>字体<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
......
<span style="color: #000080; font-weight: bold;">&lt;/style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>样式<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
......
<span style="color: #000080; font-weight: bold;">&lt;/style&gt;</span>
......
<span style="color: #000080; font-weight: bold;">&lt;/category&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;category&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>背景<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>颜色<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
......
<span style="color: #000080; font-weight: bold;">&lt;/style&gt;</span>
......
<span style="color: #000080; font-weight: bold;">&lt;/category&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;/cssdesign&gt;</span>
</pre>
<p>系统分为文字、背景、文本、位置、布局、方框、边框和其他，每种类型有一个Name子元素和若干Style子元素。</p>
<p>每个Style子元素表示一个Style属性，结构如下</p>
<pre>
<span style="color: #000080; font-weight: bold;">&lt;style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>字体<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;cssName&gt;</span>font-family<span style="color: #000080; font-weight: bold;">&lt;/cssName&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;actionType&gt;</span>select<span style="color: #000080; font-weight: bold;">&lt;/actionType&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;selectItems&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;item&gt;</span>verdana,arial<span style="color: #000080; font-weight: bold;">&lt;/item&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;item</span> <span style="color: #ff0000;">Name=</span><span style="color: #0000ff;">"宋体"</span><span style="color: #000080; font-weight: bold;">&gt;</span>SimSun<span style="color: #000080; font-weight: bold;">&lt;/item&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;item</span> <span style="color: #ff0000;">Name=</span><span style="color: #0000ff;">"黑体"</span><span style="color: #000080; font-weight: bold;">&gt;</span>SimHei<span style="color: #000080; font-weight: bold;">&lt;/item&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;/selectItems&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;/style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>大小<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;cssName&gt;</span>font-size<span style="color: #000080; font-weight: bold;">&lt;/cssName&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;actionType&gt;</span>select<span style="color: #000080; font-weight: bold;">&lt;/actionType&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;selectItems&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;item&gt;</span>12px<span style="color: #000080; font-weight: bold;">&lt;/item&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;item&gt;</span>14px<span style="color: #000080; font-weight: bold;">&lt;/item&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;item&gt;</span>9px<span style="color: #000080; font-weight: bold;">&lt;/item&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;/selectItems&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;/style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;style&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;name&gt;</span>颜色<span style="color: #000080; font-weight: bold;">&lt;/name&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;cssName&gt;</span>background<span style="color: #000080; font-weight: bold;">&lt;/cssName&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;actionType&gt;</span>input_ColorSelect<span style="color: #000080; font-weight: bold;">&lt;/actionType&gt;</span>
<span style="color: #000080; font-weight: bold;">&lt;/style&gt;</span>
</pre>
<p><strong>Name</strong>为该属性的描述名称，在设计器中为文本描述；</p>
<p><strong>CssName</strong>为属性名，在设计器中即输入字段的ID；</p>
<p><strong>ActionType</strong>为属性设置方法，在设计器中为输入字段的样式类名，该样式中含有Behavior属性，制定HTC组件；</p>
<p><strong>SelectItems</strong>为选择项，如果ActionType为Select，将会在此列出选择项；其子元素Item如果含有Name属性，将显示在设计器中，否则直接显示该元素的文本内容</p>
<p><strong>框架图</strong></p>
<p><a href="http://linnchord.net/upload/x2blog/img/cssxml.gif" target="_blank"><img src="http://linnchord.net/upload/x2blog/img/cssxml_s.gif" border="0" alt="" /></a></p>
<p><a href="http://linnchord.net/upload/x2blog/code/css.rar">XML源文件</a></p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/130.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器之样式表操作类</title>
		<link>http://linnchord.net/archives/131.html</link>
		<comments>http://linnchord.net/archives/131.html#comments</comments>
		<pubDate>Mon, 26 Apr 2004 16:20:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[CShap]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[netsoft]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/04/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%b9%8b%e6%a0%b7%e5%bc%8f%e8%a1%a8%e6%93%8d%e4%bd%9c%e7%b1%bb/</guid>
		<description><![CDATA[为了操作样式表，设计了一个简单的样式表操作类。功能主要是解析操作指定样式表文件，实现对样式类的添加、修改、删除、保存。 机制：读取Web服务器上某样式表文件,将文本转化为一个ArrayList，数组元素为自定义的ClassItem对象,包含Name和Text属性（Name即样式名称，Text即样式的内容）；然后通过对ArrayList操作，控制样式，最后保存。 由于在服务器段我们不作具体样式定义，因此该类只操作到样式类级别，不涉及样式属性和值。 下面提供该类的UML图 ClassItem 是一个结构体，仅包含两个属性；]]></description>
			<content:encoded><![CDATA[<p>为了操作样式表，设计了一个简单的样式表操作类。功能主要是解析操作指定样式表文件，实现对样式类的添加、修改、删除、保存。 </p>
<p>机制：读取Web服务器上某样式表文件,将文本转化为一个ArrayList，数组元素为自定义的ClassItem对象,包含Name和Text属性（Name即样式名称，Text即样式的内容）；然后通过对ArrayList操作，控制样式，最后保存。 </p>
<p>由于在服务器段我们不作具体样式定义，因此该类只操作到样式类级别，不涉及样式属性和值。 </p>
<p>下面提供该类的UML图 ClassItem 是一个结构体，仅包含两个属性； </p>
<p><img src="http://linnchord.net/upload/x2blog/img/CssControlClass.gif" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/131.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS设计器之流程</title>
		<link>http://linnchord.net/archives/132.html</link>
		<comments>http://linnchord.net/archives/132.html#comments</comments>
		<pubDate>Fri, 23 Apr 2004 17:11:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[CShap]]></category>
		<category><![CDATA[netsoft]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/04/css%e8%ae%be%e8%ae%a1%e5%99%a8%e4%b9%8b%e6%b5%81%e7%a8%8b/</guid>
		<description><![CDATA[最近做了一个CSS设计器，主要功能是在web界面上操作设计CSS样式表，目的是方便用户自定义系统界面。 其实我个人看法这个东西并没有太大必要，对于最终用户来说，一般不熟悉网页制作，是不可能进行这种操作的，而且就系统整体来考虑，也不应该给用户这种权限。另外，相对于本来就比较紧张时间资源来讲，花这么多时间，实现这种用户需求优先度较低的功能，实在不合算&#8230;&#8230; 奈何项目经理雄心勃勃，在大而全的方针指导下，不得不做啊。 月初就作的差不多，来总结一下吧 流程再简单说明一下]]></description>
			<content:encoded><![CDATA[<p>最近做了一个CSS设计器，主要功能是在web界面上操作设计CSS样式表，目的是方便用户自定义系统界面。 </p>
<p>其实我个人看法这个东西并没有太大必要，对于最终用户来说，一般不熟悉网页制作，是不可能进行这种操作的，而且就系统整体来考虑，也不应该给用户这种权限。另外，相对于本来就比较紧张时间资源来讲，花这么多时间，实现这种用户需求优先度较低的功能，实在不合算&hellip;&hellip; </p>
<p>奈何项目经理雄心勃勃，在大而全的方针指导下，不得不做啊。 </p>
<p>月初就作的差不多，来总结一下吧 </p>
<p><img src="http://linnchord.net/upload/x2blog/img/cssflow.gif" alt="" /> </p>
<p>流程再简单说明一下 </p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/132.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML/XSL实现界面自定义</title>
		<link>http://linnchord.net/archives/143.html</link>
		<comments>http://linnchord.net/archives/143.html#comments</comments>
		<pubDate>Tue, 24 Feb 2004 14:45:00 +0000</pubDate>
		<dc:creator>linnchord</dc:creator>
				<category><![CDATA[软件开发]]></category>
		<category><![CDATA[netsoft]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl]]></category>

		<guid isPermaLink="false">http://linnchord.net/2004/02/xmlxsl%e5%ae%9e%e7%8e%b0%e7%95%8c%e9%9d%a2%e8%87%aa%e5%ae%9a%e4%b9%89/</guid>
		<description><![CDATA[最近比较忙&#8230;&#8230; 公司的项目目前进入了代码开发阶段，不过很多构架设计上的东西都还不清楚，我觉得应该还算是设计阶段。 目前系统要实现完全自定义界面，按项目经理说这个搞出来了，后面的业务界面就不用每个开发了。界面的实现方式是XML/XSLT/CSS的实现，而且最后要达到可视化设计实现。项目经理描述的是，针对不同的业务逻辑，产生不同的XML，然后用匹配的XSLT进行解释，生成aspx页面。 坦白的说，这个描述是不是反映了项目经理的原意，我也不太清楚，因为我一直也没弄明白整个构架实现的机制。只是我觉得在这种从上到下都不熟悉XML/XSLT，只是因为大约的了解，就贸然采用方案，对于这样一个时间紧迫的项目而言，风险实在不小。 上面的实现，说来还仅仅是难度较大、实现困难，但是希望象普通web编辑器那样可视化生成XSLT，那几乎就是不可实现的了。XSLT并非仅仅是对外观的格式化描述，还带有很多可编程元素，目前甚至有的系统完全采用xslt作为业务逻辑控制，可想其复杂性。目前还没有哪个软件能够实现可视化操作的，当然从功能和应用本身来说也没有这个必要。 我很担心因为技术难度过大而导致项目风险的大大增加，延期是肯定的了，只是希望最后不要失败才好。我做事情通常会先确保一个必须达到的最低标准，然后在比较有把握的情况下作锦上添花的工作。这算是比较保守吧，毕竟这不是我一个人的事情，有责任在。 目前我做一个CSS生成器，基本就是模仿VS.NET或DW的CSS生成器。计划采用XML/XSLT/XSD/Javascript开发，利用 XSD作数据约束，XSLT/JS作界面和交互控制，XML保存数据。我目前对具体技术还不清楚，不知道这么构架是否可行&#8230;&#8230;先看书吧&#8230;&#8230;]]></description>
			<content:encoded><![CDATA[<p><font face="Verdana">最近比较忙&hellip;&hellip; </p>
<p>公司的项目目前进入了代码开发阶段，不过很多构架设计上的东西都还不清楚，我觉得应该还算是设计阶段。 </p>
<p>目前系统要实现完全自定义界面，按项目经理说这个搞出来了，后面的业务界面就不用每个开发了。界面的实现方式是XML/XSLT/CSS的实现，而且最后要达到可视化设计实现。项目经理描述的是，针对不同的业务逻辑，产生不同的XML，然后用匹配的XSLT进行解释，生成aspx页面。 </p>
<p>坦白的说，这个描述是不是反映了项目经理的原意，我也不太清楚，因为我一直也没弄明白整个构架实现的机制。只是我觉得在这种从上到下都不熟悉XML/XSLT，只是因为大约的了解，就贸然采用方案，对于这样一个时间紧迫的项目而言，风险实在不小。 </p>
<p>上面的实现，说来还仅仅是难度较大、实现困难，但是希望象普通web编辑器那样可视化生成XSLT，那几乎就是不可实现的了。XSLT并非仅仅是对外观的格式化描述，还带有很多可编程元素，目前甚至有的系统完全采用xslt作为业务逻辑控制，可想其复杂性。目前还没有哪个软件能够实现可视化操作的，当然从功能和应用本身来说也没有这个必要。 </p>
<p>我很担心因为技术难度过大而导致项目风险的大大增加，延期是肯定的了，只是希望最后不要失败才好。我做事情通常会先确保一个必须达到的最低标准，然后在比较有把握的情况下作锦上添花的工作。这算是比较保守吧，毕竟这不是我一个人的事情，有责任在。 </p>
<p>目前我做一个CSS生成器，基本就是模仿VS.NET或DW的CSS生成器。计划采用XML/XSLT/XSD/Javascript开发，利用 XSD作数据约束，XSLT/JS作界面和交互控制，XML保存数据。我目前对具体技术还不清楚，不知道这么构架是否可行&hellip;&hellip;先看书吧&hellip;&hellip;</font></p>
]]></content:encoded>
			<wfw:commentRss>http://linnchord.net/archives/143.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
