1
정확히 ['#']
과 [.='#']
의 차이점은 무엇입니까? 차이가 있습니까?정확히 [[#]]와 [. = '#']의 차이점은 무엇입니까?
예 : 다음 식 :
<xsl:template match="a/@href[.='#']">...</xsl:template>
<xsl:template match="a/@href['#']">...</xsl:template>
정확히 ['#']
과 [.='#']
의 차이점은 무엇입니까? 차이가 있습니까?정확히 [[#]]와 [. = '#']의 차이점은 무엇입니까?
예 : 다음 식 :
<xsl:template match="a/@href[.='#']">...</xsl:template>
<xsl:template match="a/@href['#']">...</xsl:template>
술어 필터, 포함 된 표현식이 참이 아닌 경우. [.='#']
은 현재 컨텍스트 (.
)의 문자열 내용이 #
과 같은지 여부를 테스트하므로 첫 번째 템플릿은 <a href="#">...</a>
과 같은 링크의 모든 @href
속성을 반환합니다.
두 번째 템플릿에는 부울 문이 없으며 숫자가 아니기 때문에 위치 테스트가됩니다. boolean
함수에 의해 주어진 같이 평가한다 :
기능 다음과 같이
boolean boolean(object)
은 부울 함수 불리언 인수 변환 :
- 숫자가 TRUE 인 경우 및 양수 또는 음수가 아닌 경우에만 0 또는 NaN
- 노드 집합이 비어 있지 않은 경우에만 true입니다.
- 문자열 true가되는 길이는 경우에만 비 제로
- 유형에 의존하는 방식으로 부울로 변환된다 네 가지 기본 유형이 아닌 다른 형식의 개체를
여기서 우리는 유효 부울 값이 true
인 비어 있지 않은 문자열이 있으므로 두 번째 템플리트의 술어는 아무 것도 필터링하지 않습니다.
반면에 //a[@href]
에서 같은 술어는 @href
속성을 (여기, 우리는 노드 집합 필터링)가 포함 된 모든 링크를 필터링 할 것입니다.
'따라서 첫 번째 질의는'@href와 같은 링크에 대한 모든 속성을 반환합니다 .. 이것은 XPath 1.0에 대해서는 사실이 아닙니다. http://3v4l.org/39iRA – hek2mgl
'/ @ href'를 in XPath 식 질문에서 검색어를 닮은 항목을 추가하면 답변에서 설명한 내용을 정확하게 수행합니다. 나에 대한 수치심 –
, 나는 그것을 놓쳤다. 아주 좋은 대답! – hek2mgl