2012-06-11 2 views
2

나는 여기있다, 맵에 대한 XML 파일이 : PT DWT TBB에서 스크립트 태그에서 함수를 만들 : 지금까지 내가했던 적이 무엇SDL Tridion에서 XSLT를 사용하여 사이트 맵 XML 파일을 탐색 경로로 변환하는 방법은 무엇입니까?

<?xml version="1.0" encoding="utf-8"?> 
<siteMap> 
    <siteMapNode url="/" title="Home" tcmId="tcm:142-2-4"> 
    <siteMapNode url="/controls" title="Controls" tcmId="tcm:142-1131-4" type="structure group" /> 
    <siteMapNode url="/css" title="CSS" tcmId="tcm:142-1134-4" type="structure group" /> 
    <siteMapNode url="/js" title="JS" tcmId="tcm:142-1133-4" type="structure group" /> 
    <siteMapNode url="/xslt" title="XSLT" tcmId="tcm:142-1132-4" type="structure group" /> 
    <siteMapNode url="/mobile" title="Mobile" tcmId="tcm:142-1165-4" type="structure group" /> 
    <siteMapNode url="/mobilebiscuitml" title="Mobile BiscuitML" tcmId="tcm:142-1180-4" type="structure group" /> 
    <siteMapNode url="/system" title="system" tcmId="tcm:142-136-4" type="structure group"> 
    <siteMapNode url="/system/captcha" title="Captcha" tcmId="tcm:142-260-4" type="structure group" /> 
    <siteMapNode url="/system/communicator" title="Communicator" tcmId="tcm:142-201-4" type="structure group" /> 
    <siteMapNode url="/system/errorpages" title="Error Pages" tcmId="tcm:142-322-4" type="structure group" /> 
    <siteMapNode url="/system/includes" title="includes" tcmId="tcm:142-138-4" type="structure group" /> 
    <siteMapNode url="/system/masterpages" title="Master Pages" tcmId="tcm:142-139-4" type="structure group" /> 
    <siteMapNode url="/system/outboundemail" title="Outbound Email" tcmId="tcm:142-199-4" type="structure group" /> 
    <siteMapNode url="/system/SiteEdit" title="SiteEdit" tcmId="tcm:142-214-4" type="structure group" /> 
    <siteMapNode url="/system/ui_widgets" title="UI Widgets" tcmId="tcm:142-320-4" type="structure group" /> 
    <siteMapNode url="/system/webtemplates" title="Web Templates" tcmId="tcm:142-333-4" type="structure group" /> 
    <siteMapNode url="/system/xml" title="Xml" tcmId="tcm:142-141-4" type="structure group" /> 
    </siteMapNode> 
    <siteMapNode url="/App_GlobalResources" title="Website Labels" tcmId="tcm:142-295-4" type="structure group" /> 
    <siteMapNode url="/Bpo.aspx" title=" BPO" tcmId="tcm:142-10830-64" type="page" /> 
    <siteMapNode url="/Careers.aspx" title=" Careers" tcmId="tcm:142-10692-64" type="page" /> 
    <siteMapNode url="/bpoHitech.aspx" title=" Hitech" tcmId="tcm:142-10710-64" type="page" /> 
    <siteMapNode url="/news.aspx" title=" News" tcmId="tcm:142-10868-64" type="page" /> 
    <siteMapNode url="/ISD.html" title="ISD" tcmId="tcm:142-11027-64" type="page" /> 
    <siteMapNode url="/Services.aspx" title="Services" tcmId="tcm:142-10681-64" type="page" /> 
    <siteMapNode url="/Knowledge.aspx" title="Knowledge" tcmId="tcm:142-11170-64" type="page" /> 
    </siteMapNode> 
</siteMap> 

. where, pageload() {id = "@@ Page.ID @@"} 이 TBB는 클래스의 id 속성을 정의한 (.cs 파일)을 상속합니다. 이 클래스 유형의 객체를 만들고 속성에 액세스합니다. 이 속성을 XSLT 인수로 사용하고 xsl을 통해 변환을 적용합니다.

다른 제안이 좋습니다.

+0

게시 시간이나 페이지 요청시 수행 하시겠습니까? –

+0

Breadcrumbs에 대한 기존 구현을 여기에서 사용할 수 있습니까? –

+0

추가 정보 : .NET 2.0 만 사용할 수있는 제약이 있다고 생각합니다. –

답변

5

마노, XSL 아래는 도움이 될 수도를? : 고려하지만, 일부 과거 프로젝트 XML 구조가 약간 다릅니다하지만 아래의 코드 조각 당신을 도움이 될 것입니다 그것을 사용 했 앞으로 올바른 방향으로 이동합니다.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <xsl:for-each select="//siteMapNode[@title = '<<Controls>>']"> ---> Node title of the current page 
      <div id="breadcrumb"> 
       <xsl:for-each select="ancestor::siteMapNode"> --> selects the parent and loop through.. 
        <a href="@url"><xsl:value-of select="@title"/></a> &gt; --> breadcrumb separator ">" 
       </xsl:for-each> 
       <xsl:value-of select="@title"/> 
      </div> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 
+0

web.sitemap 파일은 대개 DLL 및 기타 시스템 파일과 마찬가지로 IIS의 공개 액세스로부터 제한됩니다. 따라서 Xslt를 적용하여 렌더링 된 출력을 얻으려면 C# serverside를 사용해야 할 가능성이 큽니다. –

+0

노드 유형이 페이지인지 확인하는 데 사용합니다. 노드 유형이 현재 페이지 요청인지 확인하기 위해 무엇을 써야합니까? – Coder

+0

위 코드는 정상적으로 작동하지만 Sitemap 파일의 모든 노드에 대해 이동 경로를 생성합니다. 그래서 나는 현재 페이지 ID를 얻기 위해 를 썼다. 그러나 plz 도움이 작동하지 않습니다. – Coder