Высота оглавления: определение максимальной глубины узла - PullRequest
0 голосов
/ 29 апреля 2011

Высота глав и разделов может быть рассчитана отдельно.Используйте только подходящие шаблоны.Это входное значение:

<?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 узла

1 Ответ

1 голос
/ 29 апреля 2011

Если вы хотите вычислить максимальную глубину узла section, вы можете использовать следующий 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>

, который, учитывая приведенный пример XML, даст следующий вывод:

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