Мне нужно удалить и идентифицировать столбец с одинаковыми значениями. Значение XML выглядит примерно так:
<PRODTABLE>
<PRODTR>
<PRODTD>H1</PRODTD>
<PRODTD>H2</PRODTD>
<PRODTD>H3</PRODTD>
<PRODTD>Headline 6</PRODTD>
<PRODTD blacklist="1">Head 7</PRODTD>
<PRODTD>Head 8</PRODTD>
<PRODTD blacklist="1">Test</PRODTD>
</PRODTR>
<PRODTR>
<PRODTD>7.5</PRODTD>
<PRODTD>95mm</PRODTD>
<PRODTD>WHATEVERTEXT</PRODTD>
<PRODTD>Lorem</PRODTD>
<PRODTD blacklist="1">Foobar</PRODTD>
<PRODTD>TEST</PRODTD>
<PRODTD blacklist="1">011601100</PRODTD>
</PRODTR>
<PRODTR>
<PRODTD>9</PRODTD>
<PRODTD>92mm</PRODTD>
<PRODTD>WHATEVERTEXT</PRODTD>
<PRODTD>Lorem</PRODTD>
<PRODTD blacklist="1">Foobar</PRODTD>
<PRODTD>TEST</PRODTD>
<PRODTD blacklist="1">021063100</PRODTD>
</PRODTR>
</PRODTABLE>
После запуска через мою таблицу стилей должно получиться следующее:
<PRODTABLE>
<PRODTR>
<PRODTD>H1</PRODTD>
<PRODTD>H2</PRODTD>
<PRODTD blacklist="1">Head 7</PRODTD>
<PRODTD blacklist="1">Test</PRODTD>
</PRODTR>
<PRODTR>
<PRODTD>7.5</PRODTD>
<PRODTD>95mm</PRODTD>
<PRODTD blacklist="1">Foobar</PRODTD>
<PRODTD blacklist="1">011601100</PRODTD>
</PRODTR>
<PRODTR>
<PRODTD>9</PRODTD>
<PRODTD>92mm</PRODTD>
<PRODTD blacklist="1">Foobar</PRODTD>
<PRODTD blacklist="1">021063100</PRODTD>
</PRODTR>
</PRODTABLE>
Таким образом, все равные ячейки в столбце удаляются. (см. WHATEVERTEXT
, Lorem
, TEST
от источника XML). Мне уже удалось исключить столбцы, занесенные в черный список. Столбцы из черного списка должны (даже если они могут быть равны) игнорироваться.
Это мой пустой шаблон для сопоставления со всеми дубликатами и просто ничего с ним не делать.
<xsl:template match="PRODTD[ not(
for $c in count(preceding-sibling::PRODTD)+1 return
../../PRODTR/PRODTD[$c][. = //*/PRODTR[2]/PRODTD[$c]]) and
@blacklist != 1]"/>
Это печатает результат для всех оставшихся или занесенных в черный список ячеек.
<xsl:template match="PRODTD[
for $c in count(preceding-sibling::PRODTD)+1 return
../../PRODTR/PRODTD[$c][. = //*/PRODTR[2]/PRODTD[$c]] or
@blacklist = 1]">
[...]
</xsl:template>
Мой текущий текущий результат распечатывает только занесенные в черный список столбцы.
Я уже использовал это решение xslt удалить столбец таблицы, когда все указано c значение , но ему не удалось настроить его так, чтобы он соответствовал всем другим записям столбцов вместо '-'.
Подсказка: до и после этой таблицы PRODTABLE
может содержать больше XML элементов.