我有一些XML数据,我想用XSLT转换为HTML,我大部分都是正确的。我的XML输入的问题是它包含内联if语句 / 布尔表达式,我不知道如何处理。
<section>
<title>My Title</title>
<paragraph>
<phrase class="inline-if">if_xVariable || if_yVariable</phrase>
Show this text if if_xVariable or if_yVariable is true.
</paragraph>
<paragraph>
<phrase class="inline-if">if_xVariable && if_yVariable</phrase>
Show this text if if_xVariable and if_yVariable is true
</paragraph>
<paragraph>
Always show this text
</paragraph>
</section>
我一直在考虑将每个变量名称(例如if_xVariable)的xslt-vairables添加到true / false,并以某种方式检查它们。
你将如何解决这个问题?
更新这是我试过的
<xsl:template match="section/paragraph">
<xsl:variable name="inlineif" select="phrase[@class='inline-if']"/>
<xsl:if test="$inlineif">
<p>
<xsl:value-of select="."/>
</p>
</xsl:if>
</xsl:template>
由于我既没有指定if_xVariable
或if_yVariable
,所以输出应该类似于
<p>
Always show this text
</p>
但我得到了所有段落的输出。
答案 0 :(得分:0)
您可以使用以下
<xsl:if test="expression">
...some output if the expression is true...
</xsl:if>
答案 1 :(得分:0)
这是xsl文件中的代码
标签中的
<xsl:for-each select="persons/person">
<xsl:if test="GenderElementType='combo'">
<select name="gender">
<option>
<xsl:value-of select="Gender"/>
</option>
<xsl:if test="Gender='MALE'">
<option>
FEMALE
</option>
</xsl:if>
<xsl:if test="Gender='FEMALE'">
<option>
MALE
</option>
</xsl:if>
</select>
</xsl:if>
</xsl:for-each>
person.xml如下
<persons>
<person>
<Gender>MALE</Gender>
<GenderElementType>radio</GenderElementType>
</person>
答案 2 :(得分:0)
XSLT没有内置的表达式动态评估。 this question的答案中讨论了可能的解决方案。