Вы можете использовать функцию start-with
в своем шаблоне.
<xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG">
<xsl:if test="starts-with(normalize-space(), 'ABC')">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:value-of select="substring(normalize-space(), 1, 19)"/>
</xsl:copy>
</xsl:if>
</xsl:template>
В качестве альтернативы, добавьте второй шаблон, чтобы игнорировать FLAG
элементы, которые не начинаются с "ABC"
<xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG[not(starts-with(normalize-space(), 'ABC'))]" priority="2" />
<xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:value-of select="substring(normalize-space(), 1, 19)"/>
</xsl:copy>
</xsl:template>
Обратите внимание, что приоритет необходим, чтобы избежать конфликтов шаблонов, когда два шаблона соответствуют одному и тому же элементу с одинаковым приоритетом.
РЕДАКТИРОВАТЬ: Я думаю, что я мог неправильно понять вопрос.Если вы не хотите импортировать элемент Record
, где FLAG
не начинается с "ABC", попробуйте этот XSLT
<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="ZBE14_OEMs_ItemUpdate_OUT/Record[not(starts-with(normalize-space(ItemMaster/FLAG), 'ABC'))]" />
<xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:value-of select="substring(normalize-space(), 1, 19)"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>