动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   Xml → 阅读文章

 存取XML的属性

作者来源: 
阅读 1436 人次 , 2006-3-29 3:13:00 

XSL 将属性视为属于XML 文件中的一个元素,好像是XML 文件中的子元素。然而,要在XSL样本中读取属性,你必须在属性名称前加上字符@,作为属性名称与元素名称的识别。
例如,在下列起始标签中的筛选运算子从所有BOOK 元素,筛选出属性InStock 的属性值为「yes」的BOOK 元素。换句话说,筛选运算子筛选出有库存的书籍:
<xsl:for-each select="INVENTORY/BOOK [@InStock='yes']">
你可以使用XSL 元素value-of,如同使用它来撷取元素的文字内容的方式一般,来撷取任何属性的属性值。例如下列所示,value-of 元素得到AUTHOR 元素中Born 属性的属性值:
<xsl:value-of select="AUTHOR/@Born"/>
在列表10-8 中的样式表,示范了存取XML 文件中元素属性值的技巧。这份样式表被连结到列表10-9 中的XML 文件,并显示书籍清单中所有库存有的书籍。(你可以在随书光盘的 XslDemo06.xsl 和 XslDemo06.xml 档案中找到。)
XslDemo06.xsl
<?xml version="1.0"?>
<!--File Name:XslDemo06.xsl -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<H2>Books In Stock</H2>
<TABLE BORDER="1" CELLPADDING="5">
<THEAD>
<TH>Title</TH>
<TH>Author</TH>
<TH>Binding Type</TH>
<TH>Number of Pages</TH>
<TH>Price</TH>
</THEAD>
<xsl:for-each select="INVENTORY/BOOK
[@InStock='yes']">
<TR ALIGN="CENTER">
<TD>
<xsl:value-of
select="TITLE"/>
</TD>
<TD>
<xsl:value-of
select="AUTHOR"/><BR/>
(born <xsl:value-of
select="AUTHOR/@Born"/>)
</TD>
<TD>
<xsl:value-of
select="BINDING"/>
</TD>
<TD>
<xsl:value-of
select="PAGES"/>
</TD>
<TD>
<xsl:value-of
select="PRICE"/>
</TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>

XslDemo06.xml
<?xml version="1.0"?>
<!--File Name:XslDemo06.xml-->
<?xml-stylesheet type="text/xsl" href="XslDemo06.xsl"?>
<INVENTORY>
<BOOK InStock="yes">
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR Born="1835">Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK InStock="no">
<TITLE>Leaves of Grass</TITLE>
<AUTHOR Born="1819">Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>The Marble Faun</TITLE>
<AUTHOR Born="1804">Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>473</PAGES>
<PRICE>$10.95</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>Moby-Dick</TITLE>
<AUTHOR Born="1819">Herman Melville</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>724</PAGES>
<PRICE>$9.95</PRICE>
</BOOK>
</INVENTORY>
在XML 文件中的每个BOOK 元素,皆包含InStock 属性,藉由设定属性值为「yes」或「no」 来指定此书籍是否有库存。每个AUTHOR 元素使用Born 属性来指出作者的出生年份。
样式表使用筛选运算子中的属性,来从样式表所显示的BOOK 元素集合中排除所有缺货的书籍,而不是显示属性InStock 的属性值:
<xsl:for-each select="INVENTORY/BOOK [@InStock='yes']">
<!--display each BOOK element-->
</xsl:for-each>
此样式表将BOOK 元素显示于HTML 的表格中,而不是在先前范例的SPAN 元素中。它利用XSL 元素value-of 将Born 属性的属性值显示于AUTHOR 元素的值之后。下列的元素会建立显示这些属性值的表格:
<TD>
<xsl:value-of select="AUTHOR"/><BR/>
(born <xsl:value-of select="AUTHOR/@Born"/>)
</TD>
下图为Internet Explorer 5 显示此文件的情形:
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:XML的一般信息
· 下一篇:筛选和排序XML数据
· CSS与XSL简述
· 建立有效的XML文件
· 开发基于XML的留言板
· XML轻松学习手册(3)XML概念之一
· XML基础教程:掌握SAX


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077