2011-09-28 36 views
14

Tôi đã thấy câu hỏi mà anh chị em sau đây đã được áp dụng dựa trên giá trị của nút nhưng vấn đề của tôi liên quan đến nút thực tế.Xpath/XSLT: kiểm tra xem anh chị em sau là một nút cụ thể

Đây là loại XML tôi đã có:

<Employee> 
    <Summary> 
     <A> 
     <B> 
    </Summary> 
    <Elections> 
    </Elections> 
<Employee> 

tôi cần phải viết một điều kiện XPath như sau:

if (NOT(the following sibling(first sibling) of /Employee/Summary is Elections)), then do something. 

Hiện nay tôi có:

<xsl:if test="(not(following-sibling::Employee/Summary[1]='Earnings')) 
    <xsl:call-template name="EmployeeRecord"/> 
</xsl:if> 

Hãy lưu ý rằng tôi không kiểm tra giá trị nút nhưng chính nút đó (tức là tên nút). Bất kỳ trợ giúp nào theo đúng hướng sẽ được đánh giá cao.

+0

Nút hiện tại là gì? Điều kiện được phác thảo không phù hợp với xslt hiện tại của bạn. Bạn có thể nói bằng những từ bạn đang ở trong tài liệu và những gì bạn muốn đạt được không? –

Trả lời

28

Bạn đang đi đúng hướng. Trục following-sibling đánh giá từ nút ngữ cảnh trong bước trước đó.

  • nếu bạn đang tìm kiếm các yếu tố đầu tiên đó là sau-sibling của /Employee/Summary, bạn sẽ sử dụng: /Employee/Summary/following-sibling::*[1].

  • Để đánh giá liệu người anh em sau đây đầu tiên có phải là thành phần Elections hay không, bạn có thể sử dụng bộ lọc biến vị ngữ bổ sung [self::Elections].

  • kiểm tra cho sự phủ định điều đó, quấn toàn bộ điều trong not()

Đưa nó tất cả cùng nhau, điều chỉnh ví dụ của bạn:

<xsl:if test="not(/Employee/Summary/following-sibling::*[1][self::Elections])"> 
    <xsl:call-template name="EmployeeRecord"/> 
</xsl:if> 
+1

Tôi đã không nhìn thấy phần 'self' trước đây, vì vậy đối với những người khác như tôi, với một không gian tên (ns) nó là:' [self :: ns: Elections] ' – BurnsBA

3

tôi cần phải viết một điều kiện XPath như sau :

if (NOT(the following sibling(first sibling) of /Employee/Summary is Elections)), then do something. 

Sử dụng:

not(/Employee/Summary/following-sibling::*[1][self::Elections]) 

Biểu thức XPath được chỉ định như là đối số cho not() chức năng chọn bất kỳ yếu tố Elections là yếu tố đầu tiên sau-sibling của bất kỳ yếu tố Summary đó là một đứa trẻ trong những yếu tố hàng đầu Employee.

Nếu điều này không chọn bất kỳ nút nào, thì biểu thức XPath ở trên đánh giá là true().

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