Начальная точка является XML-список, какСортировка списка и устранение дубликатов в XSLT?
<attributes>
<para role="tocmain1"/>
<para role="tocmain1"/>
<other style="fix"/>
<other style="fix"/>
<para role="tocmain2"/>
<para role="tocmain2"/>
<para role="tocmain2"/>
<para role="tocmain3"/>
<para role="tocmain3"/>
<para language="de"/>
<para language="de"/>
<para role="tocmain3"/>
</attributes>
Я хотел бы, чтобы уменьшить число вхождений каждого элемента + атрибут + экземпляр значения только в одном случае.
Как это:
<attributes>
<other style="fix"/>
<para language="de"/>
<para role="tocmain1"/>
<para role="tocmain2"/>
<para role="tocmain3"/>
</attributes>`
До сих пор я только удалось упорядочить список по алфавиту. До сих пор все мои попытки сократить список были тщетными.
Это то, что я прямо сейчас:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<attributes>
<xsl:for-each select="attributes/node()">
<xsl:sort select="name()" order="ascending"/>
<xsl:sort select="@*" order="ascending"/>
<xsl:choose>
<xsl:when test="name() = name(preceding::*[1]) and self::node()/@* = preceding::*/@*"/>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</attributes>
</xsl:template>
</xsl:stylesheet>
Я должен был явно указать, что список отличается по элементам, атрибутам и значениям. Я отредактировал свой список на этом посту. Все ваши попытки, которые используют @role, не будут работать. Вот почему я попытался использовать */@ *. Мне нужно удалить дубликаты на основе того же элемента + тот же атрибут + одно и то же значение. – rena