2011-09-16 11 views
2

これは私のXMLファイルです。xslt2.0を使用して現在のノードの(祖先:: w:p)の先行兄弟を取り出す方法は?

  1. <w:document> 
        <w:body> 
         <w:p> 
          <w:pPr> 
            <w:pStyle w:val="Heading1"/> 
          </w:pPr> 
          <w:r> 
           <w:t>Para1</w:t> 
          </w:r> 
         </w:p> 
    
         <w:p> 
         <w:pPr> 
          <w:pStyle w:val="Heading2"/> 
         </w:pPr> 
         <w:r> 
          <w:t>Para2</w:t> 
         </w:r> 
         </w:p> 
    
         <w:p> <!-- Current Node --> 
          <w:pPr> 
          <w:pStyle w:val="Heading3"/> 
          </w:pPr> 
          <w:r> 
           <w:t>Para3</w:t> 
          </w:r> 
         </w:p> 
        </w:body> 
    </w:document> 
    

    そうで、今私は、現在のノードの祖先<w:p>を取得したいです。

  2. は、私がの先行兄弟を取得する必要があります<w:p>は、[1]
  3. が最終的に取得する必要があり、この<w:pPr>-<w:pStyle> - > @ W:<w:p>のvalの[1]。

私はこの1つを試してみました...しかし、失敗した...

preceding-sibling::(ancestor::w:p)[1]/w:pPr/w:pStyle/@w:val 
+0

私の答えをテストしてください。それはあなたが探しているものでなければなりません。私はちょうど正しい方法で軸を使用する必要があると思う。 –

+0

empo:動作していません... – Saravanan

+0

XPathにtypo( 'l'がありません)がありました。今私の答えをチェックしてください。 –

答えて

1

を私が正しく理解していた場合、あなたが欲しい:

ancestor::w:p[1]/preceding-sibling::w:p[1]/w:pPr/w:pStyle/@w:val 

あなたの現在のノードが<w:pStyle w:val="Heading3"/>ある場合。

現在のノードがある場合

w:pあなたはもう祖先を望んでいないが、直接の前の兄弟:

preceding-sibling::w:p[1]/w:pPr/w:pStyle/@w:val 

はそれがお役に立てば幸いです。

関連する問題