2009-04-20 3 views
0
$xpath->query('/html[boolean(string(normalize-space(@xml:lang))) = "true"]') 

일반적으로 위 쿼리가 작동하지만이 경우 xhtml 속성 xml : lang에 콜론이 있습니다. 엔티티로 바꾸기 & 59; 어느 쪽도 작동하지 않습니다.특수 문자가있는 xpath 속성

제안 사항? 랭이에서 콜론을 가지고 있지 않습니다

+0

우리에게 당신의 XML의 약어 샘플을 보여 사항 :이 경우

이 아마 더 나은 문이 될 것입니다. – Cerebrus

+0

EddyR

+0

이것은 perl입니다. 어떤 XML 라이브러리? –

답변

1

이것은

주목해야 할 중요한 것은 속성 XML이 있다는 것입니다 ... 정말 완전한 대답은 아니지만. 'lang'속성은 'xml'네임 스페이스입니다. xml 네임 스페이스는 (어떤면에서) '내장'되어 있습니다.

둘째, 당신은 아마 의미 생각 :

진실과 거짓 등
'/html[boolean(string(normalize-space(@xml:lang))) = true()]' 

는 XPath는 문자열이 아니다.

는 지금, 나는 XML :: LibXML을 사용하여, 펄에서 다음 스크립트를 실행했는데 그것은 잘 작동 :

<?xml version='1.0'?> 
<html xml:lang='en-uk'> 
     <head><title>boo</title></head> 
     <body><p>boo</p></body> 
</html> 

가 출력합니다 : 내 입력으로이를 사용하여

#!/usr/bin/perl 

use strict; 
use warnings; 
use XML::LibXML; 

my $parser = XML::LibXML->new; 
my $xml = $parser->parse_file('test.html'); 

my ($node) = $xml->findnodes('/html[boolean(string(normalize-space(@xml:lang))) = true()]'); 


print $node->textContent, "\n"; 

예상 출력 ("boo\nboo").

완전히 네임 스페이스를 인식하지 못하는 파서를 사용하고 있는지 궁금합니다. 또한 '작품'이란 무엇을 의미합니까? html 요소에 xml : lang 특성이 있는지 확인하려고합니까?

'/html[@xml:lang]' 
+0

옙 정확히 무슨 뜻이야. 나는 PHP가 domxpath를 사용하고있어 귀하의 질의가 작동하고 광산이 놀랍습니다. 아마 php의 라이브러리 버그? – EddyR

관련 문제