Với này đơn giản hóa định dạng dữ liệu:XPath để chọn nhiều thẻ
<a>
<b>
<c>C1</c>
<d>D1</d>
<e>E1</e>
<f>don't select this one</f>
</b>
<b>
<c>C2</c>
<d>D2</d>
<e>E1</e>
<g>don't select me</g>
</b>
<c>not this one</c>
<d>nor this one</d>
<e>definitely not this one</e>
</a>
Làm thế nào bạn sẽ chọn tất cả các C
s, D
s và E
s mà là con của B
yếu tố?
Về cơ bản, một cái gì đó như:
a/b/(c|d|e)
Trong tình huống của riêng tôi, thay vì chỉ a/b/
, truy vấn dẫn đến việc lựa chọn những C
, D
, E
nút là thực sự khá phức tạp vì vậy tôi muốn tránh làm điều này:
a/b/c|a/b/d|a/b/e
Điều này có thể không?
'hoặc' không hoạt động trên mỗi cái, bạn sẽ cần phải sử dụng một đường thẳng đứng thay vì '|' –
@ Guasqueño, 'hoặc' là toán tử logic - nó hoạt động trên hai giá trị Boolean. Toán tử XPath ** union ** '|' hoạt động trên hai tập hợp các nút. Đây là những trường hợp khá khác nhau và có những trường hợp sử dụng cụ thể cho từng trường hợp. Sử dụng '|' ** có thể ** giải quyết vấn đề ban đầu, nhưng nó dẫn đến một biểu thức XPath dài hơn và phức tạp hơn và khó khăn hơn. Biểu thức đơn giản hơn trong câu trả lời này, sử dụng toán tử 'hoặc' tạo ra tập nút mong muốn và * có thể được xác định trong thuộc tính" select "của một hoạt động' 'XSLT. Hãy thử nó. –