2012-11-08 6 views
1

여기에 작은 XSLT 코드가 있지만 표현식 중 하나를 이해하지 못하고 추가 된 값 중 하나가 작동하지 않습니다. 여기XSLT 식 [. =

내가 무엇을 가지고 :

<xsl:choose> 
    <xsl:when test="contentclass[. = 'STS_ListItem_DocumentLibrary'] and {imageurl/@imageurldescription} = 'Web Page'"> 
     <div class="srch-Icon" id="{concat($currentId,'_Icon')}"> 
      <img align="absmiddle" src="/_layouts/images/itdl.png" border="0" alt="Document Library" /> 
     </div> 
    </xsl:when> 
    <xsl:otherwise> 
     <div class="srch-Icon" id="{concat($currentId,'_Icon')}"> 
      <img align="absmiddle" src="{imageurl}" border="0" alt="{imageurl/@imageurldescription}" /> 
     </div> 
     </xsl:otherwise> 

을 기본적으로 당신이 보는대로, 어떤이 표현은 의미 않는다 => "[=."?

두 번째로 가장 잘 작동하는 이유는 누구입니까?

{imageurl/@imageurldescription} = 'Web Page' 

왜 문제가 존재할 수 있습니까? 값이 100 % 존재하면 작동합니다 (그렇지 않은 경우 값을 얻음)

답변

1

{ } 일반 요소의 속성 표현식을 사용하면 XSLT 엔진이 텍스트로 처리하지 않고 평가하게됩니다. . 컨트롤 요소 (<xsl:...)의 대부분의 속성에서 중괄호는 필요하지 않으며 포함하면 구문 오류가 발생합니다.

contentclass[. = 'STS_ListItem_DocumentLibrary'] 부분은 의미 : 모든 콘텐츠가 "STS_ListItem_DocumentLibrary" 일 때마다 contentclass 개의 모든 요소를 ​​일치시킵니다. contentclass = 'STS_ListItem_DocumentLibrary'

자세히보기 : :

+0

그 이미지 URL/@ imageurldescription = '웹 페이지'여전히 나던 evalute :(이유 – Alnedru

+1

@Alnedru처럼 쓰기는 동등하다 테스트하고있는 XML을 붙여 넣을 수 있습니까? 문제를 진단하는 것이 훨씬 쉬워집니다. –

+0

입력 문제로 문제가 해결되었습니다. – Alnedru