在XSLT中使用多个嵌套属性

在XSLT中使用多个嵌套属性,xslt,Xslt,在XSL中构造嵌套属性的最佳方法是什么 我的问题是onmouseover是一个属性,而img的src是一个属性。生成器给出的当前错误为: 不能在“属性”类型的节点内构造“元素”类型的项。 我曾经遇到过多个属性的问题,这些属性本来是我首选的路线,但会抛出一个错误: 在添加文本、注释、pi或子元素节点后,无法将属性和命名空间节点添加到父元素。 此后,我尝试了以下解决方法,但没有成功 <xsl:template name="Item3"> <xsl:param name="ItemI

在XSL中构造嵌套属性的最佳方法是什么

我的问题是onmouseover是一个属性,而img的src是一个属性。生成器给出的当前错误为:

不能在“属性”类型的节点内构造“元素”类型的项。

我曾经遇到过多个属性的问题,这些属性本来是我首选的路线,但会抛出一个错误:

在添加文本、注释、pi或子元素节点后,无法将属性和命名空间节点添加到父元素。

此后,我尝试了以下解决方法,但没有成功

<xsl:template name="Item3">
<xsl:param name="ItemID" />

<xsl:variable name="IMGSRC">
  <xsl:choose>
    <xsl:when test="$ItemID = 'ST-18/NM/NM/36'">
      <xsl:value-of select="concat('imagesCategories/','ST-18-NM-NM-36','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/NM/NM/48'">
      <xsl:value-of select="concat('imagesCategories/','ST-18-NM-NM-48','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/NM/NM/72'">
      <xsl:value-of select="concat('imagesCategories/','ST-18-NM-NM-72','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/SMAM/SMAM/12'">
      <xsl:value-of select="concat('imagesCategories/','ST18-SMAM-SMAM-12','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/SMAM/SMAM/24'">
      <xsl:value-of select="concat('imagesCategories/','ST18-SMAM-SMAM-24','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/SMAM/SMAM/36'">
        <xsl:value-of select="concat('imagesCategories/','ST18-SMAM-SMAM-36','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/SMAM/SMAM/48'">
        <xsl:value-of select="concat('imagesCategories/','ST18-SMAM-SMAM-48','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/SMAM/SMAM/60'">
        <xsl:value-of select="concat('imagesCategories/','ST18-SMAM-SMAM-60','.jpg')"/>
    </xsl:when>
    <xsl:when test="$ItemID = 'ST-18/SMAM/SMAM/72'">
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="concat('imagesCategories/',$ItemID,'.jpg')"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>
<xsl:choose>
  <xsl:when test="Items/Item[@ItemID=$ItemID]">
    <xsl:attribute name="onmouseover">
      <xsl:text>ddrivetip('</xsl:text>
      <img src="{$IMGSRC}"/>

      <br />
      <b>
        <xsl:value-of select="Items/Item[@ItemID=$ItemID]/@ItemID" />
      </b>
      <br />
      <b>
        <xsl:value-of select="Items/Item[@ItemID=$ItemID]/@ItemDescription" />
      </b>
      <br />
      <br />
      <xsl:text>Price (01-09): </xsl:text>
      <xsl:value-of select="Items/Item[@ItemID=$ItemID]/@PriceLevel1" />
      <br/>
      <xsl:text>Price (10-24): </xsl:text>
      <xsl:value-of select="Items/Item[@ItemID=$ItemID]/@PriceLevel2" />
      <br/>
      <xsl:text>Price (25-49): </xsl:text>
      <xsl:value-of select="Items/Item[@ItemID=$ItemID]/@PriceLevel3" />
      <br/>
      <xsl:text>Qty In Stock: </xsl:text>
      <xsl:value-of select="Items/Item[@ItemID=$ItemID]/@QtyOnHand" />
      <br />
      <br />
      <xsl:text>Click </xsl:text>
      <b>
        <xsl:text>"BUY!"</xsl:text>
      </b>
      <xsl:text> to add this item to your shopping cart</xsl:text>
      <xsl:text>', '', '300')</xsl:text>

    </xsl:attribute>

地址提示('




价格(01-09):
价格(10-24):
价格(25-49):
库存数量:

点击 “买!” 将此项目添加到您的购物车 ', '', '300')
有一些附加代码,然后是正确的结束标记。
谢谢大家

看起来您正试图将html作为字符串传递给
ddrivetip
函数。但是,您将这些节点添加为节点而不是文本,并且无法将节点添加到属性中,因此一种解决方案是将节点设置为文本(您还必须转义括号和双引号)


但是,您正在将大量信息放入onmouseover事件中,这是不推荐的。与您当前所做的不同,我将创建一个带有id的隐藏元素,该id将您的itemId与html内容合并,然后根据需要在onmouseover事件中显示该元素。

看起来您正试图将html作为字符串传递给
ddrivetip
函数。但是,您将这些节点添加为节点而不是文本,并且无法将节点添加到属性中,因此一种解决方案是将节点设置为文本(您还必须转义括号和双引号)


但是,您正在将大量信息放入onmouseover事件中,这是不推荐的。而不是你现在正在做的事情,我将创建一个隐藏元素,该元素的id将您的itemId与html内容合并,然后根据需要在onmouseover事件中显示该元素。

使用CDATA节,以便XSLT处理器将img标记解释为文本节点的一部分,而不是试图将元素节点插入属性(XML规范禁止使用)



使用CDATA节,以便XSLT处理器将img标记解释为文本节点的一部分,而不是试图将元素节点插入属性(XML规范禁止这样做)



嵌套属性???它们在HTML或XML中不存在,那么为什么XSLT能够创建它们呢?您可能想向我们展示一个您想要创建的HTML或XML的示例,也许您想要创建一些可行的东西,只有您的术语“嵌套属性”是错误的。嵌套属性???它们在HTML或XML中不存在,所以为什么XSLT应该能够创建它们?您可能想向我们展示一个您想要创建的HTML或XML的示例,也许您想要创建一些可行的东西,但您的术语“嵌套属性”是错误的。
<xsl:attribute name="onmouseover">
  <xsl:text><![CDATA[ddrivetip('<img src="]]></xsl:text>
  <xsl:value-of select="$IMGSRC" />
  <xsl:text><![CDATA["/>

      <br />

  ...