2012-04-20 29 views
14

Tôi khá mới để XSLT và đây là XML của tôi:Làm thế nào để có được những anh chị em sau trong 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> 

Nếu tôi có một dự án và muốn có được anh chị em ruột mà sau đó, làm thế nào tôi có thể làm điều đó ?

Mã này dường như không làm việc cho tôi:

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

Trả lời

28

Đây thực sự là một câu hỏi hoàn toàn XPath.

Sử dụng:

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

này sẽ chọn bất kỳ đầu tiên sau anh chị em Project của bất kỳ yếu tố Project đó là một đứa trẻ trong những yếu tố hàng đầu trong tài liệu XML và chuỗi giá trị của ít nhất một trong title của nó trẻ em là chuỗi "Project X".

XSLT - dựa xác minh:

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

Khi chuyển đổi này được áp dụng trên các tài liệu XML cung cấp:

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

biểu thức XPath được đánh giá và các yếu tố một cách chính xác được lựa chọn được sao chép vào đầu ra:

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

Hey Dimitre, hoạt động như một sự quyến rũ. Cám ơn rất nhiều! – Tintin81

+0

@ Tintin81: Bạn được chào đón. –

Các vấn đề liên quan