Avatar billede christofferhped Nybegynder
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
Avatar billede jokkejensen Novice
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 &gt; '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>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester