У меня есть этот псевдо-XML:XSL скопировать узел, если определенное условие соответствует
<?xml version="1.0" encoding="UTF-8"?>
<comtec version="2010">
<query name="rgh/TestNTV/ABC">
<vars>
<parameter name="ids">1,2,3,4</parameter>
</vars>
<err/>
<Results>
<record id="1">
<column name="id_task">1</column>
<column name="capabilityCode">FR1</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
<record id="2">
<column name="id_task">1</column>
<column name="capabilityCode">FR2</column>
<column name="ColMiss"/>
<column name="ColHave">notmiss</column>
</record>
<record id="3">
<column name="id_task">2</column>
<column name="capabilityCode">D2</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
<record id="4">
<column name="id_task">2</column>
<column name="capabilityCode">F3</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
<record id="5">
<column name="id_task">3</column>
<column name="capabilityCode">SD21</column>
<column name="ColMiss"/>
<column name="ColHave">notmiss</column>
</record>
<record id="6">
<column name="id_task">4</column>
<column name="capabilityCode">XXX</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
</Results>
</query>
</comtec>
Желаемый результат:
<Results>
<record id="1">
<column name="id_task">1</column>
<column name="capabilityCode">FR1</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
<record id="2">
<column name="id_task">1</column>
<column name="capabilityCode">FR2</column>
<column name="ColMiss"/>
<column name="ColHave">notmiss</column>
</record>
<record id="3">
<column name="id_task">2</column>
<column name="capabilityCode">D2</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
<record id="4">
<column name="id_task">2</column>
<column name="capabilityCode">F3</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
<record id="6">
<column name="id_task">4</column>
<column name="capabilityCode">XXX</column>
<column name="ColMiss">miss</column>
<column name="ColHave"/>
</record>
</Results>
В основном я хочу, чтобы скопировать все «записи» тег для каждого идентификатора, который имеет «ColMiss» NOT NULL или комбинацию («ColMiss» не null и «ColHave» не равно null). Точнее, если моя id_task перезаписывается (как в примере), и у нее есть 2 записи, один с «ColMiss» не является нулевым, а другая запись с CollMiss null, но с ColHave not null я хочу скопировать обе «записи» для информации. If У меня есть задача, которая имеет только «ColMiss» не null, тогда я хочу скопировать все записи этого . Если у меня есть задача, которая имеет только «ColHave» null, то я не хочу эту информацию.
Иными словами , если идентификатор имеет «пропущен», то скопируйте все записи для этого идентификатора, если у ID нет «пропустить», а затем не копировать.
Кто-то сказал мне, что это должно быть сделано с переменными? Спасибо, много для вашей помощи
ОБНОВЛЕНИЕ; Текущий XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<comtec>
<xsl:for-each select="//record">
<xsl:variable name="var_id2">
<xsl:value-of select="column[@name='ColMiss']"/>
</xsl:variable>
<xsl:variable name="var_id3">
<xsl:value-of select="column[@name='ColHave']"/>
</xsl:variable>
<xsl:if test="($var_id2 !='') ">
<xsl:variable name="var_id">
<xsl:value-of select="column[@name='id_task']"/>
</xsl:variable>
<record>
<xsl:copy-of select="node()"/>
</record>
</xsl:if>
</xsl:for-each>
</comtec>
</xsl:template>
</xsl:stylesheet>
Это выбирает все записи (но без атрибута «ID», который мне нужно), но не копировать все записи для id_task = 1, в моем примере, очевидно, почему, но я не знайте, как идти отсюда, чтобы сделать ожидаемый результат.
спасибо, я буду изучать вашу ссылку, чтобы понять! – user3529643