вот мой ниже xml под этой таблицей, основанный на CTD_CTD_PKG_ID (некоторое время под таблицей CTD_CTD_PKG_ID id был одним и тем же, означает, что нам нужно взять данные из обеих таблиц) этот идентификатор пакета нам нужно создать текстовый файл с помощью таблицы стилей xsl но как написать логический код в xslt
для некоторых полей данные были одинаковыми для этого типа записей, для меня не хочу повторяться еще раз только один раз, когда мне нужно, но как контролировать, если я получаю две записи CTD_LANG_ID, которые должны отображаться один раз, но я написал xslt, я думал это было не правильно, мы потерпим неудачу, когда у нас будет XML с еще одной таблицей с другим идентификатором пакета (CTD_CTD_PKG_ID), в то время идентификатор lang может отличаться от E, но этот xslt показывал E сам ...
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<RECORD_TYPE_CODE>CTD</RECORD_TYPE_CODE>
<MSG_TYPE_CODE>O102</MSG_TYPE_CODE>
<CTD_SEQ_NUM>089938</CTD_SEQ_NUM>
<CTD_CTD_PKG_ID>345</CTD_CTD_PKG_ID>
<CTD_LANG_ID>E</CTD_LANG_ID>
</Table>
<Table>
<RECORD_TYPE_CODE>ITD</RECORD_TYPE_CODE>
<MSG_TYPE_CODE>O103</MSG_TYPE_CODE>
<CTD_SEQ_NUM>089939</CTD_SEQ_NUM>
<CTD_CTD_PKG_ID>345</CTD_CTD_PKG_ID>
<CTD_LANG_ID>E</CTD_LANG_ID>
</Table>
</NewDataSet>
Я написал свою собственную XSLT-логику, но она не работает
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="text" indent="no" omit-xml-declaration="yes" />
<xsl:param name="PackageId" />
<xsl:template match="/">
<xsl:apply-templates select="NewDataSet/Table[CTD_CTD_PKG_ID ='345']"/>
</xsl:template>
<xsl:template match="NewDataSet/Table[CTD_CTD_PKG_ID ='345']">
<xsl:value-of select= "concat(':25:',./TRAN_TYPE_CODE)"/>,<xsl:text/>
<xsl:if test ="./RECORD_TYPE_CODE" >
<xsl:if test=" position() > 1"></xsl:if>
<xsl:text/><xsl:value-of select= "concat(':20:',./RECORD_TYPE_CODE)"/>,<xsl:text/>
</xsl:if>
<xsl:if test ="./MSG_TYPE_CODE" >
<xsl:if test=" position() > 1"></xsl:if>
<xsl:text/><xsl:value-of select= "concat(':21:',./MSG_TYPE_CODE)"/>,<xsl:text/>
</xsl:if>
<xsl:if test ="./CTD_SEQ_NUM" >
<xsl:if test=" position() > 1"></xsl:if>
<xsl:text/><xsl:value-of select= "concat(':22:',./CTD_SEQ_NUM)"/>,<xsl:text/>
</xsl:if>
</xsl:template>
Ожидаемый результат
: 25: Е,: 20: КТР,: 21: O102N,: 22: 089938,: 20: ИТД,: 21: O103N,: 22: 089939,