【问题标题】:XSLT if expression syntax, combining more than one expressionXSLT if 表达式语法,组合多个表达式
【发布时间】:2012-05-15 16:23:52
【问题描述】:

尝试使用 <xsl:if test="expression"> 组合一个 if 语句,我想将多个表达式放在一起,以执行操作顺序,例如这个伪代码:

if (Number != '' and (Name != '' or PreferredName != '')) {// code here}

基本上我想在<xsl:if> 中执行此操作:

<xsl:if text="Number != '' and (Name != '' or PreferredName != '')">

但我不确定expression 的语法,我认为我不能像那样做(),因为我在任何地方都没有看到它。我在网上找不到表达式语法,可能是 XPath,但我不确定 XPath 是否支持() 对表达式进行分组。我不是 XSL/XML/XSD 方面的专家,所以我不知道表达式是 XPath 还是什么。

如果可能的话,我宁愿不使用嵌套的&lt;xsl:if&gt; 语句,并且希望坚持使用&lt;xsl:if&gt; 而不是&lt;xsl:choose&gt;

我确定这可能是一个简单的答案,但有点卡在这里。谢谢。

【问题讨论】:

  • 你试过只使用括号吗?
  • 我看的不是我的作品,我会做一个简单的例子并报告回来。
  • 是的,试过了,谢谢。 “()”按预期工作。我认为它会,但同样,这不是我的代码,应该像我刚才那样单独测试它。
  • 警告:如果!= 运算符的任何参数可能是节点集,请不要使用它——你会感到困惑和不受欢迎,非- 直观的结果。学会尽可能避免使用!=。而是使用:not(x = someValue) .

标签: xml xslt xpath


【解决方案1】:

初学者的条件语句xsl:if 需要xsl:template 或其他xsl 元素作为父元素。
语法将类似于以下内容:

<xsl:template>
    ... preliminary xsl statements ...
    <xsl:if test="Number != '' and (Name != '' or PreferredName != '')">
        ... further xsl statements (the code you were referring to ...
    </xsl:if>
    ... other xsl stataments ...
</xsl:template>

进一步建议:研究 xslt 的使用,特别是模板及其应用(以及某种自动循环)。

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 2023-04-08
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多