如果xslt中的条件如何在行中写入

时间:2019-10-10 06:18:27

标签: xslt

如果条件在xslt中,我想编写内联。我在下面提到了我尝试过的代码。使用时出现错误标记。请注意我不正确的地方

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/contact_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textSize="20sp" />

错误:

<xsl:template match="node">
  <entry type="{if (ancestor::table[@frame='all']) then 'all_rules' else 'header_single{if ($out) then concat('_',$out) else ''}'}">
     <body/>
  </entry>
</xsl:template>

谢谢。

1 个答案:

答案 0 :(得分:0)

使用{ ... }包含表达式是XSLT功能,而不是XPath,因此不能在XPath表达式中使用它。

如果您想像这样嵌套if表达式,则需要在XPath的结构中进行嵌套,我相信在这种情况下,意味着使用concat()

if (ancestor::table[@frame='all']) 
then 'all_rules' 
else concat(
    'header_single',
    if ($out) then concat('_',$out) else ''
)

当然,您需要使用足够高的XSLT版本才能使其正常工作。这在XSLT 1.0中不起作用,因为它仅支持XPath 1.0,而XPath 1.0没有if-表达式。