SELECT xpath('//dc:url/text()', t.xml, ARRAY[ARRAY['mydefns', 'http://example.com']]); 이 쿼리를 실행함에 있어 에러가 발생합니다. Error : could not create xpath objecct DETAIL : Undefined namespace prefix ** 이런 형태의 xml 입니다. <test > <dc:url> tttt </dc:url> </test>
SELECT xpath('//dc:url/text()', t.xml, ARRAY[ARRAY['mydefns', 'http://example.com']]);
이 쿼리를 실행함에 있어 에러가 발생합니다.
Error : could not create xpath objecct
DETAIL : Undefined namespace prefix
** 이런 형태의 xml 입니다.
<test >
<dc:url> tttt </dc:url>
</test>
xml namespace 이해가 필요한것 같네요.
//dc:url/text()
는 dc 네임스페이스 안에 있는 url 태그를 의미합니다.
즉, xml 에서 xmlns:dc 속성값을 정의해 주어야합니다.
윗 예제로 ttt 값이 나오게 하려면,
xml 자료안에, test 태그가 되든, dc:url 태그가 되든 그 안에, 일단 네임스페이스를 정의하고,
xpath 함수의 세번째 입력인자에, array[array['dc','그값']] 형태로 지정해야합니다.
SELECT xpath('//dc:url/text()', '<test xmlns:dc="mydefns"><dc:url>asdf</dc:url></test>', ARRAY[ARRAY['dc', 'mydefns']]);
이런식이겠네요.