2011-04-29 93 views
0

章節和節的高度可以分別計算。僅使用匹配模板。 這是輸入:目錄的高度:查找節點的最大深度

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE book SYSTEM "book.dtd"> 
<book title="Definitive XML Schema"> 
    <author first="Priscilla" last="Walmsley"/> 
    <chapter title="A"> 
     <section title="d"/> 
     <section title="g"> 
      <section title="s"/> 
      <section title="t"/> 
     </section> 
     <section title="e"> 
      <section title="f"/> 
     </section> 
    </chapter> 
    <chapter title="B"> 
     <section title="n"/> 
     <section title="c"> 
      <section title="a"/> 
      <section title="m"/> 
     </section> 
    </chapter> 
</book> 

的出放爲:

3 

如果要計算section節點的最大深度是section節點

+1

您是否意味着您想獲得樹的最大深度? – Erica 2011-04-29 06:00:00

+0

@Erica:是的,這是正確的.. – ZAWD 2011-04-29 07:20:29

回答

1

的最大深度,您可以使用以下XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:output method="text"/> 

    <xsl:template match="book"> 
     <xsl:for-each select="//section"> 
      <xsl:sort select="count(ancestor::node())" 
       data-type="number" order="descending"/> 
      <xsl:if test="position() = 1"> 
       <xsl:value-of select="count(ancestor::node()) - 1"/> 
      </xsl:if> 
     </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

w給定示例XML作爲輸入,將產生以下輸出:

3