xsl:variable的应用和赋值的解析,不同赋值的类型不同

Posted breakyizhan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xsl:variable的应用和赋值的解析,不同赋值的类型不同相关的知识,希望对你有一定的参考价值。

[

xsl:variable的应用和赋值的解析,不同赋值的类型不同 。xsl:variable是xslt定义的变量,不过这个变量和我们平时的编程有些不一样,就是给这个变量赋值之后,这个变量就没办法改变了,可以先看一些简单的例子来了解下:

<xsl:variable name="Room" select="‘Single Room‘" />

上面的变量Room的值就是Single Room了,没办法改变了。简单的定义方法有很多种,上面这个例子定义的就是一个String类型的变量。下面我们来开始了解一下比较难的variable的定义方法吧!

<xsl:variable name="RInfo" select="$descContent/Room[@Code=$roomCode]"/>

<xsl:variable name="RInfo">
<xsl:value-of select="$descContent/Room[@Code=$roomCode]"/>
</xsl>

xslt中,上面这两个variable是不一样的,前者是一个node-set,选择的是整个节点。后者是一个value,是一个string类型的,就是把node里面的value转化成string类型。所以有的同学想要说改变一下这个variable的值,变成可以选择的,写成下面这样子:

<xsl:variable name="RInfo">
<xsl:choose>
<xsl:when test="/SourceDoc/@BrandCode=‘Break易站‘">
<xsl:value-of select="$descContent/Room[@ID=$HCDroomID]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$descContent/Room[@Code=$roomCode]"/>
</xsl:otherwise>
</xsl:choose>
</xsl>

这个样子就会报错了。而且在XPath 1.0中没有条件表达式,最好的解决办法是能搬到xPath 2.0上面去,这样很多问题都会解决了。或者可以用下面这个办法,就是当里面的条件等于HCDroomTypeID或者roomTypeCode的时候,都会选择这个节点。这样子就不错造成系统报错。

<xsl:variable name="RInfo" select="$descContent/Room[@Code=$roomCode or @ID=$HCDroomID ]"/>

但是有时候需要的不只是@Code这个属性,还需要@ID这个属性,其实也是一样的:

上面这段,能选择到的node-set,除非@code和@ID没有值,不然都会找到这个node-set。如果大家的需求,非要用条件选择的话,建议用call-template.

variable的Boolean布尔值


<xsl:variable name="isNew" select="count($RInfo) = 0 or $isClone"/>

<xsl:variable name="isNew">
<xsl:value-of select="count($roomInfo) = 0 or $isClone"/>
</xsl>

上面两个variable有区别么?当然有区别呀!第一个是Boolean布尔值,第二个是String类型的。但这种布尔值遇到条件选择的话,应该怎么办呢?还是很好解决的~~

<xsl:variable name="isNewValue">
<xsl:choose>
<xsl:when test="/SourceDoc/@BrandCode=‘Break易站‘">
<xsl:value-of select="count($HCDroomInfo) = 0 or $isClone"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="count($roomInfo) = 0 or $isClone"/>
</xsl:otherwise>
</xsl:choose>
</xsl>
<xsl:variable name="isNew" select="$isNewValue = ‘true‘"/>

上面这种解决方法比较简单粗暴,不过还是能够完美解决的,代码能简单就简单。这里还是要吐槽一下,是谁设置xsl中变量赋值之后就不能改了,要不然,就不用那么折腾了,不能改还叫做变量,估计定义这个xml的人也是有才。

本文内容来自:xsl:variable的应用和赋值的解析,不同赋值的类型不同 – Break易站


---Author: Arvin Chen ---Web Address: www.breakyizhan.com (Break易站)

]
转载请保留页面地址:https://www.breakyizhan.com/xml/363.html

以上是关于xsl:variable的应用和赋值的解析,不同赋值的类型不同的主要内容,如果未能解决你的问题,请参考以下文章

python赋值是啥?

memset到底能不能给非字符型数组赋初值啊! 我在网上下一程序,里面对整型数组赋值为-1 居然可行

C语言 NULL赋结构体指针变量

timersmanager 解析

Verilog堵塞赋值与非堵塞赋值

java所有变量定义时都要赋初值吗????