开发者

how to add xsl attribute

开发者 https://www.devze.com 2023-01-08 09:39 出处:网络
I have an xml with img ta开发者_运维百科g <img> source </img> I want to generate: <img src=\"source.jpg\">

I have an xml with img ta开发者_运维百科g

<img>
source
</img>

I want to generate:

<img src="source.jpg">

I tried something like that:

<img>
<xsl:attribute name="src">
  <xsl:text>
        <xsl:value-of select="node()" />.jpg
      </xsl:text>
    </xsl:attribute>
</img> 

but it doesng work


Use:

<img src="{normalize-space()}.jpg"/>

This assumes the <img> element is the current node.


The reason why what you are doing does not work is that you cannot evaluate XSLT expressions inside of the <xsl:text> element.

<xsl:text> can only contain literal text, entity references, and #PCDATA.

If you move the <xsl:value-of> outside of the <xsl:text>, then the following will work:

    <img>
        <xsl:attribute name="src">
            <xsl:value-of select="node()" />
            <xsl:text>.jpg</xsl:text>
        </xsl:attribute>
    </img>

However, selecting <xsl:value-of select="node()> for the <img> in your example will include the carriage returns and whitespace characters inside of the <img> element, which is probably not what you want in your src attribute value.

That is why Dimitre Novatchev used normalize-space() in his answer. Applying that to the example above:

    <img>
        <xsl:attribute name="src">
            <xsl:value-of select="normalize-space(node())" />
            <xsl:text>.jpg</xsl:text>
        </xsl:attribute>
    </img>

If you get rid of the <xsl:text> as Fabiano's solution suggests, then you could also do this:

    <img>
        <xsl:attribute name="src"><xsl:value-of select="normalize-space(node())" />.jpg</xsl:attribute>
    </img> 


Just remove the tag xsl:text, in this case, you won't need it. Try this:

<img>   
    <xsl:attribute name="src">
        <xsl:value-of select="concat(node(), '.jpg')"/>
    </xsl:attribute>
</img>

I didn't test it, but it should work. =)


<img>
    <xsl:attribute name="src">
        <xsl:value-of select="my_photo/@href" />
    </xsl:attribute>
</img>

<my_photo href="folder/poster.jpg" /> 
0

精彩评论

暂无评论...
验证码 换一张
取 消