xml、xsd和xsl之间的关系和使用实例
?简单地说,xsl是说明xml如何表达出来的样式文件,而xsd给出xml文件的格式描述
如果说xml是一叠钞票,xsd就是验钞机,看看里面有没有假钞,而xsl是点钞机,看看到底是多少钱。用xml可以不用xsd,就像花钱的时候不一定要验钞一样,但是收钱的人一般是想要验的。而花钱的时候不能不点钞,不点那就不是花钱了,是玩钱。当然了,点钞不一定要用点钞机,也可以用手点。?
? 比方不是很恰当。想说明的是,xml(文件里面的东西)是内容,xsd是内容的格式,xsl是处理内容的。
下面是xml和xsl结合的例子
?
product.xml文件的内容如下
<?xml version="1.0"?> <?xml:stylesheet type="text/xsl" href="table.xsl"?> <PRODUCTDET> <PRODUCT PRODID="P001" CATEGORY="TOY"> <DESCRIPTION>SWPI</DESCRIPTION> <COLOR>BLUE</COLOR> <RATE>100</RATE> </PRODUCT> <PRODUCT PRODID="P002" CATEGORY="TOY"> <DESCRIPTION>SWPI</DESCRIPTION> <COLOR>BLUE</COLOR> <RATE>200</RATE> </PRODUCT> <PRODUCT PRODID="P003" CATEGORY="BOOK"> <DESCRIPTION>SWPI</DESCRIPTION> <COLOR>BLUE</COLOR> <RATE>300</RATE> </PRODUCT> </PRODUCTDET>
?table.xsl的内容如下
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="COLOR"> <xsl:apply-templates /> </xsl:template> <xsl:template match="COLOR[end()]"> <xsl:apply-templates /> </xsl:template> <xsl:template match="text()"> <xsl:value-of select="." /> </xsl:template> <xsl:template match="/"> <html> <head><title>MY PRO COLL</title></head> <body> <h1>MY PRO COLL</h1> <table border="1"> <thead> <th>PRODUCT ID</th> <th>DESCRIPTION</th> <th>CATEGORY</th> <th>COLOR</th> </thead> <TBODY> <xsl:for-each select="PRODUCTDET/PRODUCT[@CATEGORY='TOY']" order-by="@CATEGORY;-number(RATE)"> <TR> <TD><xsl:value-of select="@PRODID" /></TD> <TD><xsl:value-of select="DESCRIPTION" /></TD> <TD><xsl:value-of select="@CATEGORY" /></TD> <TD><xsl:apply-templates select="COLOR" /></TD> </TR> </xsl:for-each> </TBODY> </table> </body> </html> </xsl:template> </xsl:stylesheet>
?
复制并保存以上两个文件之后,点击product.xml即可以看到显示效果。