XSLT:使用“value-of”时保持结构

时间:2015-05-19 15:28:35

标签: xslt

假设我在变量中有以下内容:

<xsl:variable name="Fruits">
 <FRUIT>
   <TYPE> APPLE </TYPE>
   <COLOUR> RED </COLOUR>
   <SIZE> 5 </COLOUR>
 </FRUIT>
</xsl:variable>

然后我可以很容易地抓住属性,即:

<xsl:variable name="FirstColour" select="$Fruits/FRUIT[1]/COLOUR"/>

但是假设我想选择是否将我的Fruits变量或Vegetables变量用于以后的条件:

<xsl:variable name="Food">
  <xsl:choose>
    <xsl:when test="GoFruit">
      <xsl:value-of select="$Fruits" />
    </xsl:when>
    <xsl:when test="GoVeg">
      <xsl:value-of select="$Vegetables" />
    </xsl:when>
  </xsl:choose>
</xsl:variable>

我无法再通过food var访问我的水果属性,因为"xsl:value-of"函数会使结构崩溃,这意味着我无法做到:

<xsl:value-of select="$Food/FRUIT[1]/COLOUR"/>

有没有办法保留结构(除了“价值”之外的东西)?

1 个答案:

答案 0 :(得分:2)

你应该使用<xsl:copy-of>代替。这将创建结构而不是评估节点值。

因此您将使用:

 <xsl:copy-of select="Fruits" />

你应该检索输出中的水果或蔬菜结构。