Xml select=element[@attribute=';$variable';]的XSLT xsl值返回空值
我知道这个问题已经被回答了好几次了,但由于某种原因,这对我不起作用。 因此,我想要实现的是通过使用元素的属性值访问元素来输出元素的内容,而不是为属性声明特定值,如:Xml select=element[@attribute=';$variable';]的XSLT xsl值返回空值,xml,variables,xslt,Xml,Variables,Xslt,我知道这个问题已经被回答了好几次了,但由于某种原因,这对我不起作用。 因此,我想要实现的是通过使用元素的属性值访问元素来输出元素的内容,而不是为属性声明特定值,如: <xsl:value-of select="title[@attribute='value']"/> 所需输出: <xsl:template match="element95 "> <xsl:choose> <xsl:when test="@atrib
<xsl:value-of select="title[@attribute='value']"/>
所需输出:
<xsl:template match="element95 ">
<xsl:choose>
<xsl:when test="@atributename1">
<xsl:variable name="keyb" select="substring(@secondatribute,1,4)"/>
<xsl:variable name="keyval" select="substring(@atributename1, 0,6)" />
<xsl:variable name="keyc">
<xsl:value-of select="'upper-case($keyval)'"/></xsl:variable>
<a href="#{$keyc}"><xsl:value-of select="($keyb)"/>.0(<xsl:value-of select="//element1 [@atributename1=($keyc)]"/>)</a>
</xsl:when>
</xsl:choose>
1.0()
1.0(text)
您的问题取决于字符串文字
<xsl:value-of select="//title[@attribute='$variable']"/>
表示“我希望属性的值成为实际字符串“$variable”
因此,您要使用:
<xsl:value-of select="//title[@attribute= $variable]"/>
但是,您在设置变量时也犯了以下错误:
<xsl:variable name="keyc">
<xsl:value-of select="'upper-case($keyval)'"/></xsl:variable>
使用:
或者更容易阅读
<xsl:variable name="keyc" select="upper-case($keyval)"/>
并通读xslt中的字符串处理和扩展。您的问题在于字符串文本
<xsl:value-of select="//title[@attribute='$variable']"/>
表示“我希望属性的值成为实际字符串“$variable”
因此,您要使用:
<xsl:value-of select="//title[@attribute= $variable]"/>
但是,您在设置变量时也犯了以下错误:
<xsl:variable name="keyc">
<xsl:value-of select="'upper-case($keyval)'"/></xsl:variable>
使用:
或者更容易阅读
<xsl:variable name="keyc" select="upper-case($keyval)"/>
并通读xslt中的字符串处理和扩展。以下是XSL代码的一些问题:
变量被设置为文本字符串$keyc
。删除单引号以使其被识别为XPath表达式并正确计算'upper-case($keyval)
- 演示中的子字符串(@atributename1,0,6)返回
。现在还不清楚您试图在这里实现什么,但这肯定会导致“值”
以后找不到匹配项,因为XML示例中没有值等于//element1[@atributename1=($keyc)]
的'value'
。您可以将atributename1
参数设置为更高的长度,或者在将substring()
与@atributename1
进行比较时使用相同长度的$keyc
substring()
变量被设置为文本字符串$keyc
。删除单引号以使其被识别为XPath表达式并正确计算'upper-case($keyval)
- 演示中的子字符串(@atributename1,0,6)返回
。现在还不清楚您试图在这里实现什么,但这肯定会导致“值”
以后找不到匹配项,因为XML示例中没有值等于//element1[@atributename1=($keyc)]
的'value'
。您可以将atributename1
参数设置为更高的长度,或者在将substring()
与@atributename1
进行比较时使用相同长度的$keyc
substring()
]
缺失。您能提供一个最小的XSL样式表和一个产生此问题的测试文档吗?@Eugenios您的最后一个代码片段看起来不错,因此,如果看不到最小但完整的示例来演示problem@Eugenios您得到了空白输出,因为$keyc
值设置为文本字符串'upper-case($keyval)
;没有@atributename1
匹配$keyc
值…没有为我编译的值,]
丢失。您能提供一个最小的XSL样式表和一个产生此问题的测试文档吗?@Eugenios您的最后一个代码段看起来不错,因此,如果看不到最小但完整的示例来演示problem@Eugenios您得到了空白输出,因为$keyc
值设置为文本字符串'upper-case($keyval)
;没有@atributename1
匹配$keyc
值。。。
<xsl:variable name="keyc" select="upper-case($keyval)"/>