我目前正在尝试从XSLT 1.0升级到XSLT 2.0.我在以前使用XSLT 1.0的模板中有以下内容: -
<xsl:template name="some_t">
<xsl:param name="some_numeric_param"/>
<xsl:if test="$some_numeric_param != ''">
<xsl:attribute name="some_name">
<xsl:value-of select="$some_numeric_param"/>
</xsl:attribute>
</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
现在,有三种情况我称之为模板: -
<xsl:call-template name="some_t">
<xsl:with-param name="some_numeric_param" select="floor(number(./@attr1) div 20)"/>
</xsl:call-template>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,基本上内部模板只会创建名为"some_name"的属性,如果在源文档中给出了名为"attr1"的属性.
另外,我可以称之为另一种情况是没有这个参数: -
<xsl:call-template name="some_t">
</xsl:call-template>
Run Code Online (Sandbox Code Playgroud)
所以我基本上想要它做的是当我传入一个参数然后创建一个属性,否则不要.无论我的样式表是否正确,这都适用于XSLT 1.0,但在XSLT 2.0中它给出了一个错误:
Error on line 195 of movwin.xsl:
XPTY0004: Cannot compare xs:double to xs:string
Transformation failed: Run-time errors were reported
Run Code Online (Sandbox Code Playgroud)
有帮助吗?我正在使用Saxon 9.4处理器.
正如问题听起来一样。
如果对于任何给定的版本对都没有通用的方法来回答这个问题,那么有人至少可以回答 gcc 3.4.6 和 ld 2.15.92.0.2 是否彼此对应的具体问题?
谢谢。
我正在看问题:-
我得到的错误与这些问题的提问者完全相同。
是否可以在预处理之前查看ac/c ++文件?或者更确切地说,只是半心半意的预处理?基本上有一个
#define <commonly_used_word> 0
Run Code Online (Sandbox Code Playgroud)
在第三方库标题中,我想弄清楚它在哪里.所以基本上,我只是希望编译器包含所有头文件而不是预处理器.
以下代码是否安全?
class B {
public:
int& b;
B (int& _b) :
b(_b) {}
};
B* foo() {
int a;
return new B(a);
}
Run Code Online (Sandbox Code Playgroud)
foo返回的对象中的引用是否会指向任何内容(因为int a超出范围)或编译是否计算出来?