2011-02-11 2 views
5

XSLT 1.0을 사용하고 있습니다. 현재 <w:t> 템플릿입니다. 앞의 형제 인 w:r(id=3)<w:fldChar w:fldCharType="end"/>이 있는지 확인하고 싶습니다.xslt에서 바로 이전 형제 만 액세스

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

잘 형성되고 올바르게 들여 쓰기 된 XML을 게시하십시오. 나는 다음에 downvote 할 것이다. – Flack

+0

'w : t '요소에는 선행 형제'w : r'이 없으며 앞에 오는 형제가 있습니다. –

답변

11

preceding-sibling 축과 같이 XPath를 사용

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

다음에서 다음, 속성, w:fldChar라는 이름의 하위 요소 (들)에 내려, 가장 가까운 ([1]) preceding-siblingw:r 이름을 선택합니다 거기에 w:fldCharType이라는 이름을 가진 경우, 텍스트가 'end' 인 노드가 있으면 true를 반환합니다.

+0

정답은 +1입니다. – Flack

+8

또한 '조상', '조상 - 자기', '선행'및 '선행 형제'축이 반대 축이기 때문에 위치 술어가 놀라워 보일 수 있습니다. – Flack