2014-07-16 2 views
0

XSLT를 사용하는 사이트의 모든 페이지에서 사용할 수있는 메뉴를 만들려고합니다.XSLT의 URL에 따라 CSS 클래스 변경

나는 XSL이 있습니다

<xsl:template match="header/menu"> 
    <div class="header__menu"> 
    <xsl:apply-templates select="item"/> 
    </div> 
</xsl:template> 

<xsl:template match="menu/item"> 
    <div class="header__menu-item"> 
    <a class="link"> 
     <xsl:attribute name="href"> 
      <xsl:value-of select="../item/@url"/> 
     </xsl:attribute> 
     <xsl:value-of select="."/> 
    </a> 
    </div> 
</xsl:template> 

XML :

<header> 
    <menu> 
     <item url="#">Work</item> 
     <item url="#">About</item> 
     <item url="#">Blog</item> 
    </menu> 
</header> 

페이지가 열리고 때 내가 더 (페이지에 활성 클래스를 따라 메뉴 항목의 CSS 클래스를 변경하려면 링크).

xsl : construction을 선택하고 페이지 URL을 확인하는 방법에 대해 생각해 보았습니다.

제안 사항? 미리 감사드립니다.

+0

XSLT 자체는 페이지 URL에 대해 알지 못하므로 현재 URL을 매개 변수로 전달해야합니다. 현재 변환을 수행하기 위해 XSLT를 어떻게 호출하고 있습니까? (예를 들어, PHP, ASP.Net, JavaScript 등?). –

+0

현재 저는 PHP를 사용하고 있습니다. xsl (header.xsl 및 기타 가져 오기) 및 xml 페이지를 호출하는 디렉터리에 index.php 파일이 있습니다. –

답변

0

URL을 얻기 위해 XSLT에서 사용할 수있는 확장 방법이있을 수 있지만 PHP를 통해 매개 변수로 URL을 XSLT에 전달하는 것이 더 쉬울 수도 있습니다. 예를 들어,이 문서를 참조하십시오 http://docs.php.net/manual/en/xsltprocessor.setparameter.php 당신의 XSLT 자체에서

, 당신은 다음 매개 변수를 사용하여 측면에서 매우

<xsl:param name="url" /> 

같이 정의 것이다, 당신은 XSL을 사용할 수 있으므로,을 선택하여 XSLT는 다음과 같이 (이 경우 나는 태그에 CSS 클래스를 걸었을 볼 수 있지만, 당신이 원하는 경우에 쉽게 포함 사업부 태그에 갈 수있다.

<xsl:template match="menu/item"> 
    <div class="header__menu-item"> 
    <a class="link" href="{@url}"> 
    <xsl:attribute name="class"> 
     <xsl:choose> 
      <xsl:when test="$url = @url">active</xsl:when> 
      <xsl:otherwise>inactive</xsl:when> 
     <xsl:choose> 
     </xsl:attribute> 
     <xsl:value-of select="."/> 
    </a> 
    </div> 
</xsl:template> 

제쳐두고 기존 href 속성을 만들 때 "속성 값 템플릿"을 사용하십시오. 중괄호 { }은 평가할 표현식을 나타내며 그대로 출력되지는 않습니다.

+0

감사합니다. Tim C. 나는 아직 xsl 매개 변수에 URL을 전달하는 방법을 완전히 이해하지 못했습니다. –

+0

누구나 PHP가 필요하면 URL을 전달하는 것에 대한 답변을 얻었습니다. http://stackoverflow.com/questions/25826220/pass-url-as-a-parameter-to-xsl –