Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Jonas Berling 30 posts 50 karma points
    Dec 02, 2011 @ 23:04
    Jonas Berling
    0

    Mixing XSLT and HTML tags

    I'm writing an XSLT macro that should loop through a number of nodes and for each node display some data (description text and a picture). I want the list to be in a two-column table so I started out with the 'Table prototype' template. The problem is that I can't get the mix of XSLT tags and HTML tags to play along.

    The code below can not be saved as it complains about unmatched tags and when I tried to replace every HTML tag, e.g. <td> with &lt;td> the code saves and renders fine when I do 'Visualize XSLT' but running the macro in a real page renders the HTML tags (&lt;td>) intead of interpreting them.

    What would be the correct way of mixing XSLT and HTML tags?

    I'm running v4.5.2.

     

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxml="urn:schemas-microsoft-com:xslt"
      xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
      exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">


    <xsl:output method="xml" omit-xml-declaration="yes"/>

    <xsl:param name="currentPage"/>

    <xsl:template match="/">

    <!-- The fun starts here -->
    <table border="0" cellspacing="0" cellpadding="5">
    <tr>
    <xsl:for-each select="$currentPage/node()/bild">
      <xsl:choose>
       <xsl:when test="position() mod 3 = 0">
        </tr>
        <tr>
       </xsl:when>
      </xsl:choose>
      <td>
      <B><xsl:value-of select="./../rubrik"/></B><br/>
      <xsl:variable name="media" select="umbraco.library:GetMedia(., 0)" />     
      <xsl:if test="$media">         
        <a href=&quot;<xsl:value-of select="./../tillverkarensURL"/>&quot; border=&quot;1&quot;><img src="{$media/umbracoFile}" alt="{$media/altText}" width="318" height="196"/>&lt;/a>
      </xsl:if>
     
      </td>
    </xsl:for-each>
    </table>

    </xsl:template>

    </xsl:stylesheet>

     

     

  • Chriztian Steinmeier 2800 posts 8791 karma points MVP 8x admin c-trib
    Dec 02, 2011 @ 23:28
    Chriztian Steinmeier
    1

    Hi Jonas,

    One thing you need to know right away is that an XSLT file must be a wellformed XML file, so you can't conditionally output e.g. a close tag, like you're trying to.

    You need to think differently about the output you're trying to generate - I've answered a couple of similar posts - one that fits your desired output would be this one, which explains how to go about generating table rows.

    Hope it helps - otherwise, let us know!

    /Chriztian

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies