Как удалить узлы из XML, если атрибут соответствует значению в другом файле? - PullRequest
0 голосов
/ 20 ноября 2018

Предположим, у меня есть xml-файл, подобный приведенному ниже:

<client name="Mary" id="123"/>
<client name="Anthony" id="456"/>
<client name="Theo" id="789"/>

Я хочу удалить все узлы с идентификатором, равным одному из значений, из другого файла.Этот другой файл представляет собой простой текстовый файл, но его можно изменить на xml, если он облегчает решение.

List_Of_Ids.txt:
123
789

Мне нужен конечный результат:

<client name="Anthony" id="456"/>

Рассмотримтакже, что список клиентов xml и список идентификаторов содержат сотни записей.

Я хочу сделать что-то вроде следующего:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
<xsl:param name="ids-to-delete" select="123, 789"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="client[id = $ids-to-delete]"/>
</xsl:stylesheet>

Но вместо перечисления всех идентификаторов для удаленияЯ хочу, чтобы они были прочитаны из List_Of_Ids.txt.

Может ли добрая душа помочь мне с этим?

1 Ответ

0 голосов
/ 20 ноября 2018

Использование <xsl:param name="ids-to-delete" select="unparsed-text-lines('List_Of_Ids.txt')"/>, см. https://www.w3.org/TR/xpath-functions/#func-unparsed-text-lines.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...