2010-10-08 2 views
4

У меня есть этот XPATH запрос:Xpath для выбора прокомментировал код

descendant-or-self::link 

и этот HTML код:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
<link rel="stylesheet" type="text/css" href="css/elements.css"> 
<title>Page</title> 
<!--[if lte IE 6]> 
<link rel="stylesheet" type="text/css" href="css/ie6.css" /> 
<![endif]--> 
</head> 
etc... 

Что мне нужно добавить в этот запрос, чтобы сделать это также соответствовать комментируемого <link> ,

Это продолжение этого вопроса: PHP DomDocument alter conditional comments

ответ

3

Используйте оператор союзное "|":

потомок или-я :: ссылка |/*/комментарий()

Это будет возвращать текст комментария, который не может использоваться для дальнейшего анализа, даже если он содержит разметку. Это просто строка, поэтому вам придется рассматривать ее как одну.

4

В XPath 1.0, с правильным XHTML:

/xhtml:html/xhtml:head/xhtml:link| 
/xhtml:html/xhtml:head/comment()[contains(.,'link')] 

с поставщиком DOM, что он не обрабатывает пространств имен:

/html/head/link| 
/html/head/comment()[contains(.,'link')] 

также:

/html/head/node()[self::link or self::comment()[contains(.,'link')]] 
+0

Ок, буду я быть в состоянии рассматривать его как обычный узел или он просто возвращает текстовое значение? –

+0

@Franky Chanyau: Он возвращает два элемента 'link' и один узел комментариев. Затем вы можете манипулировать значением строки комментария. – 2010-10-09 19:40:11

Смежные вопросы