3

XMLをいじり始めたばかりですが、質問があります。

XMLファイル:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<bucket version="Root Version 1A2B3C">
</bucket>

XSLファイル

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="bucket"> 
    <html>
       <body>
        <h3>
          <xsl:value-of select="@version"/>
        </h3>
      </body>
    </html>
  </xsl:template>
 </xsl:stylesheet>

XSLの3行目について質問があります。使用する場合

<xsl:template match="bucket">- Root Version 1A2B3C印刷されます

<xsl:template match="/"> -

"/"何も印刷されていません-私はルートを意味すると思いました。私の理解では、「1.0」(<?xml version)または「ルートバージョン1A2B3C」(bucket version)

なぜ動作しないのか教えてください。

ありがとう

4

2 に答える 2

2

/document-node()-つまりドキュメント全体を示します

提供されたXMLでは、bucket要素はドキュメントの最上位要素です。ルートノードではありません。

最上位の要素bucketには、処理命令やコメントノードなどの兄弟を含めることができます。最上位の要素とその兄弟はすべて単一の親を持ち、これは/ドキュメントのルートノードです。

于 2010-11-12T20:27:01.043 に答える
2

http://www.w3.org/TR/xpath/#root-nodeから

ルートノードはツリーのルートです。ツリーのルート以外では、ルートノードは発生しません。ドキュメント要素の要素ノードは、ルートノードの子です。ルートノードには、プロローグ内およびドキュメント要素の終了後に発生する命令とコメントを処理するための処理命令ノードとコメントノードも子としてあります。

常に覚えておいてください(http://www.w3.org/TR/xpath/#section-Introductionから):

XPathは、表面の構文ではなく、XMLドキュメントの抽象的な論理構造で動作します。

したがって、ドキュメントルートとは、ドキュメント/全体の「論理」ルートを意味します。

于 2010-11-12T20:06:52.507 に答える