2011-03-02 6 views
0

내 웹 사이트에 뉴스를 표시하기 위해 사용자 지정 xslt 스타일을 만들었습니다. 내 문제는 내 뉴스에 배너가 있고 그 중 일부는 그렇지 않다는 것입니다. 그렇다면 XSLT를 사용하여 배너가있는 뉴스를 표시하는 방법과없는 경우를 결정하는 방법은 무엇입니까?XSLT 그림보기 또는 공백 표시

배너 URL이 포함 된 필드를 알고 있습니다. 그래서 나는 내 뉴스를 돌아보고, 뉴스에 배너가 있는지 없는지를 검사하는 일종의 if 문으로부터 리턴 값으로 디스플레이 폼을로드해야한다고 상상할 수있다.

XSLT를 처음 사용하니 어떻게해야합니까? 도움이 필요한 경우

+1

XSLT 질문을하는 올바른 방법은 완성 된 (가능한 한 최소화하는) XML 문서를 완전한 결과로 제공하고 변환을위한 규칙/제약 조건을 나열하는 것입니다. 제발, 그렇지 않으면,받은 답변의 품질은 귀하의 질문의 품질에만 일치합니다. –

+1

고전적인 XSLT 방식은 위의 답변 에서처럼 niether'xsl : if' 또는'xsl : choose' 명령을 사용하여 pull 스타일과 일치하는 패턴입니다. 그러나 입력 샘플이 없으면 정확히 어떻게 표시 할 수 없습니다. –

답변

1

난 당신이 뭔가를 사용할 수 있다고 생각 :

당신은 XSL을 사용할 수 있습니다
<xsl:choose> 
    <xsl:when test="not(empty(imageurlfield))"> 
    <!-- Display with image here --> 
    </xsl:when> 

    <xsl:otherwise> 
    <!-- Display without image here --> 
    </xsl:otherwise> 
</xsl:choose> 
+0

'empty()'가 알 수없는 XSLT 함수라는 오류가 발생합니까? – diceler

+0

'empty()'는 XPath/XSLT 2.0 함수입니다. –

0

: 태그는 일부의 XPath 존재하지 않는지 테스트하는 경우 :

<xsl:if test="./@banner"> 
    <p class="banner"><xsl:value-of select="./@banner" /></p> 
</xsl:if> 
+0

이것은 URL 속성이 속성 내에있는 경우에만 작동하며 배너 속성에 빈 문자열이 포함되어 있으면 p 태그가 표시됩니다. – Chris

+2

@Chris : No. Efective Boolean 노드 집합의 값이 비어 있지 않으면 true입니다. –

+0

아 감사합니다. 그걸 몰랐어. – Chris

0

그냥 두 개의 템플릿, 뉴스 항목에 대한 하나를 지정 배너와 하나없는

<xsl:template match="newsitem[banner]"> 
    <!-- pattern for news items with a banner --> 
</xsl:template> 

<xsl:template match="newsitem"> 
    <!-- pattern for news items without a banner --> 
</xsl:template> 

위의 예는 존재하는 경우 뉴스 항목, 배너에 대한 데이터를 포함하는 하위 요소 banner로, newsitem라는 요소에 포함하는 것으로 가정합니다. 여기서 두 번째 템플릿은 banner 자식을 포함하는 newsitem 요소의 첫 번째 템플릿으로 대체됩니다.