2010-05-14 27 views
6

Nokogiri có hỗ trợ XPath 1.0 không? Tôi đang cố gắng để làm thay thế chuỗi đơn giản trong một value-of thoại di động, như vậy (nơi element chứa một cái gì đó như '* chuỗi của tôi (vô dụng văn bản)')Nokogiri (Ruby) và XPath

<xsl:value-of select="replace(element,'^\*\ (.+)\ \(.*\)$','\\1')"> 

Đây có phải là XSL kém hình thành? Hay có giới hạn với Nokogiri?

+0

Nếu 'replace()' không hoạt động, tôi cho rằng XSLT 2.0 không được hỗ trợ. ;-) Chuỗi bạn cố gắng thay thế là gì? – Tomalak

Trả lời

6

Các replace() chức năng chỉ được định nghĩa trong XPath 2.0 (và XPath 2.x chỉ được hỗ trợ bởi XSLT 2.x, không XSLT 1,0)

Nokogiri sử dụng libxml2, mà chỉ hỗ trợ XPath 1.0/XSLT1. 0

+0

Đây có phải là trường hợp trong năm 2014 không? – marvin

+2

@marvin, Nó vẫn tương tự đối với libxml. Tuy nhiên, hiện tại có Saxon/C, là Saxon (cho XPath 2/XSLT 2, được dịch sang C). Nếu các nhà phát triển Nokogiri chọn sử dụng Saxon/C, điều này sẽ cung cấp hỗ trợ cho XPath 2 và trong tương lai, có lẽ sẽ cung cấp hỗ trợ ngay cả đối với XPath 3. Để biết thêm thông tin, hãy đọc: http://www.saxonica.com/ saxon-c/index.xml –

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