Comment ajoutez-vous une image?
J'ai un simple document XML qui contient les informations de l'image. J'ai besoin de le transformer en HTML -- simple, non? Cependant, lorsque j'utilise le XSL ci-dessous, il explose avec l'erreur "Ne peut pas écrire un nœud d'attribut lorsque aucun élément balise de début est ouvert." Je ne vois pas où la balise d'ouverture est -- des idées?
XML:
<root> <HeaderText> <HeaderText>des examens de Dan</HeaderText> </HeaderText> <Image> <img width="100" height="100" alt="FPO dame" src="/uploadedImages/temp_photo_small.jpg"/> </Image> <BodyText> <p>Ceci est un test de la corps du texte<br /></p> </BodyText> <ShowLinkArrow>false</ShowLinkArrow> </root>
XSL:
<xsl:stylesheet version="1.0" extension-element-prefixes="msxsl" exclude-result-prefixes="msxsl js dl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:js="urn:custom-javascript" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:dl="urn:datalist"> <xsl:output method="xml" version="1.0" omit-xml-declaration="oui" indent="yes" encoding="utf-8"/> <xsl:template match="/" xml:space="preserve"> <img> <xsl:attribute name="largeur"> 100 </xsl:attribute> <xsl:attribute name="taille"> 100 </xsl:attribute> <xsl:attribute name="classe"> CalloutRightPhoto </xsl:attribute> <xsl:attribute name="src"> <xsl:copy-of select="/root/Image/node()"/> </xsl:attribute> </img> </xsl:template> </xsl:stylesheet>
source d'informationauteur Danimal
Vous devez vous connecter pour publier un commentaire.
Juste pour clarifier le problème, ici l'erreur est dans le code suivant:
L'instruction xsl:copy-of prend un nœud ou un nœud et fait une copie de celui - ci- de la sortie d'un nœud ou un nœud. Toutefois, un attribut ne peut pas contenir un nœud, seulement une valeur textuelle, donc xsl:value-of serait une solution possible (ce qui renvoie la valeur textuelle d'un nœud ou un ensemble de nœuds).
Une période BEAUCOUP plus courte de la solution (et peut-être plus élégant) serait la suivante:
L'utilisation de la {} dans l'attribut est appelé une Valeur d'Attribut de Modèle, et peut contenir n'importe quel expression XPATH.
Noter, le même XPath peut être utilisé ici comme vous l'avez utilisé dans le xsl_copy-comme il sait prendre de la valeur textuelle dans une Valeur d'Attribut de Modèle.
Ne pourrait-il pas être:
? Il semble que vous essayez de copier la totalité de l'Image/img nœud à l'attribut @src
Afin d'ajouter des attributs, XSL veut
au lieu de simplement
Bien que, oui, si vous êtes juste de copier l'élément que-est, vous n'avez pas besoin de tout cela.
Jamais l'esprit, je suis un idiot. J'ai juste besoin de
<xsl:value-of select="/root/Image/node()"/>
L'autre option à essayer est un simple
c'est à dire sans {} mais au lieu de donner directement le chemin de l'image