2012-04-20 5 views
14

에 다음 형제를 얻을이 내 XML입니다 방법 :내가 XSLT 상당히 새로운 오전 XSLT

<projects> 
    <project> 
     <number>1</number> 
     <title>Project X</title> 
    </project> 
    <project> 
     <number>2</number> 
     <title>Project Y</title> 
    </project> 
    <project> 
     <number>3</number> 
     <title>Project Z</title> 
    </project> 
</projects> 

내가 하나 개의 프로젝트를 가지고 그 다음에 형제를 얻고 싶은 경우에, 나는 어떻게 할 수 ?

이 코드는 나를 위해 작동하지 않습니다

/projects[title="Project X"]/following-sibling 

답변

28

이 실제로 XPath를 완전히 질문입니다.

사용는 :

/*/project[title = 'Project X']/following-sibling::project[1] 

이 선택하는 어떤 먼저 XML 문서의 최상위 요소와 최소한의 title를 중 하나의 문자열 값의 자식 어떤 Project 요소의 Project 형제 다음 children은 문자열 "Project X"입니다.

XSLT - 대조 :

<projects> 
    <project> 
     <number>1</number> 
     <title>Project X</title> 
    </project> 
    <project> 
     <number>2</number> 
     <title>Project Y</title> 
    </project> 
    <project> 
     <number>3</number> 
     <title>Project Z</title> 
    </project> 
</projects> 

는 XPath 식을 평가하고 정확하게 선택 요소이다 :이 변환은 제공된 XML 문서에 적용

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/"> 
    <xsl:copy-of select= 
     "/*/project[title = 'Project X']/following-sibling::project[1]"/> 
</xsl:template> 
</xsl:stylesheet> 

출력에 복사됩니다.

<project> 
    <number>2</number> 
    <title>Project Y</title> 
</project> 
+0

어이 Dimitre, 매력처럼 작동합니다. 정말 고마워! – Tintin81

+0

@ Tintin81 : 천만에. –