Я только начал изучать XSLT, и у меня проблемы с игнорированием дублированных элементов.XSLT Игнорировать повторяющиеся элементы
Я искал переполнение стека и видел, как люди задают похожие вопросы. Я попробовал небольшой пример, чтобы увидеть, где я ошибся в своем файле, и смог игнорировать дублированные элементы. Однако проблема для меня, похоже, возникает, когда у меня есть более одного типа элемента.
Для примера:
File1.xml
<?xml-stylesheet type="text/xsl" href="merge2.xsl"?>
<Main>
<Records>
<Record>
<Description>A</Description>
</Record>
<Record>
<Description>A</Description>
</Record>
<Record>
<Description>B</Description>
</Record>
<Record>
<Description>C</Description>
</Record>
</Records>
</Main>
merge2.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<table border="1">
<tr>
<th>Type</th>
<th>Count</th>
</tr>
<xsl:for-each select="Main/Records/Record">
<xsl:if test ="not(preceding-sibling::Record(Description/text() = current()/Description/text()])">
<tr>
<td><xsl:value-of select="Description"/></td>
<td><xsl:value-of select="count(//Record[Description/text()=current()/Description/text()])"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Это прекрасно работает и дает мне желаемых результатов.
Type Count
A 2
B 1
C 1
Однако, если бы я должен был добавить другой элемент Records, он, кажется, обрабатывал два один за другим, например.
<?xml-stylesheet type="text/xsl" href="merge2.xsl"?>
<Main>
<Records>
<Record>
<Description>A</Description>
</Record>
<Record>
<Description>A</Description>
</Record>
<Record>
<Description>B</Description>
</Record>
<Record>
<Description>C</Description>
</Record>
</Records>
<Records>
<Record>
<Description>B</Description>
</Record>
<Record>
<Description>A</Description>
</Record>
<Record>
<Description>C</Description>
</Record>
<Record>
<Description>C</Description>
</Record>
</Records>
</Main>
Это приведет к следующим.
Type Count
A 3
B 2
C 3
B 2
A 3
C 3
Где он, кажется, обрабатывает первый экземпляр записей, а затем переходите к следующему. Есть ли способ сделать это так, чтобы он удалял дубликаты между ними?
Я попытался изменить каждый из них, чтобы пройти через каждый экземпляр записей, и попытался создать для него отдельный шаблон, однако мне все еще кажется, что что-то не хватает, поскольку мне не удалось заставить его работать.
Большое спасибо за помощь.
Привет спасибо за ответ. Вы совершенно правы, не можете поверить, что я пропустил это. Большое спасибо. – user2795778