2011-02-22 29 views
2

有人可以幫我解密這個xpath表達式嗎?瞭解一些xpath表達式

<xsl:template match="n1:table/@* | 
        n1:thead/@* | 
        n1:tfoot/@* | 
        n1:tbody/@* | 
        n1:colgroup/@* | 
        n1:col/@* | 
        n1:tr/@* | 
        n1:th/@* | 
        n1:td/@*"> 

我相信它的周圍地方:

選擇從N1的各項屬性和元素表由n1所有屬性:THEAD元素,並從N1的所有屬性:TFOOT ...等

我我真的不確定。

讀取此得到理解的XPath: http://www.w3schools.com/xpath/xpath_syntax.asp

關懷給我一個提示?

Thx。

+0

還有一個提示:不要使用w3schools作爲教程。請閱讀[w3fools](http://w3fools.com/)。 – Flack 2011-02-22 21:55:36

+0

那麼我應該使用什麼,W3官方建議? – 2011-02-22 22:58:41

回答

2

你基本上沒錯。該|是XPath工會集合運算符:

http://www.w3.org/TR/xpath/#node-sets

|操作符計算的 其操作數的工會,它必須是節點集

但在模式,從http://www.w3.org/TR/xslt#patterns

在模式中,表示 替代品;一個模式或 更多|如果有任何一個備選匹配項,分隔的備選項匹配 。

所以模板由n1相對於當前上下文節點引用的命名錶,THEAD,TBODY等任何屬性相匹配。

你還需要使用類似您的源文檔中佔了命名空間的存在如下:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:n1="uri:something"> 

更多關於命名空間的XSLT模板:

http://radio-weblogs.com/0118231/stories/2006/10/03/xslt10PatternMatchingTipsForSourceDocumentsWithNamespaces.html

0

它實際上並不是一個XPath表達式 - 它是一種XSLT模式。模式的語法是表達式語法的一個子集,所以它們是密切相關的,但語義工作方式卻有所不同。特別是,儘管XPath表達式選擇節點,但模式匹配它們(或者不是,視情況而定)。

無論如何,節點匹配模式P | Q,如果它匹配P或Q或兩者,並且節點與X/@ *匹配(如果它是名爲X的元素的屬性),並且基本上解釋了該模式。