<xsl:element> 要素
指定した名前を持つ出力要素を作成します。
<xsl:element
name = "element-name"
namespace = "uri-reference"
use-attribute-sets = QName
</xsl:element>
属性
name
必ず指定します。 作成する要素の名前。 この値が 修飾名 (XSLT) である場合、要素ノードは、namespace 属性によってオーバーライドされない限り、現在プレフィックスにバインドされている名前空間で作成されます。 name 属性の値は属性値テンプレートとして解釈されます。つまり、<xsl:value-of> の場合と同様に、中かっこ内の式が評価され、文字列に変換されます。 そのため、要素の名前を計算するか、元の XML から取得することができます。namespace
作成した要素の名前空間 URI。 name 属性に QName が含まれている場合は、QName で指定されたプレフィックスが namespace 属性で指定されている名前空間にバインドされます。 その場合は、シリアル化のときに、名前空間宣言の追加が必要になることがあります。 namespace 値は、属性値テンプレートとして解釈されます。use-attribute-sets
修飾名 (XSLT) として指定された、空白で区切られた属性セットのリスト。 この属性を指定することで、列挙された属性のセット内の各属性を宣言します。
要素情報
出現回数 |
無制限 |
親要素 |
xsl:copy、xsl:element、xsl:fallback、xsl:for-each、xsl:if, xsl:message、xsl:otherwise、xsl:param、xsl:template、xsl:variable、xsl:when、xsl:with-param、出力要素 |
子要素 |
xsl:apply-templates、xsl:attribute、xsl:call-template、xsl:choose、xsl:comment、xsl:copy、xsl:copy-of、xsl:element、xsl:for-each、xsl:if、xsl:processing-instruction、xsl:text、xsl:value-of、xsl:variable、出力要素 |
解説
<xsl:element> 要素では、計算された名前で要素を作成できます。 作成される要素の名前は、必須の name 属性および省略可能な namespace 属性によって指定されます。 <xsl:element> 要素のコンテンツは、作成される要素の属性と子要素用のテンプレートです。
この要素は、XSLT 自体のように、名前空間が衝突する状況で要素を作成するためのエスケープ メカニズムを備えています。
使用例
XSLT 要素は出力要素として使用できないため、<xsl:element> 要素が必要となります。 次の例では、<xsl:template> 要素の出力方法を示します。
XML ファイル (item.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="element.xsl" ?>
<root>
<item>My Item</item>
</root>
XSLT ファイル (element.xsl)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="item">
<xsl:element name="xsl:template">
<xsl:attribute name="match">cost</xsl:attribute>
<xsl:attribute name="xml:space">preserve</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
出力
これは書式付き出力です。
My Item
以下は、プロセッサ出力です (わかりやすくするために改行を追加してあります)。
<?xml version="1.0"?>
<xsl:template match="cost"
xml:space="preserve"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
My Item</xsl:template>