• 締切済み

XSLTについて

入力となるXMLの要素Aに属性が複数存在した場合に、ある属性以外のすべての属性を要素Bに付与して出力したいのですがどのようなXSLTで記述すればいいのでしょうか? 入力例) <sample> <要素 aa="1" bb="2" cc="3">AAAAAAA</要素> </sample> 出力例) <sample> <youso bb="2">AAAAA</youso> </sample> XSLT) <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/ 1999/XSL/Transform" version="1.0"> <xsl:template match="/">   <sample> <xsl:apply-templates/> </sample> </xsl:template> <xsl:template match="要素"> <xsl:copy> <!-- <xsl:copy-of select="@*"/> -->☆ </xsl:copy> </xsl:template> </xsl:stylesheet>

みんなの回答

回答No.1

XMLEDITOR.NETで検証(つまり.NET FrameworkのXSLTプロセッサ) スタイルシート: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <sample> <xsl:apply-templates/> </sample> </xsl:template> <xsl:template match="要素"> <xsl:element name="youso"> <xsl:copy-of select="@*[local-name() != 'aa']|*|text()|comment()|processing-instruction()"/> </xsl:element> </xsl:template> </xsl:stylesheet> 出力結果 <?xml version="1.0" encoding="utf-8"?> <sample> <youso bb="2" cc="3">AAAAAAA</youso> </sample> ただし,local-nameが'aa'であるかどうかチェックしただけなので あらゆる名前空間のaa属性が出力されません。そこはnamespace-uri()でも使って調整してください #この前の質問はいい加減なこと言ってごめんなさい。 #今回は多分大丈夫だと思う。

関連するQ&A