私のような構造を有する私のXMLドキュメント、上のいくつかの本当に単純にXSLTを行うために探しています:シンプルなXSLT属性追加
<XML>
<TAG1 attribute1="A">
<IRRELEVANT />
<TAG2 attribute2="B" attribute3="34" />
</TAG1>
</XML>
そして、次の処理を行いXSLT作るしようとしています:
を- コピーすべて
- TAG2する@ attribute1の= "A" AND TAG2する@ attribute2の= "B" とNO TAG2する@ attribute4はありませんが、その後、TAG2への@ attribute4を追加し、TAG2する@ attribute3の値になるように、その値を持っている場合
私の試行に失敗しました。私が得ているエラーは、 "xsl:attribute:子要素が要素に既に追加されている場合、要素に属性を追加できません。"
ありがとうございました!
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="newDocumentHeader" />
<!-- copy idiom copying ALL nodes -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<!-- override for special case -->
<xsl:template match="TAG1[@attribute1='A']/TAG2[@attribute2='B'][not(@attribute4)]">
<xsl:attribute name="attribute4">
<xsl:value-of select="@attribute3" />
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
おかげで、本当に明らかに! – skelly