看看下面的三段代码student.xml, hmc.dtd,mystyle1xsl为什么不能正确显示正确结果结果
student.xml:
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="mystyle1.xsl"?>
<roster>
<student>
<name>lihua</name>
<on>hebei</on>
<age>15</age>
<telephone>62875555</telephone>
</student>
<student>
<name>zhangsan</name>
<on>beijing</on>
<age>14</age>
<telephone>82873425</telephone>
</student>
</roster>
------------------------------------------------------------------------
mystyle1.xsl
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/REC-html40">
<xsl:template>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>学生花名册</TITLE>
<STYLE> .title{font-size:15pt; font-weight:bold; color:blue } .name{color:red}
</STYLE>
</HEAD>
<BODY>
<P class="title" >学生花名册</P>
<xsl:apply-templates select="roster"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="roster">
<TABLE BORDER="1">
<THEAD>
<TD> <B>姓名</B> </TD>
<TD> <B>籍贯</B> </TD>
<TD> <B>年龄</B> </TD>
<TD> <B>电话</B> </TD>
</THEAD>
<xsl:for-each select="student" order-by="name">
<TR>
<TD><B><xsl:value-of select="name"/></B></TD>
<TD><xsl:value-of select="on"/></TD>
<TD><xsl:value-of select="age"/></TD>
<TD><xsl:value-of select = "telephone"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
--------------------------------------------------------------------------
hmc.dtd
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT roster (student)*>
<!ELEMENT student (name,on,age,telephone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT on (#PCDATA)>
<!ELEMENT telephone (#PCDATA)>
<!ELEMENT age (#PCDATA)>
问题点数:40、回复次数:8Top
1 楼dqbaiying(小白)回复于 2002-07-25 08:17:17 得分 0
xml文件中没有引用hmc.dtdTop
2 楼saucer(思归)回复于 2002-07-25 08:20:35 得分 15
1. remove the first template
2. XSLT does not support order-by for xsl:for-each, use xsl:sort instead
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/REC-html40">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>学生花名册</TITLE>
<STYLE> .title{font-size:15pt; font-weight:bold; color:blue } .name{color:red}
</STYLE>
</HEAD>
<BODY>
<P class="title" >学生花名册</P>
<xsl:apply-templates select="roster"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="roster">
<TABLE BORDER="1">
<THEAD>
<TD> <B>姓名</B> </TD>
<TD> <B>籍贯</B> </TD>
<TD> <B>年龄</B> </TD>
<TD> <B>电话</B> </TD>
</THEAD>
<xsl:for-each select="student">
<xsl:sort select="name" />
<TR>
<TD><B><xsl:value-of select="name"/></B></TD>
<TD><xsl:value-of select="on"/></TD>
<TD><xsl:value-of select="age"/></TD>
<TD><xsl:value-of select = "telephone"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>Top
3 楼shinechar1(我是一棵菠菜)回复于 2002-07-25 08:34:41 得分 0
我把order-by改成sort,还是不好使Top
4 楼shinechar1(我是一棵菠菜)回复于 2002-07-25 08:41:03 得分 0
还是不好用,用ie浏览出现乱码,请指教Top
5 楼bigshaw()回复于 2002-07-25 09:34:13 得分 0
saucer(思归)写的代码是对的。
你把代码重新写一次,不要复制,肯定可以的。
Top
6 楼hax(海曦)回复于 2002-07-25 10:30:29 得分 5
用ie 6。Top
7 楼saucer(思归)回复于 2002-07-25 12:19:43 得分 20
1. use the xslt I provided above
2. upgrade to ie6 or install msxml3 in "replace" modeTop
8 楼shinechar1(我是一棵菠菜)回复于 2002-07-25 12:33:26 得分 0
我用的是ie6,曾经有一个类似的代码运行后能正确显示结果,但这个还是不能,by the way,where to download msxml3, ms?Top
9 楼shinechar1(我是一棵菠菜)回复于 2002-07-25 13:18:57 得分 0
终于好了,
将<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/REC-html40">
该成
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns="http://www.w3.org/TR/REC-html40">
就可以了,看来是namespace的问题;
多谢大家!!Top




