我正在尝试将节点的值与字符串进行比较,但是它会抛出错误,如下所示:
ORA-06550:第264行,第40栏:PLS-00103:遇到符号“Y” 期待以下之一:
_ = - +;在in是mod余数而不是rem <>或!=或〜=> =< =<>或者喜欢喜欢2 like | likec之间的|| multiset成员submultiset 在“Y”之前插入符号“以继续。
以下是我的代码:
<xsl:if test="/email/threshold/text() = 'Y'">
如果我从“Y”中删除单引号,则不满足条件。我错过了什么? 使用下面的代码也行不通。
<xsl:if test="not(normalize-space(email/threshold)=N)">
答案 0 :(得分:1)
可能的解释是,您显示的片段是字符串文字的一部分,在这种情况下,您需要转义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 。