Я хочу вставить элемент в элемент предка, если условие истинно в элементе-потомке. Как внизу xml я хочу вставить новый элемент «синий» внутри элемента «part», который значение потомок элемента «patternCode» .The элемент должен быть вставлен только если оба элемента «patternCode» имеют такое же значение «синий» Примечание: есть 2 patternCode элементы XML, которые должны быть сопоставленыВставка элемента в узел предка в xslt
<Request >
<Part>
<Lines>
<Entry>
<entity>
<Cover>
<Entry>
<Terms>
<Entry>
<DisplayValue/>
<PatternCode>Blue</PatternCode>
<ValueTypeName>bit</ValueTypeName>
</Entry>
</Terms>
<Pattern>
<Description>white</Description>
<Name>white</Name>
</Pattern>
<PatternCode>Blue</PatternCode>
<PublicID>pc</PublicID>
</Entry>
</Cover>
<Locations>
<!-- other data-->
</Locations>
</entity>
</Entry>
</Lines>
</Part>
</Request>
Ожидаемые результаты
<Request >
<Part>
<Blue> <Blue>
<Lines>
<Entry>
<entity>
<Cover>
<Entry>
<Terms>
<Entry>
<DisplayValue/>
<PatternCode>Blue</PatternCode>
<ValueTypeName>bit</ValueTypeName>
</Entry>
</Terms>
<Pattern>
<Description>white</Description>
<Name>white</Name>
</Pattern>
<PatternCode>Blue</PatternCode>
<PublicID>pc</PublicID>
</Entry>
</Cover>
<Locations>
<!-- other data-->
</Locations>
</entity>
</Entry>
</Lines>
</Part>
</Request>
Что я тi ред
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="Request/Part/Lines/Entry/entity/Cover" >
<xsl:copy>
<xsl:for-each select="Entry">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
<xsl:variable name="x">
<xsl:value-of select="PatternCode"/>
</xsl:variable>
<xsl:for-each select="Terms/Entry">
<xsl:variable name="y">
<xsl:value-of select="PatternCode"/>
</xsl:variable>
<xsl:if test="$x=$y">
<xsl:call-template name="compute" >
<xsl:with-param name="value" select="$y"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template name="compute" >
<xsl:param name="value"/>
<xsl:for-each select="Part">
<xsl:element name="{$value}"></xsl:element>
<xsl:for-each >
</xsl:template>
</xsl:stylesheet>
Не могли бы вы пожалуйста, отправьте XSLT, который вы пробовали. И, пожалуйста, укажите версию XSLT, которую вы используете. –