论坛首页 Java企业应用论坛

代码擂台,特别有请buaawhl

浏览 69602 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-07-29  
无话可说了
0 请登录后投票
   发表时间:2004-09-21  
不管怎么说,做一点东西总是好的。大家不要打击他们。
建议大家去看一下Asp.net是怎么实现的,特别建议大家看看Visual web developer 2005 express,看了就会知道微软有多厉害。
可以说,大家不用再吵了,再吵下去,哪天美工MM都能用微软的工具做得比你们好。
举个例子,你只要把一个表拖到页面上,就已经完成了一个分页的查询。再简单设置几下,就可以完成增删改。
拖几个控件上去,设置几下,就可以实现一整套数据的操作。
如果你觉得这样绑定过死,那么它还可以绑定到Object。
太可怕了,以后连傻子都会做简单的数据库应用了。虽然复杂的东西他们做不了,可是如果一个外行都可以三拳两脚折腾出一个东西,而我们还在呼哧呼哧的写代码,别人会怎么看我们呢?
看看微软新开发的web工具,再看看难产的jsf,看看开源的一个又一个半生不熟的框架,你就会知道以后的事会是什么样子的。
我并不以为用微软的工具就能做出复杂的系统,但是对于不是很大的系统,微软可以说已经把他们简化到不能再简单的地步了。
Java阵营要是再拿不出像样的东西,Java真的会成为一个空有高端之名的漂亮摆设。
我觉得微软Asp.net的框架是现在所有的表示层框架最好的,大有值得借鉴之处。
0 请登录后投票
   发表时间:2004-09-21  
mooniscrazy 写道
不管怎么说,做一点东西总是好的。大家不要打击他们。
建议大家去看一下Asp.net是怎么实现的,特别建议大家看看Visual web developer 2005 express,看了就会知道微软有多厉害。
可以说,大家不用再吵了,再吵下去,哪天美工MM都能用微软的工具做得比你们好。
举个例子,你只要把一个表拖到页面上,就已经完成了一个分页的查询。再简单设置几下,就可以完成增删改。
拖几个控件上去,设置几下,就可以实现一整套数据的操作。
如果你觉得这样绑定过死,那么它还可以绑定到Object。
太可怕了,以后连傻子都会做简单的数据库应用了。虽然复杂的东西他们做不了,可是如果一个外行都可以三拳两脚折腾出一个东西,而我们还在呼哧呼哧的写代码,别人会怎么看我们呢?
看看微软新开发的web工具,再看看难产的jsf,看看开源的一个又一个半生不熟的框架,你就会知道以后的事会是什么样子的。
我并不以为用微软的工具就能做出复杂的系统,但是对于不是很大的系统,微软可以说已经把他们简化到不能再简单的地步了。
Java阵营要是再拿不出像样的东西,Java真的会成为一个空有高端之名的漂亮摆设。
我觉得微软Asp.net的框架是现在所有的表示层框架最好的,大有值得借鉴之处。

现在flex也能实现这样的功能阿。
有一些商业的公司也推出了类似的,但是国人很少用吧,我以前在google搜索到几个,也是拖拉鼠标的,效果也很不错。
0 请登录后投票
   发表时间: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>
0 请登录后投票
   发表时间: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 ?
0 请登录后投票
   发表时间: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 我认为还是革命彻底点好.
0 请登录后投票
   发表时间: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.
0 请登录后投票
   发表时间:2005-05-25  
没看懂 !

将脚本放到xsl中不大好吧 ? 这样的xsl很难被重用
0 请登录后投票
   发表时间:2005-05-25  
winterwolf 写道
没看懂 !

将脚本放到xsl中不大好吧 ? 这样的xsl很难被重用


晕倒,别开口闭口重用的。这里的Script和html的标签有什么不同吗,无非也就是个显示模板,对于这种专门针对某种格式的东西,谈什么重用?html标签也重用?
0 请登录后投票
   发表时间: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将变的多么可怕 !
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics