xslt: substring-before

后端 未结 3 581
春和景丽
春和景丽 2020-12-18 23:44

I have the folowing xml code:

14 3
12
7 3 78

        
相关标签:
3条回答
  • 2020-12-18 23:49

    You can use xsl:when and contains:

    <xsl:attribute name="style">
      <xsl:choose>
        <xsl:when test="contains(weather-code, ' ')">
          background-image:url('../icon_<xsl:value-of select="substring-before(weather-code, ' ')" />.png');
        </xsl:when>
        <xsl:otherwise>background-image:url('../icon_<xsl:value-of select="weather-code" />.png');</xsl:otherwise>
      </xsl:choose>
    </xsl:attribute>
    
    0 讨论(0)
  • 2020-12-18 23:59

    You can use functx:substring-before-if-contains

    The functx:substring-before-if-contains function performs substring-before, returning the entire string if it does not contain the delimiter. It differs from the built-in fn:substring-before function, which returns a zero-length string if the delimiter is not found.

    Looking at the source code, it's implemented as follows:

    <xsl:function name="functx:substring-before-if-contains" as="xs:string?">
    <xsl:param name="arg" as="xs:string?"/>
    <xsl:param name="delim" as="xs:string"/>
    <xsl:sequence select=
      "if (contains($arg,$delim)) then substring-before($arg,$delim) else $arg"/>
    </xsl:function>
    
    0 讨论(0)
  • 2020-12-19 00:07

    You can make sure that there is always a space, maybe not the prettiest but at least it's compact :)

    <xsl:value-of select="substring-before( concat( weather-code, ' ' ) , ' ' )" />
    
    0 讨论(0)
提交回复
热议问题