Autor Zpráva
Vitality77
Profil *
Dobrý den,
Snažím se o vložení obrázku do xml souboru.. poradte prosím.
Mám xml soubour:
<!-- Edited by XMLSpy® -->
<catalog>
<prsteny>
  <panske> 
    <prsten>
      <id>9015-05149</id>
      <foto src="9015.jpg"></foto>
      <popisek1>PRSTEN ZLATÝ S KAMENEM - 13.50 g.</popisek1>
      <popisek2>PRSTEN STŘIBRO S KAMENEM - 10.30 g.</popisek2>
      <cena1>927 kč/ks</cena1>
      <cena2>927 kč/ks</cena2>      
    </prsten>   
    <prsten>
      <id>0206-019800</id>
      <foto src="0206.jpg"></foto>
      <popisek1>PRSTEN CELOZLATY - 8.30 g.</popisek1>
      <popisek2>PRSTEN STŘIBRO - 7.50 g.</popisek2>
      <cena1>3735 kč/ks</cena1>
      <cena2>600 kč/ks</cena2>      
    </prsten>    
    <prsten>
      <id>0109-009600</id>
      <foto src="0109.jpg"></foto>
      <popisek1>PRSTEN CELOZLATY - 5.50 g.</popisek1>
      <popisek2>PRSTEN STŘIBRO - 5.00 g.</popisek2>
      <cena1>2750 kč/ks</cena1>
      <cena2>400 kč/ks</cena2>      
    </prsten>    
  </panske>
</prsteny>
</catalog>
a následně ho volám:
<xsl:for-each select="catalog/prsteny/panske/prsten">
      <tr>
        <td><xsl:value-of select="id"/></td>
        <td><img><xsl:attribute name="src">/pages/<xsl:value-of select="foto"/></xsl:attribute></img></td>    
        <td><xsl:value-of select="popisek1"/><br/><xsl:value-of select="popisek2"/></td>
        <td><xsl:value-of select="cena1"/><br/><xsl:value-of select="cena2"/></td>
      </tr>
      </xsl:for-each>
Potřeboval bych aby se mi obrázek zobrazil ke každému prstenu jiný ale nedaří se.. Snažil jsem se to napsat takto: <![CDATA[<img width="50" height="50" src="]]><xsl:value-of select="foto/@src"/><![CDATA["/>]]> ale zobrazí se jako text img src a tak dále.. zkoušel jsem i takto : <img><xsl:attribute name="src">/pages/<xsl:value-of select="foto"/></xsl:attribute></img> ale tehle syntaxi nerozumím a nvm jestli to mám dobře.. podařilo se mi zprovoznit pouze timhle způsobem : <img width="50" height="50" src="{/catalog/prsteny/panske/prsten/foto/@src}"/> ale u všech tabulek se zobrazí jeden a tentýž obrázek protože to bere asi ten první z direktorii. Prosím o radu. Díky moc
juriad
Profil
<xsl:attribute name="src">
  <xsl:text>/pages/</xsl:text>
  <xsl:value-of select="foto/@src" />
</xsl:attribute>
Vitality77
Profil *
juriad:
Já to pořád nechápu.. mám to vložit do xsl souboru? vložím a nic se neděje.. mohl byste mi vysvětlit co vlastně dělají dané řádky? v foto/@src je uložen obrazek= blabla.jpg a v xsl souboru potřebuju napsat kod tak aby při volání v html se zobrazil ten daný obrazek.. ted to mám takto:
<img width="150" height="150" align="center" src="{/catalog/prsteny/panske/prsten/foto/@src}"/> ale zobrazuje pořád stejný obrazek protože cesta je stejná, při zadání cesty jenom na /foto/@src se nic neděje.. co s tím?


<xsl:for-each select="catalog/prsteny/panske/prsten">

        <img width="150" height="150" align="center" src="{/catalog/prsteny/panske/prsten/foto/@src}"/>    
   
      </xsl:for-each>

potřebuju asi něco takového <img width="150" height="150" align="center" src="{<xsl:value-of select="foto/@src"/>}"/>
juriad
Profil
Mě to funguje, používám tento xsl template:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
        <xsl:for-each select="catalog/prsteny/panske/prsten">
            <tr>
                <td>
                    <xsl:value-of select="id" />
                </td>
                <td>
                    <img>
                        <xsl:attribute name="src">
                            <xsl:text>/pages/</xsl:text>
                            <xsl:value-of select="foto/@src" />
                        </xsl:attribute>
                    </img>
                </td>
                <td>
                    <xsl:value-of select="popisek1" />
                    <br />
                    <xsl:value-of select="popisek2" />
                </td>
                <td>
                    <xsl:value-of select="cena1" />
                    <br />
                    <xsl:value-of select="cena2" />
                </td>
            </tr>
        </xsl:for-each>

    </xsl:template>
</xsl:stylesheet>

Ty řádky dělají přesně to co mají. Přidají atribut src, jehož hodnota bude text "/pages/" následovaný hodnotou atributu src elementu foto.
Před foto nesmí být lomítko.
Vitality77
Profil *
já jsem ale ... nechápavý.. :) omlouvám se.. nedával jsem tam tag <img></img>.. jsem v xml nováček a tak se znažím ho poznat, děkují moc už je to vyřešený :)
Vitality77
Profil *
Můžu se ještě jednou obrátit ? :) určitě to bude jednoduchým řešením ale na internetu jsem se nedohledal.. jde o to že bych chtěl volat pomoci javascriptu <prsten/> kde je id třeba 9015-05149.. aby to vypsalo všechny podbody toho prstenu.. dokopal jsem se k tomuhle:
<<!DOCTYPE html>
<html>
<body>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}
function barabara()
{
xml=loadXMLDoc("pages/catalog.xml");
path="/catalog/prsteny/panske/prsten/cena1"
// code for IE
if (window.ActiveXObject)
{
var nodes=xml.selectNodes(path);

for (i=0;i<nodes.length;i++)
  {
//   document.write(nodes[i].getElementsByTagName("popisek1")[0].childNodes[0].nodeValue);
  document.write(nodes[i].childNodes[0].nodeValue);
  document.write("<br>");
  }
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE,null);
var result=nodes.iterateNext();

while(result)
  {
  document.write(result.childNodes[0].nodeValue);
  document.write("<br>");
  result=nodes.iterateNext();
  }
}
}
</script>

<button type="button" onclick="barabara()">Click</button>
</body>
</html>
výše uvedený kod vypiše první cena1 když tomu dám podminku /catalog/prsteny/panske/prsten[id=9015-05149]/cena1 tak vypíše cena1 kde je dané id.. ale já potřebuju vypsat všechny parametry nejen cena1.. s těmi nodes a childenodes si nevím rady...:(
juriad
Profil
xpath dotaz bude: /catalog/prsteny/panske/prsten[id=9015-05149]
výsledkem evaluate/selectNodes bude jeden Node (ke kterému se nejspíš budeš muset proiterovat)
A následně už budeš používat čistě DOMové atributy https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMNode#Attributes pro výpis celého stromečku.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: