字符串比较时 xslt 中的 if 条件出错
Getting error for if condition in xslt on string comparison
我正在尝试将节点的值与字符串进行比较,但它抛出如下错误:
ORA-06550:line 264, column 40: PLS-00103: Encountered the symbol "Y"
when expecting one of the following:
_= - + ; at in is mod remainder not rem
<> or!= or ~=>=<=<> and or like like2
like4 likec between || multiset member submultiset
The symbol " was inserted before "Y" to continue.
下面是我的代码:
<xsl:if test="/email/threshold/text() = 'Y'">
如果我从 "Y" 中删除单引号,它将不满足条件。我错过了什么?
使用下面的代码也不起作用。
<xsl:if test="not(normalize-space(email/threshold)=N)">
可能的解释是您显示的片段是字符串文字的一部分,在这种情况下,您需要转义 Y
周围的单引号(因此第一个单引号不是解释为该字符串的结尾,使 Y
孤立在字符串之外):
<xsl:if test="/email/threshold/text() = ''Y''">
或使用 the alternative quoting mechanism,因此不需要转义。
你可以用一个简单的匿名块看到同样的事情:
declare
x varchar2(200);
begin
x:='...
<xsl:if test="/email/threshold/text() = 'Y'">
...';
end;
/
Error report -
ORA-06550: line 5, column 42:
PLS-00103: Encountered the symbol "Y" when expecting one of the following:
...
但其中任何一个都可以编译:
declare
x varchar2(200);
begin
x:='...
<xsl:if test="/email/threshold/text() = ''Y''">
...';
end;
/
declare
x varchar2(200);
begin
x:=q'|...
<xsl:if test="/email/threshold/text() = ''Y''">
...|';
end;
/
.. 后者使用柱形符号 |
作为 quote_delimiter.
我正在尝试将节点的值与字符串进行比较,但它抛出如下错误:
ORA-06550:line 264, column 40: PLS-00103: Encountered the symbol "Y" when expecting one of the following:
_= - + ; at in is mod remainder not rem <> or!= or ~=>=<=<> and or like like2 like4 likec between || multiset member submultiset The symbol " was inserted before "Y" to continue.
下面是我的代码:
<xsl:if test="/email/threshold/text() = 'Y'">
如果我从 "Y" 中删除单引号,它将不满足条件。我错过了什么? 使用下面的代码也不起作用。
<xsl:if test="not(normalize-space(email/threshold)=N)">
可能的解释是您显示的片段是字符串文字的一部分,在这种情况下,您需要转义 Y
周围的单引号(因此第一个单引号不是解释为该字符串的结尾,使 Y
孤立在字符串之外):
<xsl:if test="/email/threshold/text() = ''Y''">
或使用 the alternative quoting mechanism,因此不需要转义。
你可以用一个简单的匿名块看到同样的事情:
declare
x varchar2(200);
begin
x:='...
<xsl:if test="/email/threshold/text() = 'Y'">
...';
end;
/
Error report -
ORA-06550: line 5, column 42:
PLS-00103: Encountered the symbol "Y" when expecting one of the following:
...
但其中任何一个都可以编译:
declare
x varchar2(200);
begin
x:='...
<xsl:if test="/email/threshold/text() = ''Y''">
...';
end;
/
declare
x varchar2(200);
begin
x:=q'|...
<xsl:if test="/email/threshold/text() = ''Y''">
...|';
end;
/
.. 后者使用柱形符号 |
作为 quote_delimiter.