Rendering - XSLT

XSLT er ikke utfyllende dokumentert her, da det finnes mye dokumentasjon på dette andre steder. Når en redigerer en rendering i utviklingsverktøyet, vil en få frem forslag til hvilke tagger som er tilgjengelige.

Her er et Example på en rendering som er skrevet i XSLT.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:VBCustomScript="#VBCustomScript">

<msxml:script language="VB" implements-prefix="VBCustomScript">
<![CDATA[
function LongDate(myDate)
   if IsDate(myDate) then
    LongDate= FormatDateTime(myDate, vblongdate)
   else
    LongDate = myDate
   end if
 end function
]]>
</msxml:script>

    <xsl:template match="/item">
        <h2>
            <xsl:value-of select="title" />
        </h2>

        <xsl:if test="teaser != ''">
            <p>
                <strong>
                    <xsl:value-of select="teaser"/>
                </strong>
            </p>
        </xsl:if>

        <xsl:if test="thumbnail != ''">
            <img class="right" alt="ingressbilde">
                <xsl:attribute name="src">
                    <xsl:value-of select="thumbnail" />?fw=280&amp;fh=500
                </xsl:attribute>

                <xsl:attribute name="title">
                    <xsl:value-of select="title" />
                </xsl:attribute>
            </img>
        </xsl:if>

        <xsl:value-of select="text" disable-output-escaping="yes" />

<p>Publisert: <xsl:value-of select="VBCustomScript:LongDate(string(publishdate))" />  </p>
    </xsl:template>
</xsl:stylesheet>

 

XML-struktur

Xml-strukturen ser slik ut for et element som også inneholder en artikkelliste(svært forkortet):

<?xml version="1.0" encoding="utf-8"?>
<item>
    <itemid>129</itemid>
    <itemurl>/aktuelt</itemurl>
    <itemname></itemname>
    <templateid>41</templateid>
    <categoryid></categoryid>
    <title>Aktuelt</title>
    <teaser></teaser>
    <text><![CDATA[<p>Vi oppdaterer stadig nettsidene v&aring;re med informasjon du kan v&aelig;re interessert i!</p>]]>
    </text>
    <thumbnail></thumbnail>
    ...
    <Categories>10</Categories>
    <Templates>33</Templates>

    <itemlist>
        <item>
            <itemid>34</itemid>
            <itemurl>/aktuelt/2012/02/nytt-produkt</itemurl>
            <itemname></itemname>
            <templateid>33</templateid>
            <categoryid>10</categoryid>
            <title>Nytt produkt</title>
            <teaser>Alt i et pakken er nå lansert</teaser>
         ...
        </item>
        <item>
            <itemid>30</itemid>
            <itemurl>/aktuelt/2012/02/integrasjon</itemurl>
            <itemname></itemname>
            <templateid>33</templateid>
            <categoryid>10</categoryid>
            <title>Vi kan nå tilby integrasjon mot enda flere system</title>
            <teaser></teaser>
            ...
        </item>
    </itemlist>
</item>

Hele innholdet ligger inne i <item>, og alle sidene i artikkellisten ligger inne i <itemlist> som egne <item>. I Exampleet over er svært mange av feltene tatt bort. Feltene til hvert enkelt item vil være alle feltene i item-tabellen, samt attributter og felter i eventuelt tilknyttet rad i ekstern tabell.

Xml-strukturen er lik for enkelttekster, men da mangler naturligvis <itemlist>.

 

Artikkellister i XSLT

XSLT-Example som henter ut en artikkelliste:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/item">
        <h1>
            <xsl:value-of select="title" />
        </h1>
        <xsl:value-of select="text" disable-output-escaping="yes" />
        
        <div class="article-list">
            <xsl:apply-templates select="itemlist"/>
        </div>
        
    </xsl:template>

    <xsl:template match="itemlist/item" name="itemlist">
        <div class="article">
            <a href="{itemurl}" class="thumbnail">
                <xsl:if test="thumbnail != ''">
                    <img src="{thumbnail}?w=100&#160;h=100" class="article-image" alt="{title}"/>
                </xsl:if>
                <xsl:if test="thumbnail = ''">
                    <img src="/er/shell/skins/admER2/icons/48/laptop.png" class="article-image" alt="{title}"/>
                </xsl:if>
            </a>
            <h3>
                <a href="{itemurl}">
                    <xsl:value-of select="title"/>
                </a>
            </h3>
            <p>
                <xsl:value-of select="teaser"/>
                <a href="{itemurl}"> Les mer</a>
            </p>
            <div class="cr"></div>
        </div>
    </xsl:template>
</xsl:stylesheet>