锁定老帖子 主题:代码擂台,特别有请buaawhl
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-07-29
无话可说了
|
|
返回顶楼 | |
发表时间:2004-09-21
不管怎么说,做一点东西总是好的。大家不要打击他们。
建议大家去看一下Asp.net是怎么实现的,特别建议大家看看Visual web developer 2005 express,看了就会知道微软有多厉害。 可以说,大家不用再吵了,再吵下去,哪天美工MM都能用微软的工具做得比你们好。 举个例子,你只要把一个表拖到页面上,就已经完成了一个分页的查询。再简单设置几下,就可以完成增删改。 拖几个控件上去,设置几下,就可以实现一整套数据的操作。 如果你觉得这样绑定过死,那么它还可以绑定到Object。 太可怕了,以后连傻子都会做简单的数据库应用了。虽然复杂的东西他们做不了,可是如果一个外行都可以三拳两脚折腾出一个东西,而我们还在呼哧呼哧的写代码,别人会怎么看我们呢? 看看微软新开发的web工具,再看看难产的jsf,看看开源的一个又一个半生不熟的框架,你就会知道以后的事会是什么样子的。 我并不以为用微软的工具就能做出复杂的系统,但是对于不是很大的系统,微软可以说已经把他们简化到不能再简单的地步了。 Java阵营要是再拿不出像样的东西,Java真的会成为一个空有高端之名的漂亮摆设。 我觉得微软Asp.net的框架是现在所有的表示层框架最好的,大有值得借鉴之处。 |
|
返回顶楼 | |
发表时间:2004-09-21
mooniscrazy 写道 不管怎么说,做一点东西总是好的。大家不要打击他们。
建议大家去看一下Asp.net是怎么实现的,特别建议大家看看Visual web developer 2005 express,看了就会知道微软有多厉害。 可以说,大家不用再吵了,再吵下去,哪天美工MM都能用微软的工具做得比你们好。 举个例子,你只要把一个表拖到页面上,就已经完成了一个分页的查询。再简单设置几下,就可以完成增删改。 拖几个控件上去,设置几下,就可以实现一整套数据的操作。 如果你觉得这样绑定过死,那么它还可以绑定到Object。 太可怕了,以后连傻子都会做简单的数据库应用了。虽然复杂的东西他们做不了,可是如果一个外行都可以三拳两脚折腾出一个东西,而我们还在呼哧呼哧的写代码,别人会怎么看我们呢? 看看微软新开发的web工具,再看看难产的jsf,看看开源的一个又一个半生不熟的框架,你就会知道以后的事会是什么样子的。 我并不以为用微软的工具就能做出复杂的系统,但是对于不是很大的系统,微软可以说已经把他们简化到不能再简单的地步了。 Java阵营要是再拿不出像样的东西,Java真的会成为一个空有高端之名的漂亮摆设。 我觉得微软Asp.net的框架是现在所有的表示层框架最好的,大有值得借鉴之处。 现在flex也能实现这样的功能阿。 有一些商业的公司也推出了类似的,但是国人很少用吧,我以前在google搜索到几个,也是拖拉鼠标的,效果也很不错。 |
|
返回顶楼 | |
发表时间:2005-05-23
大家的争论焦点还是v中的逻辑问题 我认为将这个交给xsl是最合适的. xsl和js一样可由客户端处理. xsl也是可重用的 可组装的 而且xsl符合xml标准 可用xsl处理另外的xsl.
手写的肯定有错误 见谅! ******************1.xml************* <成绩单> <成绩 姓名="张三"> <课程 > <名称>语文</名称> <分数>80<分数> </课程> </成绩> <成绩 姓名="李四"> <课程 > <名称>语文</名称> <分数>80<分数> </课程> <课程 > <名称>数学</名称> <分数>90<分数> </课程> </成绩> ***************1.xsl**************** <xsltemplate match="/"> <table> <xslapply-templates/> </table> </xsltemplate> <xsltemplate match="成绩"> <xslvariable name = n select = "count(课程)"/> <xslif test="[$n] & 1"> <tr> <td rowspan="[$n]">姓名<xslvalue-of select="姓名"/></td> <td rowspan="[$n]">平均分<xslvalue-of select="sum(课程/分数)"/></td> </tr> <xslfor-each select="课程"> <tr> <td>课目<xslvalue-of select="名称"/></td> <td>分数<xslvalue-of select="分数"/></td> </tr> </xslfor-each> </xslif> <xslif test="$n eq 1"> <tr> <td>姓名<xslvalue-of select="姓名"/></td> <td>平均分<xslvalue-of select="sum(课程/分数)"/></td> <td>课目<xslvalue-of select="课程/名称"/></td> <td>分数<xslvalue-of select="课程/分数"/></td> </tr> </xslif> </xsltemplate> </xsltemplate> </xslstylesheet> |
|
返回顶楼 | |
发表时间:2005-05-23
winterwolf 写道 大家的争论焦点还是v中的逻辑问题 我认为将这个交给xsl是最合适的. xsl和js一样可由客户端处理. xsl也是可重用的 可组装的 而且xsl符合xml标准 可用xsl处理另外的xsl.
手写的肯定有错误 见谅! ******************1.xml************* <成绩单> <成绩 姓名="张三"> <课程 > <名称>语文</名称> <分数>80<分数> </课程> </成绩> <成绩 姓名="李四"> <课程 > <名称>语文</名称> <分数>80<分数> </课程> <课程 > <名称>数学</名称> <分数>90<分数> </课程> </成绩> ***************1.xsl**************** <xsl:template match="/"> <table> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="成绩"> <xsl:variable name = n select = "count(课程)"/> <xsl:if test="[$n] & 1"> <tr> <td rowspan="[$n]">姓名:<xsl:value-of select="姓名"/></td> <td rowspan="[$n]">平均分:<xsl:value-of select="sum(课程/分数)"/></td> </tr> <xsl:for-each select="课程"> <tr> <td>课目:<xsl:value-of select="名称"/></td> <td>分数:<xsl:value-of select="分数"/></td> </tr> </xsl:for-each> </xsl:if> <xsl:if test="$n eq 1"> <tr> <td>姓名:<xsl:value-of select="姓名"/></td> <td>平均分:<xsl:value-of select="sum(课程/分数)"/></td> <td>课目:<xsl:value-of select="课程/名称"/></td> <td>分数:<xsl:value-of select="课程/分数"/></td> </tr> </xsl:if> </xsl:template> </xsl:template> </xsl:stylesheet> XSL Pipeline 在处理XML DOM方面非常强大。管道可以无限长。 Sitemesh, Tiles Taglib, fastm 等技术,处理完一次template之后,那些自定义标记就丢了(fastm 也许可以用程序硬把需要的标记写回到处理结果中,但是非常蹩脚,得不偿失)。这些布局技术都是一次性的短途的。 而XSL可以反复地处理XML DOM,只要你输出的结果仍然是XML。强大、灵活,这是XSL的优势。 XSL的劣势在于学习和使用难度。 XSL可以说是一种 函数式编程语言。中心概念是 Match. 截获所有符合match条件的xml node。有些类似于 AOP Interceptor. 这和我们平时的顺序逻辑的思维方式不同。 XSL表现复杂逻辑的时候,比如 if, else 的多层嵌套,<choose if otherwise> ,其复杂难懂程度,和Taglib 等一样。都是用 XML Tag 实现 logic flow。 另外,winterwolf 给出的开头那段 XML 数据是从哪里来的?用的是 XML 数据库? 如果是关系数据库,是ResultSet -> XML, 还是 ResultSet -> Object -> XML ? |
|
返回顶楼 | |
发表时间:2005-05-23
"XSL的劣势在于学习和使用难度。
XSL可以说是一种 函数式编程语言。中心概念是 Match. 截获所有符合match条件的xml node。有些类似于 AOP Interceptor. 这和我们平时的顺序逻辑的思维方式不同。 XSL表现复杂逻辑的时候,比如 if, else 的多层嵌套,<choose if otherwise> ,其复杂难懂程度,和Taglib 等一样。都是用 XML Tag 实现 logic flow。" 我没有很深入的研究过xsl. 刚开始感觉比较怪 用一用也就习惯了 其实需要写复杂的xsl的情况很少. xsl的组合可以借助xlnclude cinclude 单独的xsl可以做的很小很单一.(也许也可以做成组件库) "另外,winterwolf 给出的开头那段 XML 数据是从哪里来的?用的是 XML 数据库? 如果是关系数据库,是ResultSet -> XML, 还是 ResultSet -> Object -> XML ?" 用xml数据库肯定是最简单的,甚至不用写代码. <mapgenerate src="xmldbexist///db/成绩/1.xml"/>可以直接将exist数据库->db/成绩集合->1.xml放入管道. 如果1.xml不是单独的存储单元 而是查询后的结果 可以用xquery取得xml放入管道 如果是RDB cocoon有一套办法可以将查询结果导入xml 用起来并不复杂(可能还很简单优雅). 也可以继续使用hibernate. 我没尝试过用RDB 我认为还是革命彻底点好. |
|
返回顶楼 | |
发表时间:2005-05-23
<?xml version="1.0" encoding="gb2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://www.ejb.cc" version="1.0"> <msxsl:script language="VBScript" implements-prefix="user"> <![CDATA[ Function getName(node); getName = node.Item(0);.nodeName End Function ]]> </msxsl:script> <xsl:template match="/"> <xsl:apply-templates select="/*"/> </xsl:template> <xsl:template match="/*"> <Table WIDTH="100%" BORDER="0" cellpadding="0" cellspacing="1" style="font-size:11pt" bgcolor="#0099ff"> <tr bgcolor="#FF6600" style="cursor: hand;padding:5px"> <xsl:for-each select="./*[1]/*"> <td align="center"> <xsl:attribute name="onclick"> Sort('<xsl:value-of select="user:getName(.);"/>'); </xsl:attribute> <font color="#EEEEEE"><b><u><xsl:value-of select="user:getName(.);"/></u></b></font> </td> </xsl:for-each> </tr> <xsl:for-each select="./*[position();&=6 and position();&0]"> <xsl:sort select="./*[1]" order="ascending"/> <tr bgcolor="#FFCCFF"> <xsl:for-each select="./*"> <td> <xsl:value-of select="."/></td> </xsl:for-each> </tr> </xsl:for-each> </Table> </xsl:template> </xsl:stylesheet> 把VbScript也放在XSLT,这个XSLT没有任何Element的Harcode. |
|
返回顶楼 | |
发表时间:2005-05-25
没看懂 !
将脚本放到xsl中不大好吧 ? 这样的xsl很难被重用 |
|
返回顶楼 | |
发表时间:2005-05-25
winterwolf 写道 没看懂 !
将脚本放到xsl中不大好吧 ? 这样的xsl很难被重用 晕倒,别开口闭口重用的。这里的Script和html的标签有什么不同吗,无非也就是个显示模板,对于这种专门针对某种格式的东西,谈什么重用?html标签也重用? |
|
返回顶楼 | |
发表时间:2005-05-25
我是指重复使用. 比如用一个template 调用另外的template. 这时候加入js的xsl就没有再利用的价值 会破坏xsl的复用性. 加入xhtml不会破坏复用性 .
比如 xsl-1 用来处理 view-1 xsl-2 处理v-2 xsl-3调用 xsl1 xsl2来处理v-3 xsl-a 处理 v-a xsl-b 处理 v-b xsl-c 调用 xsl-a xsl-b来处理v-c xsl-X 调用 xsl-3 xsl-c来处理v-X 这样的情况加入js将变的多么可怕 ! |
|
返回顶楼 | |