Проверка xpath, если у узла нет определенных потомков - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть такой HTML-файл:

 <tr>
   <td class= 'iconmenu' width="100%">...</td>
 </tr>
 <tr>
   <td class= 'iconmenu' width="100%">...</td>
   <td class= 'iconmenu'>...</td>
</tr>

У первого элемента есть один дочерний элемент, а у второго два дочерних, вопрос:

Как проверить, если первыйэлемент имеет одного ребенка?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2011

Подсчет количества дочерних элементов первого tr:

count(/*/tr[1]/*)

Подсчет только td потомков:

count(/*/tr[1]/td)

Выполните сравнение следующим образом:

<xsl:if test="count(/*/tr[1]/td)=1">

Обратите внимание на использование абсолютного пути (начиная с /).У вас может возникнуть соблазн сделать count(//tr[1]/td).Обратите внимание, что при этом возвращается число all tds по каждой строке , которая является первой строкой в ​​каждой таблице в документе.

0 голосов
/ 12 октября 2012
<xsl:for-each select="tr">
  <xsl:variable name="count" select="count(td)"/>
  </xsl:for-each>
</xsl:template>
0 голосов
/ 06 декабря 2011
let $s := <test><table>
<tr>
   <td class= "iconmenu" width="100%">...</td>
 </tr>
 <tr>
   <td class="iconmenu" width="100%">...</td>
   <td class="iconmenu">...</td>
</tr>
</table></test>


return fn:count($s//table/tr[1]/td)

Пожалуйста, укажите: http://www.xqueryfunctions.com/xq/c0015.html#c0016

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