2009-06-17 31 views
5

Tôi có XML sau:Tôi làm cách nào để có được các ký tự đại diện để hoạt động trong khớp với giá trị thuộc tính XPath?

<root> 
    <foo> 
    <bar type="a whole bunch of stuff, then a magic string: MUPPET" /> 
    <value>my Muppet value</value> 
    </foo> 
    <foo> 
    <bar type="some other stuff, then a different magic string: GREMLIN" /> 
    <value>my Gremlin value</value> 
    </foo> 
</root> 

Tôi muốn xây dựng một truy vấn XPath trả về "giá trị của tôi Muppet" (chuỗi) cho chuỗi ma thuật "Muppet". Đoán của tôi là:

/root/foo[contains(bar/@type,'MUPPET')]/value/text() 

nhưng điều đó dường như không hoạt động. Tôi thực sự không chắc liệu toán tử contains(x,y) có cho phép truy vấn làm thông số đầu tiên hay không. Là một vấn đề phụ, tôi không chắc liệu tôi có cần số text() ở cuối hay không.

Bất kỳ trợ giúp nào?

Trả lời

5

tôi chỉ kiểm tra với điều này Evaluators XPATH trực tuyến và nó đang làm việc tốt:

http://www.mizar.dk/XPath/Default.aspx

+0

Bạn hoàn toàn chính xác; họ chắc chắn làm! Và điều đó cũng trả lời câu hỏi của tôi về/text(). Phải là một vấn đề với công cụ XPath của IBM trong Eclipse. Hrm. –

0

Bạn có chắc chắn bạn không phải là một vấn đề không gian tên với XPath của bạn?

+0

Đừng nghĩ vậy; Tôi nghĩ rằng đó là một vấn đề với công cụ báo cáo BIRT của IBM, không phải là truy vấn XPath. Nếu tôi thay đổi truy vấn từ "./foo[contains(bar/@type,'MUPPET ')]/value/text()" to "." Tôi vẫn không nhận được gì. Chắc chắn "." phải khớp với _something _... –

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