Не могли бы вы помочь с решением ниже.
Исходные файлы иногда пропускают отсутствующий сегмент отверстия (, который имеет дочерний элемент 'count' с номером 3 ). В этом случае мне нужно отобразить весь отсутствующий сегмент узла и добавить некоторые конкретные значения.
Пожалуйста, смотрите правильный исходный XML-файл ниже, который имеет все сегменты 'узла'.
<?xml version="1.0" encoding="utf-8"?>
<root>
<group>
<node segment="1">
<count>2</count>
<value>value_2</value>
</node>
<node segment="1">
<count>3</count>
<value>value_3</value>
</node>
<node segment="1">
<count>1</count>
<value>value_1</value>
</node>
</group>
</root>
В приведенном ниже не все сегменты на месте.
<?xml version="1.0" encoding="utf-8"?>
<root>
<group>
<node segment="1">
<count>2</count>
<value>value_2</value>
</node>
<node segment="1">
<count>1</count>
<value>value_1</value>
</node>
</group>
</root>
Mising часть:
<node segment="1">
<count>3</count>
<value>value_3</value>
</node>
Я работал над сценарием xslt ниже, который не дает мне правильных результатов вывода. Пожалуйста, помогите
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="root/group[not(node/count='3')]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<node>
<count><xsl:value-of select="'some_results'"></xsl:value-of></count>
<value><xsl:value-of select="'some_results'"/></value>
</node>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node[not(count='3')]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<count><xsl:value-of select="count"></xsl:value-of></count>
<value><xsl:value-of select="value"/></value>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
Если элемент 'node', у которого есть дочерний элемент 'count' = 3, присутствует - отобразите как есть.
В противном случае вывод будет:
<?xml version="1.0" encoding="utf-8"?>
<root>
<group>
<node segment="1">
<count>2</count>
<value>value_2</value>
</node>
<node segment="1">
<count>some_results</count>
<value>some_results</value>
</node>
<node segment="1">
<count>1</count>
<value>value_1</value>
</node>
</group>
</root>
Спасибо,
Дарий