如何使用xslt2.0检索当前节点的(祖先:: w:p)的前一个兄弟?

时间:2011-09-16 05:54:34

标签: xml xslt linq-to-xml

这是我的xml文件。

<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>

所以,

  
      
  1. 现在我想获得当前节点的祖先<w:p>
  2.   
  3. 然后我需要获得此<w:p> [1]
  4. 的前一个兄弟   
  5. 最后需要检索<w:pPr>-<w:pStyle> [1]的<w:p> - &gt; @w:val。
  6.   

我试过这个......但是失败了......

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

1 个答案:

答案 0 :(得分: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

希望它有所帮助。