XSL повторяет одно и то же значение, но считает правильное количество различных значений

Это мой первый пост. Извините, если это немного небрежно. Поэтому я составляю список из файла WFB.xml. В нем много информации обо всех странах мира. Я пытаюсь получить название каждой страны и распечатать его в своем теге h2. Тем не менее, он печатает первое ИМЯ в списке, пока все места не будут отсортированы.

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>

<xsl:variable name="config"
    select="document('fb_config.xml')"/>
<xsl:variable name="wfb"
    select="document('world_factbook_2008.xml')"/>

<xsl:template match="/">
    <xsl:text disable-output-escaping='yes'>
    &lt;!DOCTYPE html&gt;&#xA;
    </xsl:text>
    <html>
    <head>
        <title>
        <xsl:text>CIA World Factbook</xsl:text>
        </title>
    </head>
    <body>
        <xsl:variable name="wfbYear"
            select="$wfb/WFB/@YEAR"/>

        <h1>
            <xsl:value-of select="concat('CIA World ', $wfbYear, ' Factbook')" />
            <xsl:text></xsl:text>
        </h1>


        <xsl:if test="$config/config/order/@output = 'asc'">
<!-- DIV TEST -->   <xsl:apply-templates select="$wfb/WFB/PLACE" >
                <xsl:sort order="ascending"/>
            </xsl:apply-templates>
        </xsl:if>
        <xsl:if test="$config/config/order/@output = 'dec'">
<!-- DIV TEST -->   <xsl:apply-templates select="$wfb/WFB/PLACE" >
                <xsl:sort order="descending"/>
            </xsl:apply-templates>
        </xsl:if>

    </body>
    </html>
</xsl:template>

<xsl:template match="PLACE">
        <div style="border:1px solid black;">
            <h2>
                <xsl:apply-templates select="$wfb/WFB/PLACE/NAME"/>
            </h2>
        </div>
</xsl:template>
<xsl:template match="NAME">
    <xsl:value-of select="current()"/>
</xsl:template>

</xsl:stylesheet>

В настоящее время этот код печатает Adelie Land снова и снова. Это первое имя в файле XML.

Я думаю, что моя ошибка в:

<xsl:template match="PLACE">
        <div style="border:1px solid black;">
            <h2>
                <xsl:apply-templates select="$wfb/WFB/PLACE/NAME"/>
            </h2>
        </div>
</xsl:template>

Если я извлекаю шаблон, соответствующий ИМЯ, то это выводит все Имена в одну строку и делает это до тех пор, пока все МЕСТА не будет отсортирована.

Любые советы или предложения?

Вот как выглядит страница XML:

<WFB YEAR="2008">
  <PLACE ID="Adelie_Land" PART_OF="French_Southern_and_Antarctic_Lands">
    <NAME>Adelie Land</NAME>

Есть много тегов, прежде чем

1 ответ

Решение

Я предполагаю, что вы хотите изменить:

 <xsl:apply-templates select="$wfb/WFB/PLACE/NAME"/>

к;

 <xsl:apply-templates select="NAME"/>

или просто:

<xsl:value-of select="NAME"/>
Другие вопросы по тегам