Понимание некоторого выражения xpath - PullRequest
2 голосов
/ 22 февраля 2011

Может ли кто-нибудь помочь мне расшифровать это выражение 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.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Вы в основном правильно поняли. | - это оператор объединения XPath:

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

Оператор | вычисляет объединение его операнды, которые должны быть наборами узлов

Но в шаблонах от http://www.w3.org/TR/xslt#patterns

В шаблоне | указывает альтернативы; шаблон с одним или больше | отдельные альтернативные совпадения если любой из альтернативных совпадений.

Таким образом, шаблон соответствует любым атрибутам таблицы, thead, tbody и т. Д. В пространстве имен, указанном n1 относительно текущего узла контекста.

Вам также необходимо учитывать наличие пространства имен в исходном документе, используя что-то вроде следующего:

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

Подробнее о пространствах имен в шаблонах XSLT:

http://radio -weblogs.com / 0118231 / рассказы / 2006/10/03 / xslt10PatternMatchingTipsForSourceDocumentsWithNamespaces.html

0 голосов
/ 23 февраля 2011

На самом деле это не выражение XPath - это шаблон XSLT.Синтаксис шаблонов является подмножеством синтаксиса выражений, поэтому они тесно связаны, но семантика работает довольно по-другому.В частности, в то время как выражение XPath выбирает узлы, шаблон соответствует им (или нет, в зависимости от обстоятельств).

В любом случае, узел соответствует шаблону P | Q, если он соответствует либо P, либо Q.или оба, и узел соответствует X / @ *, если он является атрибутом элемента с именем X, и это в основном объясняет этот шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...