Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xsl:在现有XSLT中似乎没有布尔表达式时_Xml_Xslt_Ssis_Xml Parsing - Fatal编程技术网

Xml xsl:在现有XSLT中似乎没有布尔表达式时

Xml xsl:在现有XSLT中似乎没有布尔表达式时,xml,xslt,ssis,xml-parsing,Xml,Xslt,Ssis,Xml Parsing,在我的一个项目中,我必须扩展一些XSLT文件,这些文件是很久以前由某个第三方提供商创建的——换句话说:我不能简单地要求提供商提供更多信息 然而,我偶然发现了以下几点: 在这个项目中,大量的XML文件被解释并加载到数据库中。为了做到这一点,我们使用了类似6个“相互链接”的XSLT文件,这些文件具有大量的模板、变量、条件等。下面的代码块让我头疼: <xsl:variable name="Var1"> <xsl:choose> <xsl:when test="

在我的一个项目中,我必须扩展一些XSLT文件,这些文件是很久以前由某个第三方提供商创建的——换句话说:我不能简单地要求提供商提供更多信息

然而,我偶然发现了以下几点:

在这个项目中,大量的XML文件被解释并加载到数据库中。为了做到这一点,我们使用了类似6个“相互链接”的XSLT文件,这些文件具有大量的模板、变量、条件等。下面的代码块让我头疼:

<xsl:variable name="Var1">
  <xsl:choose>
    <xsl:when test="SomeText">true</xsl:when>
    <xsl:otherwise>false</xsl:otherwise>
  </xsl:choose>
</xsl:variable>

真的
假的
据我所知(如果我没有完全弄错的话),这段代码用于确定新变量“Var1”应该接收哪个值。但是这一部分

<xsl:when test="SomeText">

对我来说没有任何意义
SomeText
不是布尔表达式,不是吗?此外,它不是可以通过test=“”计算的变量、参数或任何东西。所有XSLT文件中唯一具有相同名称“SomeText”的是其中一个模板

那么,
xsl:when
是否可以用这种方式来检查模板是否被调用?或者我是否遵循了错误的线索,并且“SomeText”必须是XML文件中的某个内容

<xsl:when test="SomeText">true</xsl:when>

$Var1
对于上述条件,字符串值为
“true”
,而
为“false”“
否则。

在定义了
Var1
的地方,
SomeText
是否与基于XPath上下文的任何XML中的节点相对应?这是一个有效的检查,如果节点存在,测试将返回
true
,否则
false
,然后在
Var1
@AniketV中设置值。我在任何XML文件中都找不到同名的节点。但我只检查了1000个中的800个。。。是否还有任何其他接收到的节点会使此检查有效?是否也可以检查同名模板?据我所知,被调用的模板依赖于另一个条件。一个模板与SomeText同名…@Tyron78-只有XML中名为
SomeText
的元素的存在才可能将其设置为“true”(即使这样,它也必须是当前匹配节点的子节点)。如果有一个名为
SomeText
的模板,那么它不会有任何区别。可能是编写原始XSLT的人弄糊涂了……?谢谢。如果有
的地方,我会尝试搜索1000个文件,谢谢。如果有

<xsl:variable name="Var1">
  <xsl:choose>
    <xsl:when test="SomeText">true</xsl:when>
    <xsl:otherwise>false</xsl:otherwise>
  </xsl:choose>
</xsl:variable>