2013-10-17 124 views
2

XPath表達式:如何獲取連接的屬性值?

'.//div/concat(@id, " - ", @class)' 

因錯誤而失敗:

The expression is not a legal expression. 

在Firefox 25.0(從userscript)。

爲什麼,以及如何解決?

對於輸入:

<div id='id1' class='class1'> 
    sample 
</div> 

<div id='id2' class='class2'> 
    sample 
</div> 

我想獲得兩個不同的字符串:

id1 - class1 
id2 - class2 
+0

也給HTML部分和預期的輸出。是的,你的一個是無效的。 –

回答

2

僅Firefox支持XPath 1.0,但你的表達需要的XPath 2.0。在XPath 1.0中沒有等價物(您的表達式返回一串字符串,這是XPath 1.0中不存在的數據類型)。

你是從XSLT還是從Javascript調用這個XPath?無論哪種方式,您都必須使用主機語言而不是XPath來完成這項工作。

1

我想你應該如下做:

HTML

<div id='foo' class='bax'> 
    sample 
</div> 

XPATH

concat(//div/@id, " - ",//div/@class) 

(//div)/concat(@id,' - ',@class) 

輸出

foo - bax