次のXMLを検討します。
<root>
<contrib contrib-type="author">
<name>
<last-name>Simpson</last-name>
<first-name>Bart</first-name>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<last-name>Zoidberg</last-name>
<first-name>Dr.</first-name>
</name>
</contrib>
</root>
...これらの要素の内容を変換してこの出力を取得するにはどうすればよいですか?
<Authors contrib-type="author">Bart Simpson</Authors>
<Authors contrib-type="author">Dr. Zoidberg</Authors>
<first-name>
の内容を
の内容と連結しようとして いますが、1つのスペース<last-name>
で区切られています。
また、のサブ要素は必要ありません
Authors
( 可能であれば、、、および要素
<name>
を <first-name>
削除 します)。<last-name>
これは私がこれまでに持っているXSLです(これは機能していません):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<!-- identity rule -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Authors -->
<xsl:template match="contrib[@contrib-type='author']">
<Authors>
<xsl:apply-templates select="@*|node()"/>
<xsl:value-of select = "concat(given-names, surname)" />
</Authors>
</xsl:template>
</xsl:stylesheet>
<contrib>
これまでのところ、要素を
に変換することはできますが <Authors>
、そのサブ要素を連結または削除することはできません。