

 |
|
存取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="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文档
下一篇:使用串接样式表(CSS)来显示XML文件
|
普克创业投资网刊载此文不代表同意其说法或描述,仅为提供更多信息。
|
|