4

XPathデータモデルの属性ノードとは何ですか?特定のノードが属性ノードになるのはいつですか?

誰かが属性ノードの例を提供できれば、それは非常に役立ちます。

4

3 に答える 3

3

これは、一致したすべての属性の属性値を保持するノードです。たとえば、次のタグがある場合:

<tag name="foo">
    <child>Bar</child>
</tag>

その場合、XPathクエリ//@nameは結果として「foo」を返します。その属性を持つタグがn個ある場合、 n個の属性の値すべてをフェッチします。

属性ノード自体は、名前と値の2つの部分で構成されています。したがって、上記の例では、になりますname="foo"

于 2013-03-03T08:05:07.460 に答える
3

OPはコメントで、彼の質問は次のとおりであることを明確にしています。

親要素なしで属性ノードを作成することは可能ですか?

はい、XSLT2.0では次のように書くことができます。

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:variable name="vAttr" as="attribute()">
  <xsl:attribute name="x">y</xsl:attribute>
 </xsl:variable>

 <xsl:template match="/*">
     <xsl:copy>
       <xsl:copy-of select="$vAttr"/>
     </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

この変換が次のXMLドキュメントに適用される場合:

<t/>

必要な正しい結果が生成されます:

<t x="y"/>

したがって、属性は、親要素を持たないスタンドアロンアイテムとして作成されます。次に、そのインスタンスを任意の要素にコピーできます

于 2013-03-03T17:31:18.810 に答える
1

以下のXMLにbar="baz"は、名前barと値を持つ属性がありますbaz

<foo bar="baz"/>

属性は属性に「なりません」。それは属性かどうかのどちらかです。

XPathの属性にアクセスするには、次を使用できます@(これはattribute::軸のショートカットです)。

/foo/@bar

XMLの基本についてもう少し詳しくは、これらのリンクも参照してください。

于 2013-03-03T08:03:14.600 に答える