У меня есть XML ниже.XSL - копировать элемент с атрибутом и исключать отдельные дочерние элементы
<rootElement rootAttribute1="value1" rootAttribute2="value2">
<childElement childElementAttribute="value">
<grandChild>First</grandChild>
</childElement>
<childElement childElementAttribute="copyMe">
<grandChild>Second</grandChild>
</childElement>
<childElement childElementAttribute="value">
<grandChild>Third</grandChild>
</childElement>
</rootElement>
И мне нужно обработать его с помощью XSL, применяя следующие reules: 1. RootElement элемент должен быть скопирован со всеми его атрибуты 2. RootElement элемент, который только что был скопирован, должен содержать только те элементы, которые имеют childElement childElementAttribute = "copyMe" (строка для сравнения «copyMe» только в этом случае, но она генерируется динамически) (со всеми их атрибутами). «copyMe» здесь только конкретное значение, но Таким образом, описанный в примере выше, должны быть преобразованы в следующий один
<rootElement rootAttribute1="value1" rootAttribute2="value2">
<childElement childElementAttribute="copyMe">
<grandChild>Second</grandChild>
</childElement>
</rootElement>
Вот XSL я попытался
<!-- Copy rootElement element-->
<xsl:template match="node()|@*" mode="copyAndExclude">
<xsl:param name="requiredAttrivuteValue"/>
<xsl:if test="childElement[@childElementAttribute=$requiredAttrivuteValue]" >
<xsl:copy>
<xsl:apply-templates select="node()|@*" mode="excludeUnnecessaryChilds" />
</xsl:copy>
</xsl:if>
</xsl:template>
<!-- exclude unnecessary child elements-->
<xsl:template match="node()|@*" mode="excludeUnnecessaryChilds">
<xsl:copy>
<xsl:apply-templates select="node()|@*" mode="excludeUnnecessaryChilds" />
</xsl:copy>
</xsl:template>
<xsl:template match="/">
....
<xsl:apply-templates select="rootElement" mode="copyAndExclude" >
<xsl:with-param name="requiredAttrivuteValue" select="$someValue"/>
</xsl:apply-templates>
<xsl:template>
Here someValue is generated dinamically and depends on few things, that are not significant here
Спасибо заранее!
Пожалуйста, пост XSLT вы уже пробовали , Благодарю. – potame