使用xsl将特定字符替换为小写

时间:2011-07-28 09:26:24

标签: xslt

嗨我有一个xml如下。

<setField identifier=”2”>
      <fieldValues>
       <fieldValue>
        <field>event</field>
        <value>
         <boundVariable>$event1</boundVariable>
        </value>
        <type>java.lang.String</type>
       </fieldValue>
      </fieldValues>
      <variable>append</variable>
     </setField>

我需要转换为以下格式。

<freeForm><text>append.setEvent($event1);</freeForm></text>

我正在尝试以下方法。

   <xsl:template match="setField" name="setFieldTemplate">
   <xsl:element name="freeForm">                    
   <xsl:element name="text">   
   <xsl:value-of select="variable" />
   <xsl:text>.set</xsl:text>
   <xsl:value-of select="concat(translate(substring(field, 1, 1)"/>
   <xsl:text>(</xsl:text>
   <xsl:value-of select="boundVariable"/>
   <xsl:text>);</xsl:text>
   </xsl:element>
   </xsl:element>
   </xsl:template>

这里我的要求是基于我需要生成相应语句的字段名称,如下所示。为此,我需要将字段名称的第一个字符更改为upper,同时生成以下格式。

append.setEvent($事件1);

这里的字段名称是“event”,我需要生成setEvent(我正在使用字符串“set”进行汇总)。但是我需要将fieldname的第一个字母更改为upper(事件中的事件)。我尝试使用上面的模板与翻译功能我面临一些无效的xpath表达。

请提供一些指示来做同样的事情。

2 个答案:

答案 0 :(得分:0)

你想:

            <xsl:value-of select="concat(
                translate(substring(//field, 1, 1),
                'abcdefghijklmnstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
                substring(//field, 2))"/>

您也可能更喜欢:

<xsl:template match="setField">
    <freeForm>                    
        <text>   
            <xsl:value-of select="variable" />
            <xsl:text>.set</xsl:text>
            <xsl:value-of select="concat(
                translate(
                 substring(fieldValues/fieldValue/field, 1, 1),
                 'abcdefghijklmnstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
                substring(fieldValues/fieldValue/field, 2),
                '(',fieldValues/fieldValue/value/boundVariable,');')"/>                   
        </text>
    </freeForm> 
</xsl:template>

答案 1 :(得分:0)

<xsl:value-of select="concat(
                variable,
                '.set',
                translate(substring(//field, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
                substring(//field, 2),
                '(',
                //boundVariable,
                ');'
                )"/>