2011-02-11 19 views
5

içinde hemen önceki kardeşe ulaşma XSLT 1.0 kullanıyorum. Şu anda <w:t> şablonundayım. Önceki kardeşe w:r(id=3)'un <w:fldChar w:fldCharType="end"/> içerip içermediğini kontrol etmek istiyorum.Sadece xslt

Aniden önceki kardeşleri istiyorum ve id=2 veya id=1'a sahip w:r.

<t xmlns:w="http://example.com"> 
    <w:r id="1"> 
     <w:fldChar w:fldCharType="start"/> 
    </w:r> 
    <w:r id="2"> 
     <w:fldChar w:fldCharType="separate"/> 
    </w:r> 
    <w:bookmarkStart w:id="0" w:name="tocStartRef_1"/> 
    <w:r id="3"> 
     <w:fldChar w:fldCharType="end"/> 
    </w:r> 
    <w:bookmarkEnd w:id="0"/> 
    <w:r id="4"> 
     <w:rPr> 
      <w:rStyle w:val="Span"/> 
      <w:rFonts w:ascii="arial" w:eastAsia="arial" 
         w:hAnsi="arial" w:cs="arial"/> 
      <w:b/> 
      <w:sz w:val="32"/> 
     </w:rPr> 
     <w:t>Fonts</w:t> 
    </w:r> 
</t> 
+0

iyi biçimlendirilmiş ve düzgün girintili XML gönderin. Bir dahaki sefere düşeceğim. – Flack

+0

Not: w: t' öğesinin önceki kardeşi w: r' değil, sadece öncekiler vardır. Doğru bir cevap için –

cevap

11

preceding-sibling ekseni böyle xpath kullanın:

preceding-sibling::w:r[1]/w:fldChar/@w:fldCharType = 'end' 

o andan itibaren o zaman herhangi nitelikleri, w:fldChar adlı alt eleman (lar) inmek, en yakın ([1]) preceding-siblingw:r adlı seçecektir Orada w:fldCharType olarak adlandırılmış, daha sonra metni 'end' olan herhangi bir düğüm varsa true değerini döndürür.

+0

+1. – Flack

+8

Ayrıca, her zaman “ata”, “ata” ya da “önceki” ve “önceki kardeş” eksenlerinin ters eksenler olduğunu belirtmek gerekir, bu yüzden konum belirleyicileri şaşırtıcı görünebilir. – Flack