有人可以帮我解密这个xpath表达式吗?
<xsl:template match="n1:table/@* |
n1:thead/@* |
n1:tfoot/@* |
n1:tbody/@* |
n1:colgroup/@* |
n1:col/@* |
n1:tr/@* |
n1:th/@* |
n1:td/@*">
我相信它在某处:
从n1中选择所有属性:table元素和来自n1的所有属性:thead元素和来自n1:tfoot ...等的所有属性
我真的不确定。
读这篇文章是为了理解xpath: http://www.w3schools.com/xpath/xpath_syntax.asp
小心给我一个提示?
THX。
答案 0 :(得分:2)
你基本上做对了。 |
是XPath'union set运算符:
来自http://www.w3.org/TR/xpath/#node-sets
|
运算符计算联合 它的操作数,必须是节点集
但是在模式中,来自http://www.w3.org/TR/xslt#patterns
在模式中,|指示 备择方案;一个或一个模式 更多|分开的替代品匹配 如果任何一个替代匹配。
因此模板匹配n1
相对于当前上下文节点引用的名称空间中table,thead,tbody等的任何属性。
您还需要使用以下内容来解释源文档中是否存在命名空间:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:n1="uri:something">
有关XSLT模板中名称空间的更多信息:
答案 1 :(得分:0)
它实际上不是XPath表达式 - 它是一个XSLT模式。模式的语法是表达式语法的一个子集,因此它们密切相关,但语义的工作方式却截然不同。特别是,当XPath表达式选择节点时,模式匹配它们(或者不是,视情况而定)。
无论如何,如果节点与P或Q或两者匹配,则节点匹配模式P | Q,并且如果节点是名为X的元素的属性,则节点与X / @ *匹配,这基本上解释了这种模式。 / p>