如何使用xsl:if获得此结果?

时间:2019-07-04 08:51:30

标签: xslt

如何将xsl:if用于输出类型=标签。我不怎么做if语句语法。

我正在使用xslt 1.0。

<xsl:if test="">                                 
 <xsl:attribute name="type">                                     
   <xsl:value-of select=""/>                                     
 </xsl:attribute>
</xsl:if>

这是资源:

<xxxxx type="str">label</xxxxx>

我喜欢这样输出

<key name="xxxxx" type="label"/>

2 个答案:

答案 0 :(得分:0)

假设您匹配MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("varOne", varOne); parameters.addValue("varTwo", Long.parseLong(varTwo)); parameters.addValue("varThree", varThree); Long employeeId = jdbcTemplate.queryForObject("select employee_id from table_employee where age=:varTwo and marks in (:varOne) and name =:varThree" , Long.class , parameters); 元素,您想要的表达式就是这个

xxxxx

请注意,我不知道其余的XSLT是什么样子,或者您是否正在寻找通用的东西,但是如果您要创建或更改其他属性,则可能想了解Attribute Value Templates。例如...

<xsl:if test="@type='str'">         

应用于此XSLT

<xsl:template match="*">
  <key name="{local-name()}">
    <xsl:if test="@type='str'">                                 
      <xsl:attribute name="type">                                     
        <xsl:value-of select="."/>                                     
      </xsl:attribute>
    </xsl:if>
  </key>
</xsl:template>

以下为输出

<xxxxx type="str">label</xxxxx>

答案 1 :(得分:0)

  

如何将xsl:if用于输出类型=标签。我不知道怎么办   语句语法。

     

我正在使用xslt 1.0。

使用XSLT时,几乎不需要使用任何XSLT条件指令 –当使用该语言的全部功能时,可以(并且应该)避免使用这些指令。

以下是解决问题的一种方法:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

  <xsl:template match="xxxxx[@type='str']">
    <key name="xxxxx" type="{.}"/>
  </xsl:template>
</xsl:stylesheet>

将此转换应用于以下XML文档(未提供!)时:

<t>
    <a/>
    <xxxxx type="str">label</xxxxx>
    <b/>
    <c/>
</t>

产生想要的正确结果:

<key name="xxxxx" type="label"/>