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'>
<!DOCTYPE html>

</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"/>