如果条件在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>
谢谢。
答案 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-
表达式。