xslt

2011-02-11 14 views
5

में केवल तत्काल पूर्ववर्ती भाई को जोड़ना मैं एक्सएसएलटी 1.0 का उपयोग कर रहा हूं। वर्तमान में <w:t> टेम्पलेट में हूँ। मैं यह जांचना चाहता हूं कि पिछले भाई w:r(id=3) में <w:fldChar w:fldCharType="end"/> है या नहीं।xslt

मुझे तत्काल पूर्ववर्ती भाई चाहिए और w:rid=2 या id=1 है।

<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

कृपया अच्छी तरह से गठित और ठीक से इंडेंट किए गए एक्सएमएल पोस्ट करें। मैं अगली बार डाउनवोट करूंगा। – Flack

+0

ध्यान दें कि 'w: t' तत्व में कोई पूर्ववर्ती भाई नहीं है' w: r' लेकिन पहले से पहले। सही उत्तर के लिए –

उत्तर

11

xpath preceding-sibling अक्ष इस तरह का उपयोग करें:

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

जो निकटतम ([1]) preceding-siblingw:r नामित चयन करेंगे, तो, किसी भी बच्चे तत्व (रों) w:fldChar नामित करने के लिए उतरना से तो कोई गुण वहां w:fldCharType नाम दिया गया, तो यदि कोई ऐसा नोड मौजूद है जिसका टेक्स्ट 'end' है, तो सत्य लौटाता है।

+0

+1। – Flack

+8

इसके अलावा, यह हमेशा उल्लेखनीय है कि 'पूर्वजों', 'पूर्वजों या स्वयं', 'पूर्ववर्ती', और 'पूर्ववर्ती-भाई' अक्षएं विपरीत अक्ष हैं, इसलिए स्थिति भविष्यवाणी आश्चर्यजनक लग सकती है। – Flack