1

私のinput.xmlは次のとおりです。

    <root>
      <Property>
        <info>
          <Name>A</Name>
          <Value>1000</Value>
        </info>
        <info>
          <Name>B</Name>
          <Value>2000</Value>
        </info>  
        <info>
          <Name>C</Name>
          <Value>3000</Value>
        </info>  
      </Property>
    </root>

だからここで私が言うとき- <xsl:apply-templates select="//Property/info">木はどうなるの?下のように思いますか?

      <Property>
        <info>
          <Name>A</Name>
          <Value>1000</Value>
        </info>
        <info>
          <Name>B</Name>
          <Value>2000</Value>
        </info>  
        <info>
          <Name>C</Name>
          <Value>3000</Value>
        </info>  
      </Property>

テンプレートを照合するときに、プロパティ要素をツリーのルート要素として使用できますか?(私はそれを実行し、別のツリーがメモリ内のどこかに作成されると考えているので、はいと思っています-それは本当ですか?(説明をお願いします))

<xsl:template match="Property/info"/>

ここで私の実際のQは-テンプレートはバッファ内のツリー(メインツリーとして取得)に適用されますか、それとも元のソースツリーに適用されますか?

a)バッファリングされたツリーで計算/適用された場合、私が言ったときにルート要素を正しく取得できないはずです

<xsl:copy-of select="../../*"/>

バッファリングされたツリーにはルート要素がなく、プロセッサはルート要素を認識していないためです。[しかし、実際にはどのように機能していますか?]

b)テンプレートが元のソースツリーに適用されている場合は、

<xsl:template match="Property/info"/>

正しく動作しないはずですか?(私たちがこのように与えるべきであるように:

<xsl:template match="root/Property/info"/>

また

<xsl:template match="//Property/info"/>

しかし、上記のようにその動作については言及しません。どうすれば可能ですか?)

4

1 に答える 1

1

ここには2つの別々の質問があります:

1)テンプレートの一致パターンはソースドキュメントツリーの一部とどのように一致しますか?と

2)特定のテンプレートが適用されるときのコンテキストノードは何ですか?

テンプレートの一致パターンは、見た目は似ていますが、XPath式と同じではありません。特に、現在のコンテキストノードを想定していません。「Property/info」infoは、親が要素であるツリー内の任意の要素と一致しPropertyます。この一致パターンはのXPath式と同じように見えますが、select="Property/info"まったく異なります。後者は、コンテキストノードの子である要素infoの子である要素のみを選択しますProperty。コンテキストノードの概念が一致パターンの一致の仕様に含まれていないため、一致パターンには後者の制限はありません。(一致パターンの場合、最初のコンテキストノードは指定されていません。[明示的または暗黙的に]によって選択された任意のノードである可能性があります<xsl:apply-templates>。)

特定のノードに適用するために特定のテンプレートが(マッチングを介して)選択されると、選択されたテンプレートのコンテンツが評価されるときに、そのノードがコンテキストノードになります。(XSLTプロセッサは(概念的に)ツリーの一部をバッファにコピーしません。コンテキストノードは元のソースドキュメントのノードです。)したがって、「../../*」を選択できます。のコンテキストノードから開始します/root/Property/info

于 2012-07-17T21:09:44.713 に答える