2011-11-29 50 views

Trả lời

13

Bạn có thể thử này:

//div/@*[starts-with(name(.), 'val')] 

nếu bạn biết rằng bạn đang tìm kiếm thuộc tính đầu tiên của phần tử div.

Edit:

Xin lỗi đã không nhận ra bạn muốn chọn các yếu tố tự. Bạn có thể sử dụng parent :: div hoặc những gì bạn đã làm, nhưng cách thích hợp để làm điều này sẽ được chọn trực tiếp div mình:

//div[@*[starts-with(name(), 'val')]] 
+1

Tôi cần lấy các phần tử div có các thuộc tính cụ thể. Không phải thuộc tính và giá trị của chúng ở dạng '// div/@ * [bắt đầu bằng (name (.), 'Val')]' – dom1nga

+0

using ** nokogiri ** i got: '"

a
". xpath ("// div/@ * [bắt đầu bằng (name (.), 'val')]") # => [# ]' – dom1nga

+0

Nó hoạt động với '// div/@ * [starts-with (name (.), 'Val')]/..' Great thx – dom1nga

0

bạn đã thử với .../@ val *?

+0

'// * [@ val *] 'có sai cú pháp ' // * [ '@ val *']' trả về kết quả tìm kiếm sai, chứa 'val' trong giá trị, nhưng không phải trong các thuộc tính – dom1nga

0

đó là những nút có một thuộc tính nơi tên thuộc tính bắt đầu với val

Sử dụng:

//div[@*[starts-with(name(), 'val')]] 

Lựa chọn này bất kỳ phần tử div nào trong tài liệu, có ít nhất một thuộc tính, có tên bắt đầu bằng chuỗi "val".

XSLT - dựa xác minh:

chuyển đổi này:

<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="//div[@*[starts-with(name(), 'val')]]"/> 
</xsl:template> 
</xsl:stylesheet> 

khi áp dụng về vấn đề này tài liệu XML (được sản xuất từ ​​các đoạn XML cung cấp):

<html> 
    <div val1="q">a</div> 
    <div val2="w">b</div> 
    <div val3="e">c</div> 
    <div some="r">d</div> 
    <div thing="t">f</div> 
    <div name="y">g</div> 
</html> 

lựa chọn và xuất ra các nút mong muốn:

<div val1="q">a</div> 
<div val2="w">b</div> 
<div val3="e">c</div> 
Các vấn đề liên quan