xml-node をコピーするときに、すべての属性をコピーして同じ値に設定するにはどうすればよいですか?
xml が与えられた場合:
<schedule>
<owner>
<name>
<first>Eric</first>
</name>
</owner>
<appointment>
<when>
<date month="03" day="15" year="2001"/>
</when>
<subject>Interview potential new hire</subject>
</appointment>
</schedule>
変換後に取得したいもの:
<schedule>
<owner>
<name>
<first>?</first>
</name>
</owner>
<appointment>
<when>
<date month="?" day="?" year="?"/>
</when>
<subject>?</subject>
</appointment>
</schedule>
それが私が管理したものです:
<xsl:template match="*|@*">
<xsl:copy>
<xsl:if test="node() and not(*)">
<xsl:text>?</xsl:text>
</xsl:if>
<xsl:if test="not(node())">
<xsl:attribute name="???">?</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="*|@*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
これらは機能しません:
<xsl:attribute name="name(.)">?</xsl:attribute>
<xsl:attribute name="@*">?</xsl:attribute>
<xsl:attribute name="*">?</xsl:attribute>
<xsl:attribute name=".">?</xsl:attribute>
<xsl:if test="not(node())">
<xsl:text>?</xsl:text>
</xsl:if>
<xsl:if test="not(node())">
?
</xsl:if>
属性名は常に静的な値を期待していますか? xslt に回避策はありますか?