我有一个简单的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="form.xsl"?>
<x>
<y>Hello</y>
</x>
Run Code Online (Sandbox Code Playgroud)
和form.xsl
:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output encoding="UTF-8" method="xml" indent="yes"/>
<xsl:variable name="topLevel">
<xsl:variable name="inner" select="'Hi'" />
<xsl:value-of select="$inner"/>
</xsl:variable>
<xsl:template match="/" >
<xsl:value-of select="$topLevel" />
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
我正在使用JRE 1.8,
,当我使用 转换 XML 时javax.xml.transform.Transformer
,我在变量上收到循环引用错误topLevel
。
Circular variable/parameter reference in '[variable(topLevel)]
Run Code Online (Sandbox Code Playgroud)
我发现已经有一个与此相关的问题记录在:JIRA,但不确定是否已修复。
提供了各种解决方法,但没有提供解决方案。
注意:我没有包含任何第三方 jar,并且使用默认的 Transformer 实现。
小智 0
该问题是由于(全局)变量中的变量定义造成的。
如果移动此行 <xsl:variable name="inner" select="'Hi'" />
在“topLevel”定义之外,那么您的代码可能会工作。
这种事情在 Xalan 2.7.0 中没问题,但在 2.7.1/2 中会触发错误消息
我写这篇文章是因为我今天遇到了同样的问题,这个答案在谷歌中排名第一,尽管它已经有 7 年历史了。
我无法告诉您为什么引入 Xalan 行为的这种变化,只是我观察到了同样的事情,这是我找到的解决方法
归档时间: |
|
查看次数: |
1559 次 |
最近记录: |