XSLT:我不能在src属性中添加别名标记

时间:2017-04-11 20:40:28

标签: xml xslt xslt-1.0

已更新

<img>
  <xsl:element name="xsl:attribute">
    <xsl:attribute name="name">
      src
    </xsl:attribute>
    test.aspx?id=<xslout:value-of select="blah" />
  </xsl:element>
</img>

前面的内容产生我需要的东西,

<img>
  <xsl:attribute name="src">
    test.aspx?id=<xsl:value-of select="blah" />
  </xsl:attribute>
</img>

但还不确定怎么样?任何见解?更简洁?

原帖

帮助将XSL转换为XSL片段:

<img>
  <xsl:attribute name="src">
    <xsl:text>test.aspx?id=</xsl:text><xslout:value-of select="blah" />
  </xsl:attribute>
</img>

我正在尝试将其转换为:

<img src="test.aspx?id=<xsl:value-of select="blah"/> />

但是我没有得到<xsl:value-of select="blah" />部分

我在想这个错吗?因为当我在xslout标记之外移动那个确切的img时,它会生成正确的xsl:value-of

1 个答案:

答案 0 :(得分:1)

您尝试创建的输出不是有效的XML(属性不能包含<"个字符。)

您想要生成的是

<img src="test.aspx?id={blah}" />

您可以使用以下内容执行此操作:

<xsl:template match="xsl:attribute[@name='src']">
  <xsl:attribute name="src">
     <xsl:apply-templates mode="avt"/>
  </xsl:attribute>
</xsl:template>

<xsl:template match="xsl:text" mode="avt">
  <xsl:value-of select="."/>
</xsl:template>

<xsl:template match="xsl:value-of" mode="avt">
  <xsl:text>{</xsl:text>
  <xsl:value-of select="@select"/>
  <xsl:text>}</xsl:text>
</xsl:template>

虽然如果没有更完整地描述您想要实现的内容(并且您的示例代码段不是格式良好的XML),但很难说清楚