アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力となる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>

A 回答 (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()でも使って調整してください

#この前の質問はいい加減なこと言ってごめんなさい。
#今回は多分大丈夫だと思う。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!