科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件存取XML的属性

存取XML的属性

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

XSL 将属性视为属于XML 文件中的一个元素,好像是XML 文件中的子元素。然而,要在XSL样本中读取属性,你必须在属性名称前加上字符@,作为属性名称与元素名称的识别。

作者: 来源:中国软件网 2008年6月23日

关键字: 属性 存取 XML 软件

  • 评论
  • 分享微博
  • 分享邮件
 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="ttp://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=http://www.ddvip.com/web/xml/index1/"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 显示此文件的情形:

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章