| <xsl:element> | |
| 出力ドキュメントで要素を作成できます。<xsl:attribute> 要素と同じように機能します。 | |
| カテゴリ | |
|
命令 |
|
| 必須の属性 | |
|
|
| 省略可能な属性 | |
|
|
| コンテンツ | |
|
XSLT テンプレート。 |
|
| 指定先 | |
|
<xsl:element> テンプレート内に指定します。 |
|
| 定義先 | |
|
XSLT 7.1.2 節「Creating Elements with xsl:element」 |
|
| 例 | |
|
入力ドキュメントを結果ツリーにコピーする汎用のスタイルシートを使用します。ただし、元のドキュメント内のすべての属性は、結果ツリーで子要素に変換されます。新しい要素の名前はフォーマット属性の名前となり、そのテキストは属性の値となります。XML ソースドキュメントを処理するまで属性の名前はわからないため、<xsl:element> 要素を使用して結果ツリーを作成する必要があります。スタイルシートは以下のとおりです。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:for-each select="@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
<xsl:apply-templates select="*|text()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
このスタイルシートでは、2 つの <xsl:element> 要素を使用しています。最初の要素は、元の要素と同じ名前の新しい要素を作成するためのものであり、2 つ目の要素は各属性と同じ名前の新しい要素を作成するためのものです。このドキュメントにスタイルシートを適用します。
<?xml version="1.0"?>
<report>
<title>Miles Flown in 2001</title>
<month sequence="01">
<miles-flown>12379</miles-flown>
<miles-earned>35215</miles-earned>
</month>
<month sequence="02">
<miles-flown>32857</miles-flown>
<miles-earned>92731</miles-earned>
</month>
<month sequence="03">
<miles-flown>19920</miles-flown>
<miles-earned>76725</miles-earned>
</month>
<month sequence="04">
<miles-flown>18903</miles-flown>
<miles-earned>31781</miles-earned>
</month>
</report>
結果は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<report>
<title>Miles Flown in 2001</title>
<month><sequence>01</sequence>
<miles-flown>12379</miles-flown>
<miles-earned>35215</miles-earned>
</month>
<month><sequence>02</sequence>
<miles-flown>32857</miles-flown>
<miles-earned>92731</miles-earned>
</month>
<month><sequence>03</sequence>
<miles-flown>19920</miles-flown>
<miles-earned>76725</miles-earned>
</month>
<month><sequence>04</sequence>
<miles-flown>18903</miles-flown>
<miles-earned>31781</miles-earned>
</month>
</report>
<xsl:element> 要素により、出力ドキュメントですべての要素が作成されます。これには、元のドキュメントの sequence 属性により作成された <sequence> 要素も含まれます。 |
|