我在下面有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的元素,這是剛纔複製,應該包含有childElementAttribute僅是childElement元素=「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