2014-02-17 3 views

답변

3

술어 필터, 포함 된 표현식이 참이 아닌 경우. [.='#']은 현재 컨텍스트 (.)의 문자열 내용이 #과 같은지 여부를 테스트하므로 첫 번째 템플릿은 <a href="#">...</a>과 같은 링크의 모든 @href 속성을 반환합니다.

두 번째 템플릿에는 부울 문이 없으며 숫자가 아니기 때문에 위치 테스트가됩니다. boolean 함수에 의해 주어진 같이 평가한다 :

기능 다음과 같이 boolean boolean(object)

은 부울 함수 불리언 인수 변환 :

  • 숫자가 TRUE 인 경우 및 양수 또는 음수가 아닌 경우에만 0 또는 NaN
  • 노드 집합이 비어 있지 않은 경우에만 true입니다.
  • 문자열 true가되는 길이는 경우에만 비 제로
  • 유형에 의존하는 방식으로 부울로 변환된다 네 가지 기본 유형이 아닌 다른 형식의 개체를

여기서 우리는 유효 부울 값이 true 인 비어 있지 않은 문자열이 있으므로 두 번째 템플리트의 술어는 아무 것도 필터링하지 않습니다.


반면에 //a[@href]에서 같은 술어는 @href 속성을 (여기, 우리는 노드 집합 필터링)가 포함 된 모든 링크를 필터링 할 것입니다.

+0

'따라서 첫 번째 질의는'@href와 같은 링크에 대한 모든 속성을 반환합니다 .. 이것은 XPath 1.0에 대해서는 사실이 아닙니다. http://3v4l.org/39iRA – hek2mgl

+0

'/ @ href'를 in XPath 식 질문에서 검색어를 닮은 항목을 추가하면 답변에서 설명한 내용을 정확하게 수행합니다. 나에 대한 수치심 –

+0

, 나는 그것을 놓쳤다. 아주 좋은 대답! – hek2mgl

관련 문제