я пытаюсь скопировать все узлы только один раз из документа, используя этот код:исключающих узлов на основе трех атрибутов
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()[not(@id = preceding-sibling::node()/@id and @version = preceding-sibling::node()/@version and @lang = preceding-sibling::node()/@lang)]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Однако этот код делает каждый узел() с тем же идентификатором копироваться только один раз, независимо от того, имеют ли они один и тот же язык и версию или нет.
поэтому, если узел с id = "2" version = "2" и lang = "en" находится над узлом с id = "2" version = "1" и lang = "en", это узел с версией 1 не копируется.
Почему оценивается только одно условие?
Можете ли вы изменить свой вопрос, чтобы показать образец своего XML, и результат, который вы ожидаете в этом случае? Спасибо! –