不会游泳鱼 发表于 2007-8-6 15:59

html条件格式: DSO & CSS

想知道在html中用DSO绑定的数据如何根据不同的数值以不同的格式显示出来…

powerwind 发表于 2007-8-6 22:48

不知道DSO是什么。

请把题目详细描述。

究竟要多少种格式?

ant2004eq 发表于 2007-8-6 23:21

其实百度一下你会解决的

不会游泳鱼 发表于 2007-8-7 03:53

DSO是Data Source(Sourcing?) Object. 先用xml存放数据, 再用html的 "datasrc=#xmlxxxx" 在一个容器中显示数据。 其中一些内容需要根据数值(比如超过某值, 或者等于某特定字符串)的不同用不同的样式显示出来, 比如改变字体颜色。现在用javascript在加载完数据后再一个一个改变, 总会有点别扭(加载过程中是一种样式, 加载完一闪一闪的变了个样)。想知道有没办法在加载前就改变。我试过把html标记写在xml中,结果华丽地出错…

powerwind 发表于 2007-8-7 20:26

原来是指XML的数据岛。

若要实现根据数值不同以不同格式显示,必须对数值进行判断,应该使用javascript读取。https://www.gdutbbs.com/thread-77939-1-1.html 这里有关于DOM模型方式访问XML文件的例子。

同时发现我的电脑里有一个不错的例子。


<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="achie.xsl"?>
<学生成绩单>
                <学生成绩>
                <学号>001</学号>
                <姓名>庄一飞</姓名>
                <外语>78</外语>
                <高等数学>70</高等数学>
                <大学物理>80</大学物理>
                <政治>75</政治>
                <体育>80</体育>
                <总分>383</总分>
        </学生成绩>
        <学生成绩>
                <学号>002</学号>
                <姓名>罗不凡</姓名>
                <外语>80</外语>
                <高等数学>75</高等数学>
                <大学物理>75</大学物理>
                <政治>80</政治>
                <体育>70</体育>
                <总分>380</总分>
        </学生成绩>
        <学生成绩>
                <学号>003</学号>
                <姓名>樊兴</姓名>
                <外语>76</外语>
                <高等数学>69</高等数学>
                <大学物理>79</大学物理>
                <政治>85</政治>
                <体育>82</体育>
                <总分>391</总分>
        </学生成绩>
        <学生成绩>
                <学号>004</学号>
                <姓名>吴正雨</姓名>
                <外语>80</外语>
                <高等数学>80</高等数学>
                <大学物理>75</大学物理>
                <政治>70</政治>
                <体育>70</体育>
                <总分>375</总分>
        </学生成绩>
        <学生成绩>
                <学号>005</学号>
                <姓名>曾先锋</姓名>
                <外语>70</外语>
                <高等数学>75</高等数学>
                <大学物理>80</大学物理>
                <政治>77</政治>
                <体育>70</体育>
                <总分>372</总分>
        </学生成绩>
        <学生成绩>
                <学号>006</学号>
                <姓名>金星</姓名>
                <外语>90</外语>
                <高等数学>80</高等数学>
                <大学物理>70</大学物理>
                <政治>65</政治>
                <体育>60</体育>
                <总分>365</总分>
        </学生成绩>
        <学生成绩>
                <学号>007</学号>
                <姓名>缚寒</姓名>
                <外语>78</外语>
                <高等数学>87</高等数学>
                <大学物理>67</大学物理>
                <政治>78</政治>
                <体育>80</体育>
                <总分>390</总分>
        </学生成绩>
        <学生成绩>
                <学号>008</学号>
                <姓名>柳莺</姓名>
                <外语>90</外语>
                <高等数学>60</高等数学>
                <大学物理>70</大学物理>
                <政治>80</政治>
                <体育>75</体育>
                <总分>375</总分>
        </学生成绩>
        <学生成绩>
                <学号>009</学号>
                <姓名>成翼</姓名>
                <外语>78</外语>
                <高等数学>75</高等数学>
                <大学物理>86</大学物理>
                <政治>89</政治>
                <体育>70</体育>
                <总分>398</总分>
        </学生成绩>
        <学生成绩>
                <学号>010</学号>
                <姓名>熊一丹</姓名>
                <外语>90</外语>
                <高等数学>80</高等数学>
                <大学物理>60</大学物理>
                <政治>70</政治>
                <体育>72</体育>
                <总分>372</总分>
        </学生成绩>
