Archief - [XML-XSLT] Substring-before issue

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Sabe

Legacy Member
Hoi,

Ik ga proberen mijn post zo goed mogelijk te structuren dat het volgen niet te ingewikkeld wordt:

Ik heb volgende xml gegevens:

Code:
<root>
.....
<P>
.....
<I>
        <NB_Store_ProductImageInfo>
          <ImageID>166</ImageID>
          <ProductID>1</ProductID>
          <ImagePath>.....\Portals\0\productimages\1_0c15a.jpg</ImagePath>
          <ListOrder>1</ListOrder>
          <Hidden>false</Hidden>
          <Lang>nl-NL</Lang>
          <ImageDesc>Front -</ImageDesc>
          <ImageURL>/Portals/0/productimages/1_0c15a.jpg</ImageURL>
        </NB_Store_ProductImageInfo>
Met de volgende regel in mijn xslt template toon ik de afbeelding:
HTML:
<img src="<xsl:value-of select='./P/I/NB_Store_ProductImageInfo/ImageURL' />" />
Ik krijg daardoor de volgende url:
HTML:
<img src="/Portals/0/productimages/1_0c15a.jpg" />
Nu heb ik een map met thumbnails /Portals/0/productthumbs/.
Ik wil deze ophalen via de xslt maar die zit niet in de xml. Dus doe ik het op de volgende manier.

Code:
  <xsl:variable name="thumburl">       
/Portals/0/productthumbs/<xsl:value-of select="substring-before(substring-after(substring-after(substring-after(substring-after(P/I/NB_Store_ProductImageInfo/ImageURL,'/'),'/'),'/'),'/'),'.')" />_400x0.<xsl:value-of select="substring-after(P/I/NB_Store_ProductImageInfo/ImageURL,'.')" />
</xsl:variable>

<xsl:attribute name="src">
                  <xsl:value-of select="$thumburl" />
</xsl:attribute>
Ik krijg dan:
HTML:
<img width="136" height="194" src="/Portals/0/productthumbs/_400x0.">
Eigenlijk zou ik moeten krijgen:
HTML:
<img width="136" height="194" src="/Portals/0/productthumbs/1_0c15a_400x0.jpg">
Maar hij doet het niet. Ziet iemand waar ik fout zit want ik kijk er dan waarschijnlijk over.

Alvast bedankt.
Ely


----
Mijn volledige template er extra info:

Code:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
  <xsl:variable name="thumburl">       
/Portals/0/productthumbs/<xsl:value-of select="substring-before(substring-after(substring-after(substring-after(substring-after(P/I/NB_Store_ProductImageInfo/ImageURL,'/'),'/'),'/'),'/'),'.')" />_400x0.<xsl:value-of select="substring-after(P/I/NB_Store_ProductImageInfo/ImageURL,'.')" />
</xsl:variable>
  
  <xsl:template match="/root">

     <ul id="mycarousel" class="jcarousel-skin-tango">
      <xsl:for-each select="./item">

        <li>
        <div style="text-align:center; position:relative;">
          <a class="carousellink">
            <xsl:attribute name="href">
              <xsl:value-of select='./link' />
            </xsl:attribute>
            <img width="136" height="194">
              <xsl:attribute name="src">
                  <xsl:value-of select="$thumburl" />
                </xsl:attribute>
            </img>
          </a>
          <br/><br/>
          <div style="text-align:left; margin-left:12px;">
          <span  class="blue"><span class="caps"><xsl:value-of select='./P/NB_Store_ProductsInfo/ProductName' /></span><br />
     <xsl:value-of select='./P/NB_Store_ProductsInfo/Summary' /></span><br/><br/>
          <span class="purple">Partypakket</span><br/>
          <span class="red"><span class="small">Vanaf</span><span class="big"> &#8364; <xsl:value-of select="format-number(./P/M/NB_Store_ModelInfo/UnitCost, '#,###')"/></span></span>
        </div></div>
        </li>

      </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan