Valdi_Bo дал ответ на ваш вопрос, но если вы заинтересованы в расширении своих знаний по XSLT, вам может быть интересно узнать, можно ли значительно упростить свой XSLT с помощью Identity Template
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
Это будет обрабатывать копирование любых элементов, которые вы не хотите изменять, так что вам нужно беспокоиться только о написании шаблонов для необходимых вам изменений
Итак, чтобы удалить элементы pi:AI
иметь шаблон для игнорирования их
<xsl:template match="pi:AI" />
Для обновления pi:SD
, где pi:C
- это "402F" или "402B", иметь шаблон, соответствующий этим элементам, и просто обновлять конкретные
<xsl:template match="pi:ED[pi:C='402F' or pi:C='402B']/pi:SD">
<xsl:copy>
<xsl:value-of select="../../pi:AI/pi:IRS" />
</xsl:copy>
</xsl:template>
Попробуйте это XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:pi="urn:com.workday/picof"
version="2.0">
<xsl:output method="xml" html-version="5"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="pi:AI" />
<xsl:template match="pi:ED[pi:C='402F' or pi:C='402B']/pi:SD">
<xsl:copy>
<xsl:value-of select="../../pi:AI/pi:IRS" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Обратите внимание: поскольку вы используете XSLT 2.0, вы можете написать второе совпадение шаблона следующим образом ...
<xsl:template match="pi:ED[pi:C = ('402F', '402B')]/pi:SD">