2016-03-01 86 views
0

我這一脈的XML文件:檢查節點有多少個子

<manual> 
    <chapter> 
     <section /> 
     <section /> 
     <section /> 
    </chapter> 
    <chapter> 
     <section> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
      <section /> 
     </section> 
     <section /> 
     <section /> 
    </chapter> 
</manual> 

,而我處理<manual>節點,我想找出是否有是有超過一<section>節點9個孩子。

我的最初的方法是這樣的:

if test="//section[count(child::section &gt; 9)]" 

即不起作用,因爲計數的輸出()是一個整數和部分[]期望一個節點集。
類似於count(// section/section)的東西將不起作用,因爲這將計算所有部分,而不僅僅是一組兄弟。

有沒有辦法做到這一點?

回答

2

我想你想//section[count(section) > 9],比較運算符不屬於count函數調用,因爲你有它。

0

可以使用計數(./部)+計數(./部/部分)來查找部分的總計數,下面對於瞭解部的節點和計數的位置代碼

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/"> 
<xsl:for-each select="/manual/chapter"> 
<xsl:if test="count(./section) + count(./section/section) > 9"> 
<xsl:value-of select="position()"/>,<xsl:value-of select="count(./section)  + count(./section/section) "/> 
</xsl:if> 
</xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 
+0

這給出的總計數。對其他應用程序很有用,但我一直在尋找'一個有9個以上孩子的節點'。 – Hobbes