XSLT变量未被识别

4
我以前使用过XSLT变量,但出于某种原因,我无法让样式表看到一个已分配的变量。当我复制示例代码时,它似乎可以工作,所以肯定是我做错了什么。以下是代码。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    <xsl:template match="/JDF">
    <xsl:variable name="customer" 
        select="/JDF/ResourcePool[1]/CustomerInfo[1]/@CustomerID"/>
            <job>
                <jobInfo>$customer</jobInfo>
            </job>
    </xsl:template>
</xsl:stylesheet>

当我运行上述代码时,结果是这样的。
<?xml version="1.0" encoding="UTF-8"?>
<job>
   <jobInfo>$customer</jobInfo>
</job>

我所指的示例代码只是来自W3Schools的一个例子。 - ItalianDadx2
我所指的示例代码只是来自W3Schools的一个例子。 - ItalianDadx2
只是一个关于 [visual-studio-code] 标签的注意事项 - 如果您使用了 XSLT/XPath 扩展,您将会看到以下警告标志:
  1. xsl:variable 扩展中的 'customer' 名称将会变灰(因为它未被使用)
  2. $customer 在变量引用时将会有不正确的语法高亮显示
  3. 在 'jobInfo' 元素内将无法获得 XPath 的自动补全功能
- pgfearo
1个回答

4

XSLT 1.0, 2.0

更改

<jobInfo>$customer</jobInfo>

<jobInfo>
  <xsl:value-of select="$customer"/>
</jobInfo>

XSLT 3.0+

如果启用了文本值模板(例如使用xsl:stylesheet/@expand-text="yes"),那么您可以使用以下方法:

<jobInfo>{$customer}</jobInfo>

谢谢!我感觉自己像个白痴! - ItalianDadx2
谢谢!我感觉自己像个白痴! - ItalianDadx2
谢谢!我感觉自己像个白痴! - undefined
1
不客气。评估上下文可能很难跟踪 - 这是一个常见的错误。 - kjhughes
1
不客气。评估上下文有时很难跟上,这是一个常见的错误。 - kjhughes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接