曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
素的子元素中選擇,并作為表的單元格輸出。(如果有多個期待的元素��例如,三個NAME 元素��那么,只選
擇第一個。)
from-children()軸不允許做單獨使用元素名不能做的任何事情。實際上,select="ATOMIC_WEIGHT"只是select =
"from-children (ATOMIC_WEIGHT)”的縮寫形式。但是,其他軸更令人感興趣。
在匹配模式時引用父元素是不合法的,但在選擇表達式中引用則是合法。要引用父元素,可使用from-parent()軸。例如,
下面的規則輸出具有BOILING_POINT 子元素的ATOM 元素的值:
<xsl:template match="ATOM/BOILING_POINT">
XML 實用大全
第 478 頁
<P><xsl:value-of select="from-parent(ATOM)"/></P>
</xsl:template>
這里匹配的是BOILING_POINT 子元素,但輸出的是ATOM 父元素。
有些放射性原子(如釙)其半衰期是如此之短,以致無法測量重要的性質(如沸點和熔點)。所以并非所有的ATOM 元素都
必須有BOILING_POINT 子元素。上面的規則可用來只輸出實際上有沸點的元素。清單14-10 是此例的擴展,它匹配
BOILING_POINT 元素,但實際上使用from-parent(ATOM)輸出ATOM 父元素。
清單14-10:只輸出有已知熔點的元素的樣式單
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="PERIODIC_TABLE"/>
</body>
</html>
</xsl:template>
<xsl:template match="PERIODIC_TABLE">
<hl>Elements with known Melting Points</hl>
<xsl:apply-templates select="//MELTING_POINT"/>
</xsl:template>
<xsl:template match="MELTING_POINT">
<P>
<xsl:value-of select="from-parent(ATOM)"/>
</P>
XML 實用大全
第 479 頁
</xsl:template>
</xsl:stylesheet>
偶爾,可能需要選擇給定類型元素的最近的祖先。使用from-ancestors()就可以做到這一點。例如,下面的規則插入最近
的PERIODIC_TABLE 元素(包含匹配的SYMBOL 元素)的值。
<xsl:template match="SYMBOL">
<xsl:value-of select="from-ancestors(PERIODIC_TABLE)"/>
</xsl:template>
from-ancestors-or-self()函數的作用與from-ancestors()函數相似,所不同的是,如果當前節點與參數類型匹配,那么
它的返回值為其本身,而不是真正的祖先。例如,下面的規則匹配所有元素。如果匹配的元素是PERIODIC_TABLE,那么在
xsl:value-of 中選擇的正是PERIODIC_TABLE。
<xsl:template match="*">
<xsl:value-of select="from-ancestors-or-self(PERIODIC_TABLE)"/>
</xsl:template>
14.7.1.1 節點類型
from-axis()函數的參數,除了可以使用節點名稱和通配符之外,還可以是下列四個節點類型函數之一:
• comment()
• text()
• pi()
• node()
comment()節點類型選擇注釋節點。text()節點類型選擇文本節點。pi()節點類型選擇處理指令節點,而node()節點類型選
擇任何類型的節點(*通配符只選擇元素節點)。pi()節點類型還有一個可選的參數,用來指定要選擇的處理指令的名稱。
例如,下面的規則同時使用帶有node()節點類型的from-self(),將匹配的ATOM 元素封裝在P 元素中:
<xsl:template match="ATOM">
<P><xsl:value-of select="from-self(node())"/></P>
</xsl:template>
這里,選擇from-self(node())與選擇ATOM 是不同的。下面的這個規則獲取ATOM 元素的ATOM 子元素的值。此值不是匹配
的ATOM 元素的值,而是匹配ATOM 元素的一個子元素的另一個ATOM 元素值:
<xsl:template match="ATOM">
XML 實用大全
第 480 頁
<P><xsl:value of select="ATOM"/></P>
</xsl:template>
14.7.1.2 層次操作符
可以使用/和//操作符來將選擇表達式串聯在一起。例如,清單14-11 只將有熔點的那些元素的元素名、原子序數和熔點打
印成表。要實現此目的,選擇MELTING_POINT 元素的父元素,然后使用select="from-parent(*)/from-children(NAME)"來
查找父元素的NAME 和ATOMIC_NUMBER 子元素。
清單14-11:熔點與原子序數表
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/PERIODIC_TABLE">
<html>
<body>
<hl>Atomic Number vs. Melting Point</hl>
<table>
<th>Element</th>
<th>Atomic Number</th>
<th>Melting Point</th>
<xsl:apply-templates select "from-children(ATOM)"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="ATOM">
<xsl:apply-templates
XML 實用大全
第 481 頁
select="from-children(MELTING_POINT)"/>
</xsl:template>
<xsl:template match="MELTING_POINT">
<tr>
<td>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(135)