#xml #xslt
Вопрос:
Допустим, у меня есть список globalId:
4EAED006DCDC
2AE33C272408
C3DE024CAC11
И немного XML с конфигурациями из базы данных моего приложения:
<ConfigKeyValuesTable>
<ConfigKeyValues>
<KeyValue>true</KeyValue>
<CreatedDate>2020-09-04T09:42:57.6685544-05:00</CreatedDate>
<GlobalId>2AE33C272408</GlobalId>
<IsActive>1</IsActive>
<ModifiedDate>2021-09-28T00:38:40.5075315-05:00</ModifiedDate>
</ConfigKeyValues>
<ConfigKeyValues>
<KeyValue>false</KeyValue>
<CreatedDate>2020-09-04T09:42:57.6685544-05:00</CreatedDate>
<GlobalId>8E761269F5AA</GlobalId>
<IsActive>1</IsActive>
<ModifiedDate>2021-09-28T00:38:40.5845906-05:00</ModifiedDate>
</ConfigKeyValues>
</ConfigKeyValuesTable>
Как бы я использовал этот список, чтобы удалить родителя для всех экземпляров, в которых globalId соответствует записи из моего списка? Я видел несколько примеров, которые позволяют удалить родительский атрибут из 1 совпадения, как это:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ConfigKeyValues[GlobalId='2AE33C272408']"/>
</xsl:stylesheet>
Комментарии:
1. Как вы получаете этот список? Это жестко закодировано в вашей трансформации? Передано в качестве параметра? В каком формате?
2. Также, пожалуйста, укажите, какую версию XSLT поддерживает ваш процессор.
3. У меня есть список globalId в файле .txt, разделенный новой строкой.
4. Я бы использовал плагин XML Tools для Np , который позволяет выполнять преобразование XSL. github.com/morbac/xmltools
5. Для меня использование плагина XML Tools в NotePad было скорее головной болью, чем чем-либо еще. Было бы проще для вас загрузить последнюю версию SaxonHE, использовать возможности чтения файлов XSLT3 и готово.