2012-06-11 3 views
2

У меня есть XML-файл карты сайта, здесь:Как преобразовать XML-файл карты сайта в палитру с использованием XSLT в SDL Tridion?

<?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> 

То, что я сделал до сих пор: создать функцию в тег сценария в PT DWT TBB. где pageload() {id = "@@ Page .ID @@"} этот TBB наследует файл (.cs), где я определил свойство id в классе. создать объект этого типа класса и получить доступ к свойству. использовал это свойство как аргумент 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 обычно ограничен открытым доступом IIS (подобно DLL и другим системным файлам). Таким образом, вам, скорее всего, понадобится использовать C# serverside для применения Xslt для получения обработанного вывода. –

+0

использовать, чтобы проверить, является ли тип узла страницей. что я должен написать, чтобы проверить, запрашивается ли тип узла текущей страницы? – Coder

+0

приведенный выше код работает нормально, но он создает панировочные сухари для всех узлов в файле Sitemap. поэтому я написал , чтобы получить текущий идентификатор страницы. но не работает с PLZ помощи. – Coder

Смежные вопросы