</学生成绩单>



achie.xsl

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!--主模板:调用成绩模板,设计显示界面和布局,计算平均值-->
<xsl:template match="/">
    <HTML>
      <HEAD>
      <STYLE>
          BODY {margin:0}
          .bg {font:12pt Verdana; background-color:ffffff; color:BLUE}
          H1 {font:bold 14pt Verdana; width:100%; margin-top:1em}
          .row {font:10pt Verdana; border-bottom:1px solid #CC88CC}
          .header {font:bold 9pt Verdana; cursor:hand; padding:2px; border:2px outset gray}
          .up {background-color:#DDFFDD;}
          .down {background-color:#FFcc99;}
      </STYLE>
      </HEAD>
      
      <SCRIPT><xsl:comment><![CDATA[
      function sort(field)
      {
          sortField.value = field;
          <!-- set cursor to watch here? -->
          listing.innerHTML = source.documentElement.transformNode(stylesheet);
      }
      ]]></xsl:comment></SCRIPT>

      <SCRIPT for="window" event="onload"><xsl:comment><![CDATA[
      stylesheet = document.XSLDocument;
      source = document.XMLDocument;
      sortField = document.XSLDocument.selectSingleNode("//@order-by");
      ]]></xsl:comment></SCRIPT>
      
       <BODY>
      <TABLE width="100%" cellspacing="0">
      <TR>
            <TD class="bg"/>
            <TD class="bg">
            <H1><xsl:value-of select="学生成绩单/标题"/></H1>
               <xsl:apply-templates select="学生成绩单/公布日期"/>            
            </TD>
          </TR>
      
      <TR>
            <TD class="bg" width="120" valign="top">
            
            </TD>
            <TD class="bg" valign="top">
            <DIV id="listing"><xsl:apply-templates match="学生成绩单"/></DIV>
            </TD>
          </TR>
         
      
      </TABLE>   
      </BODY>
    </HTML>
</xsl:template>

<!--成绩模板:调用各科成绩模板,控制成绩显示表格,排序-->
<xsl:template match="学生成绩单">
    <TABLE STYLE="background-color:white">
      <THEAD>
      <TD width="90"><DIV class="header" onClick="sort('学号')">学号</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('姓名')">姓名</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('外语')">外语</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('高等数学')">高等数学</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('大学物理')">大学物理</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('政治')">政治</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('体育')">体育</DIV></TD>
      <TD width="90"><DIV class="header" onClick="sort('总分')">总分</DIV></TD>
      </THEAD>
      <xsl:for-each select="学生成绩" order-by="学号">
      <TR>
          <xsl:for-each select="总分">
            <xsl:if expr="this.nodeTypedValue &gt; 385">
            <xsl:attribute name="class">up</xsl:attribute>
            </xsl:if>
          </xsl:for-each>
          <xsl:for-each select="总分">
            <xsl:if expr="this.nodeTypedValue &lt; 380">
            <xsl:attribute name="class">down</xsl:attribute>
            </xsl:if>
          </xsl:for-each>
         
          <TD><DIV class="row"><xsl:value-of select="学号"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="姓名"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="外语"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="高等数学"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="大学物理"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="政治"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="体育"/></DIV></TD>
          <TD><DIV class="row"><xsl:value-of select="总分"/></DIV></TD>
      </TR>
      </xsl:for-each>
    </TABLE>
</xsl:template>
<!--各科成绩摸板:取得格式标准的各科成绩数据,其实这里只用给总分加模板-->
<xsl:template match="总分">
<xsl:eval>formatNumber(this.nodeTypedValue, "001.0")</xsl:eval>
</xsl:template>

   <xsl:template match="公布日期">
    <xsl:eval>formatDate(this.nodeTypedValue, " yyyy MMMM dd")</xsl:eval>
               <xsl:eval>formatTime(this.nodeTypedValue, "tt hh:mm")</xsl:eval>
</xsl:template>

</xsl:stylesheet>
页: [1]
查看完整版本: html条件格式: DSO & CSS