Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml select=element[@attribute=';$variable';]的XSLT xsl值返回空值_Xml_Variables_Xslt - Fatal编程技术网

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
    变量被设置为文本字符串
    'upper-case($keyval)
    。删除单引号以使其被识别为XPath表达式并正确计算

  • 演示中的子字符串(@atributename1,0,6)返回
    “值”
    。现在还不清楚您试图在这里实现什么,但这肯定会导致
    //element1[@atributename1=($keyc)]
    以后找不到匹配项,因为XML示例中没有值等于
    'value'
    atributename1
    。您可以将
    substring()
    参数设置为更高的长度,或者在将
    @atributename1
    $keyc
    进行比较时使用相同长度的
    substring()


以下是XSL代码的一些问题:

  • $keyc
    变量被设置为文本字符串
    'upper-case($keyval)
    。删除单引号以使其被识别为XPath表达式并正确计算

  • 演示中的子字符串(@atributename1,0,6)返回
    “值”
    。现在还不清楚您试图在这里实现什么,但这肯定会导致
    //element1[@atributename1=($keyc)]
    以后找不到匹配项,因为XML示例中没有值等于
    '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)"/>