До сих пор я был в состоянии вернуть коллекцию комментариев, которые содержат эти теги с: //comment()[contains(.,'link') or
contains(.,'script')]
, но на данный момент я не уверен, как извлечь сами фактические теги как узлы сАтрибуты.
Это невозможно сделать, потому что во время оценки выражения XPath в комментарии нет узлов - только строка.
Что можно сделать, это получитьхотел строк .
Например, результат вычисления этого выражения XPath, когда узел контекста является одним из двух комментариев :
"substring-before(substring-after(., '>'),
'<![endif]'
)
, соответственно: :
<link rel="stylesheet" href="/layout/css/IE7.css" />
<link rel="stylesheet" href="/layout/css/IE9.css" />
верификация на основе XSLT :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="comment()">
<xsl:value-of select=
"substring-before(substring-after(., '>'),
'<![endif]'
)"/>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование применяется к предоставленному документу XML :
<head>
<!--[if IE 7]>
<link rel="stylesheet" href="/layout/css/IE7.css" />
<![endif]-->
<!--[if IE 9]>
<link rel="stylesheet" href="/layout/css/IE9.css" />
<![endif]-->
</head>
выражение XPath оценивается на каждом узле комментария и выводится результат этой оценки:
<link rel="stylesheet" href="/layout/css/IE7.css" />
<link rel="stylesheet" href="/layout/css/IE9.css" />