Xmlドキュメントのルート要素のタグ名をxslt変数に割り当てることに興味があります。たとえば、ドキュメントが次のようになっている場合(DTDを差し引いたもの):
<foo xmlns="http://.....">
<bar>1</bar>
</foo>
そして、文字列 'foo'をxslt変数に割り当てたいと思いました。それを参照する方法はありますか?
ありがとう、マット
一番外側のXML要素の名前を取得したいと思います。これは、次のXSLサンプルのように実行できます。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="outermostElementName" select="name(/*)" />
<xsl:template match="/">
<xsl:value-of select="$outermostElementName"/>
</xsl:template>
</xsl:stylesheet>
XPathの用語には若干の違いがあることに注意してください。
ツリーの最上部は、ルートノード(1.0用語)またはドキュメントノード(2.0)です。これが「/」の意味です。これは要素ではありません。最も外側の要素(および最も外側の要素の前後にあるコメントと処理命令)の親です。ルートノードには名前がありません。
http://www.dpawson.co.uk/xsl/sect2/root.html#d9799e301 を参照してください
XPath name()
関数を使用します。
最上位(ルートではない!)要素の名前を取得する1つのXPath式は次のとおりです。
name(/*)
Name()関数はノードの完全修飾名を返すため、要素_<bar:foo/>
_の場合、文字列 "bar:foo"が返されます。
名前のローカル部分のみが必要な場合(接頭辞と「:」なし)、XPath local-name()
関数を使用する必要があります。
理解した。パラメータ*が指定された関数name()は、fooを返します。
あなたが欲しいlocal-name()