Working with XSLT in Dynamicweb Af Sten Hougaard
Working with XSLT in DynamicwebAf Sten Hougaard
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 2
Working with XSLT in Dynamicweb
Hvem er jeg?
• Sten Hougaard• Ansat hos Bleau A/S som frontend udviker• Har arbejdet med Dynamicweb siden 2005• Initiativtager til www.dwfeatures.com • Blog: http://www.netsi.dk/wordpress• Twitter: @netsi1964
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 3
Working with XSLT in Dynamicweb
Hvad vil jeg tale om?
• Hvad er XSLT Templates?• Hvorfor XSLT frem for HTML baseret templates?• Eksempel på XSLT template• Værktøjer og best practice• Fremtiden - ønsker• Links – find link til dette slideshow på www.dwfeatures.com
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 4
Working with XSLT in Dynamicweb
Hvad er XSLT Templates?
• Metode til at lave udtræk fra XML dokument - transformere• Dynamicweb CMS stiller XML dokument til rådighed• Tags struktureret i et DOM træ• XSLT transformerer dette træ til f.eks. HTML• Mange muligheder for at styre resultat via logik• Simpel DwTemplateTags i XSLT ser således ud:
<textarea><xsl:copy-of select=”/.” /></textarea>• Kan også få DW til at gemme til disk – tilføj til URL:
savetemplatexml=true
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 5
Working with XSLT in Dynamicweb
Hvad er XSLT Templates? – Selve XSLT
• Vis element: <xsl:value-of select="News.CategoryName"/>• Vis attribut: <xsl:value-of select=”Loop/@name"/>• Test: <xsl:if test="Server.Request.debugxml='true'”>..</xsl:if>• Loop: <xsl:for-each select="item">..</xsl:for-each>• Variabel:<xsl:variable name=“NC" select="News.CategoryName" />• Anvend variabel:
<xsl:apply-templates select=“item[./News.CategoryName=$NC]” />• Template: <xsl:template match="item">...</xsl:template>• <input type="text" name="format“ value="{$dateFormat}" />
Find link til eksempel og resurser på www.dwfeatures.com
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 6
Working with XSLT in Dynamicweb
Hvad er XSLT Templates? – XPATH
• XPATH bruges til navigation i XML og har en række funktioner• Navigation minder om CSS3 – jQuery ”forstår” XPATH navigation• ”Find ulige nyheder”:
//loop[@name='NewsList']/item[(position()+1) mod 2=0]• Eksempel – Microsoft extention til xpath
Find link til eksempel og resurser på www.dwfeatures.com
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 7
Working with XSLT in Dynamicweb
Hvorfor XSLT frem for HTML baseret templates?
• Google søgning XSLT: 12 500 000 mil hits, dwtemplates: 5 170 hits.• Mindre ”snavs” til klienten, logik i XSLT sikrer kun relevant output• Man kan ikke noget i HTML templates som man ikke kan i XSLT• Arbejder man cross CMS-systemer er XSLT viden genbrugeligt• XPATH anvendes også i jQuery, syntax genbrug! CSS != XPATH• XSLT ender jo typisk også som HTML output, samme resultat • Ikke altid XSLT – primært ved komplekst output• Hvis det tager 15 minutter i HTML og 3 timer i XSLT, kunden er lige glad
han kigger på prisen.
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 8
Working with XSLT in Dynamicweb
Eksempel på XSLT template
• Mål: Vise nyhedsliste som jQuery UI accordion• Personlig best practice: ”debugxml=true” => XML vises• Output kan give problemer i editor, invalid XML
Redning: VS2010 makro (se link på www.dwfeatures.com (snart))
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 9
Working with XSLT in Dynamicweb
Værktøjer og best practice
• Visual Studio 2010• Offline transformering: Single step debugging, breakpoints• Snippets! Download. See video example of use.• Husk at begrænse antal loops i eCom XSLT templates!
<xsl:variable name="availableloops" select="'*'" />• ”TTXPathNavigator for VS2010” • XSLTIntellisence – ikke aktiv, aktiver via RegEdit!• Mulighed for både javascript og C# i XSLT
Følg med på www.dwfeatures.com!
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 10
Working with XSLT in Dynamicweb
Fremtiden - ønsker
• DW åbner op for dw namespace med ”common” utils<dw:translate key=”’next’” default=”’Næste’” useGlobal=”false” />
• DW åbner op for custom namespaces, f.eks. ”bleau”<bleau:toMicroformat type=”’date’” select=”DwDate.GeneralDate” />
• Åbenhed og deling af viden mellem partnere. Styrker DW platformen.F.eks. Gennem www.dwfeatures.com
• XSLT 2.0 – når Microsoft er parat med det
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 11
Working with XSLT in Dynamicweb
Links
• ”XSLT Reference” – Microsoft MSDN• ”XSLT Questions and Answers - FAQ”• ”XPath Syntax” – Microsoft MSDN• ”jQuery” javascript API• ”ajaxslt” jQuery addIn med XPATH og XSLT clientside• Screencasts @ dynamicweb.blip.tv• Snippets lige til at installere i VS• TTXPathNavigator for VS2010• XSLTIntellisence – ikke aktiv, aktiver via RegEdit!• Translation in Dynamicweb XSLT• Netsi.dk various XSLT examples
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 12
Working with XSLT in Dynamicweb
Eventuelt og spørgsmål
Partnerkonference 2011 / Sten Hougaard – [email protected] / side 13
Working with XSLT in Dynamicweb
11-04-2023 / side 14