Как проверить наличие нескольких атрибутов в XPath?

Я хотел бы выбрать таблицы стилей в документе XHTML, которые содержат не только описание, но и href.

<link rel="stylesheet" href="123"/> 

должен быть выбран, и

<link rel="stylesheet"/>  

не должно.

В настоящее время, я делаю это так:

foreach (XmlNode n in xml.SelectNodes(@"//link[@rel='stylesheet']"))
{
    if (n.Attributes["href"]==null||n.Attributes[""].Value==null)
    {
        continue;
    }
    var l = Web.RelativeUrlToAbsoluteUrl(stuffLocation, n.Attributes["href"].Value);
}

но я подозреваю, что есть гораздо лучший способ сделать это. Есть?

1 ответов


добавить and @href для выражения атрибутов:

//link[@rel='stylesheet' and @href]

Это должно позволить вам отказаться от проверки:

foreach (XmlNode n in xml.SelectNodes(@"//link[@rel='stylesheet' and @href]"))
{
    var l = Web.RelativeUrlToAbsoluteUrl(stuffLocation, n.Attributes["href"].Value);
}