Nếu bạn muốn chọn tất cả h5
chính xác là 4 cấp dưới tổ tiên h1 của chúng, sử dụng:
//h5[ancestor::*[4][self::h1]]
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:template match="/">
<xsl:copy-of select="//h5[ancestor::*[4][self::h1]]"/>
</xsl:template>
</xsl:stylesheet>
Khi chuyển đổi này được áp dụng trên các tài liệu sau đây XML:
<t>
<head/>
<body>
<h1>First Main title
<a>
<b>
<c>
<h5 id="id1"/>
<d>
<h5 id="id2"/>
</d>
</c>
</b>
</a>
</h1>
</body>
</t>
biểu thức XPath được đánh giá và kết quả của việc đánh giá (các phần tử h1
được chọn (trong trường hợp này chỉ là một)) được sao chép vào đầu ra:
<h5 id="id1"/>
Nếu bạn không muốn đếm số lượng các cấp trung gian, Butare chắn rằng họ không vượt quá một số lượng nhất định (ví dụ 7), bạn có thể viết:
//h1[descendent::*[not(position() > 7)][self::h1]]
Tùy chọn này chọn bất kỳ h5
hậu duệ của bất kỳ h1
nào, trong đó "khoảng cách" ở các mức giữa h1
và hậu duệ h5
không vượt quá 7.
Do lưu ý:
Một biểu hiện như dưới đây - như đề xuất trong câu trả lời khác:
//h1//h5
sai lựa chọn cho các tài liệu trên:
<h5 id="id1"/>
<h5 id="id2"/>
Phần thứ hai trong số hai phần tử được chọn h5
có khoảng cách lớn hơn khoảng cách mong muốn từ tổ tiên h1
tổ tiên của nó.
Nguồn
2012-11-01 04:18:33
Bạn có cần bất kỳ/tất cả thẻ 'h5' hoặc bạn có cần một thẻ cụ thể trong HTML không? Nếu bạn cần một cái cụ thể, bạn có một ID hoặc CLASS cho 'h5' sẽ giúp bạn điều hướng đến nó, hoặc một cái gì đó cụ thể về một cái cụ thể có thể được sử dụng làm một mốc? –
Trong khi câu trả lời của pguardiario là đúng cho cách bạn đóng khung câu hỏi của bạn, như Tin Man gợi ý, có nhiều khả năng một cách tốt hơn để nhắm mục tiêu cụ thể (các) thành phần bạn đang tìm kiếm. –
@ theTinMan Mark Thomas - tôi quên câu hỏi này - xin lỗi về điều đó. Vấn đề là tôi có một h5 như được hiển thị và một h5 khác trong chế độ thừa kế khác. Bây giờ, câu trả lời của pguardiario rất tốt cho tôi. Tôi sẽ cập nhật sau. Cảm ơn bạn đã giúp đỡ – nilanjan