Как передать атрибуты дочерним элементам, только если дочерние элементы уже не имеют того же атрибута?XSL передает атрибуты дочерним элементам, если дочерние элементы уже не имеют одного и того же атрибута
XML:
<section>
<container attribute1="container1" attribute2="container2">
<p attribute1="test3"/>
<ol attribute2="test4"/>
<container>
<section/>
Вывод должен выглядеть следующим образом:
<section>
<p attribute1="test3" attribute2="test2"/>
<ol attribute1="container1" attribute2="test4"/>
</section>
Это то, что я пробовал:
<xsl:template match="container">
<xsl:apply-templates mode="passAttributeToChild"/>
</xsl:template>
<xsl:template match="*" mode="passAttributeToChildren">
<xsl:element name="{name()}">
<xsl:for-each select="@*">
<xsl:choose>
<xsl:when test="name() = name(../@*)"/>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:apply-templates select="*|text()"/>
</xsl:element>
</xsl:template>
Любая помощь будет принята с благодарностью;) Спасибо заранее!
Должно работать, но решение Tomalak было проще применить к моей таблице стилей. В любом случае, спасибо. – user2652424