2012-06-28 3 views
0

온라인 XPath 평가자로 http://xpath.online-toolz.com/tools/xpath-editor.php 을 사용하고 있습니다. 나는 몇 가지 다른 시도했지만 그건 모두 같은매우 기본적인 XPath 오류

내가 가지고있는 내 XML에서 다음 -

<?xml version="1.0"?> 
<test xmlns="abc"> 
</test> 

지금의 XPath가

/ 
. 

나에게 출력을 제공 쿼리 : -

<test xmlns="abc"> 
</test> 

그러나 검색어 :

test 
/test 
//test 

전혀 출력하지 마십시오. 나는 아주 기본적인 실수를하고있다. 그러나 나는 무엇을 알아낼 수 없다. 나는 도움이되지 않습니다

abc:test 

에 네임 스페이스를 함께 할 수있는 뭔가하지만 쿼리를 변경 있어요 생각 중 하나는 잘못된 표현의 오류를 제공하기 때문이다.

나는 XPath는 튜토리얼에 대한 내 소스로 http://www.w3schools.com/xpath http://www.tizag.com/xmlTutorial/xpathtutorial.php & http://oreilly.com/perl/excerpts/system-admin-with-perl/ten-minute-xpath-utorial.html

을 사용하고 있습니다.

답변

1

대상 파일에 명시적인 네임 스페이스 접두사가 없지만 여전히이를 처리해야합니다. 쓸 수 있습니다

/*[local-name()='test' and namespace-uri()='abc'] 

"abc"는 네임 스페이스 접두사가 아닌 namespaceURI입니다.

<test xmlns="http://www.abc.com"> 
</test> 

는 쿼리가 될 때 :

/*[local-name()='test' and namespace-uri()='http://www.abc.com/'] 

나는 대부분의 도구가 더 나은 파일이 될 것 같은

http://www.abc.com/ 

로 URI의 양식을 테스트하므로 아마도 유효하지 않습니다 귀하의 사이트에서 이것을 테스트 해본 결과 작동합니다.

abc:test 

'http://www.abc.com/'에 접두사 abc을 설정하는 메커니즘에 따라 달라집니다 및 사이트

+0

당신이 그것을 작동하는지 확신에 대한 메커니즘이있을 것 같지 않습니다 양식? 귀하의 코드를 정확하게 복사하여 붙여 넣으려고했지만 여전히 결과가 나에게 주어집니다. – owagh

+1

나는 그것을 재 시도하고 실패하고 나는 재 시도하고 그것은 효과가 있었다. '/ * [local-name() = 'test'및 namespace-uri() = 'http : //www.abc.com']'및 xml''지금은 –

+1

일뿐 더 간단한 쿼리'/ * [local-name() = 'test'및 namespace-uri() = 'http : //www.abc.com']' 당신은 다른 네임 스페이스가 없다는 것을 알고있다. –

관련 문제