06. marts 2008 - 17:19
Der er
1 kommentar
xsl, styling efter betingelser
Hejsa
Jeg er ved at lave en hjemmeside i XML / XSLT og det går skam også ganske godt. Jeg har en menu, hvor i alle punkterne ved hover gøres mere synlige, jeg har prøvet at finde en løsning på hvordan jeg via XSLT kan reagere på noget i XML arket, fx titel på siden og bruge dette til at kunne gøre det aktive menu punkt lige så synligt som når jeg hover dem.
Håber i forstår :p
11. marts 2008 - 13:01
#1
<xsl:if test="1=1">
Gør noget
</xsl:if>
Du kan sagtens skrive xpath udtryk mm. Der er også <xsl:choose>.
Ex:
Se en demo af en menu heR:
<xsl:template match="Navigation" xml:space="default">
<xsl:if test="NavigationElement[@ShowInNavigation='true']">
<ul class="menu">
<xsl:apply-templates select="NavigationElement[@ShowInNavigation='true']" />
</ul>
</xsl:if>
</xsl:template>
<!-- selected items -->
<xsl:template match="NavigationElement[@ShowInNavigation='true']" xml:space="default">
<!-- Variable : itemClass // Append item classes for the LI and the A tags to the variable itemClass -->
<xsl:variable name="itemClass">
<xsl:if test="position() = 1">
<xsl:copy-of select="$firstMenuItemClass" />
</xsl:if>
<xsl:if test="position() = last()">
<xsl:copy-of select="$lastMenuItemClass" />
</xsl:if>
<xsl:if test="@Selected='true'">
<xsl:copy-of select="$selectedMenuItemClass" />
</xsl:if>
<xsl:if test="@ChildSelected='true'">
<xsl:copy-of select="$expandedMenuItemClass" />
</xsl:if>
<xsl:if test="@NumberOfChildren > '0'">
<xsl:copy-of select="$hasChildrenMenuItemClass" />
</xsl:if>
</xsl:variable>
<li>
<!-- Add classes to List tag -->
<xsl:if test="not($itemClass='')">
<xsl:attribute name="class">
<xsl:copy-of select="normalize-space($itemClass)" />
</xsl:attribute>
</xsl:if>
<a>
<xsl:if test="not($itemClass='')">
<xsl:attribute name="class">
<xsl:copy-of select="normalize-space($itemClass)" />
</xsl:attribute>
</xsl:if>
<xsl:attribute name="href" xml:space="default">
<xsl:choose>
<xsl:when test="LongUrl != ''">/<xsl:value-of select="LongUrl" /></xsl:when>
<xsl:otherwise>/<xsl:value-of select="$FilenamePrefix" /><xsl:value-of select="@PageId" /><xsl:value-of select="$FileExtension" /></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="NavigationTitle" />
</a>
<xsl:if test="NavigationElement[@ShowInNavigation='true']">
<ul>
<xsl:apply-templates select="NavigationElement[@ShowInNavigation='true']" />
</ul>
</xsl:if>
</li>
</xsl:template>