$xpath->query('/html[boolean(string(normalize-space(@xml:lang))) = "true"]')
일반적으로 위 쿼리가 작동하지만이 경우 xhtml 속성 xml : lang에 콜론이 있습니다. 엔티티로 바꾸기 & 59; 어느 쪽도 작동하지 않습니다.특수 문자가있는 xpath 속성
제안 사항? 랭이에서 콜론을 가지고 있지 않습니다
$xpath->query('/html[boolean(string(normalize-space(@xml:lang))) = "true"]')
일반적으로 위 쿼리가 작동하지만이 경우 xhtml 속성 xml : lang에 콜론이 있습니다. 엔티티로 바꾸기 & 59; 어느 쪽도 작동하지 않습니다.특수 문자가있는 xpath 속성
제안 사항? 랭이에서 콜론을 가지고 있지 않습니다
이것은
주목해야 할 중요한 것은 속성 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]'
옙 정확히 무슨 뜻이야. 나는 PHP가 domxpath를 사용하고있어 귀하의 질의가 작동하고 광산이 놀랍습니다. 아마 php의 라이브러리 버그? – EddyR
우리에게 당신의 XML의 약어 샘플을 보여 사항 :이 경우
이 아마 더 나은 문이 될 것입니다. – Cerebrus
– EddyR
이것은 perl입니다. 어떤 XML 라이브러리? –