2012-03-08 23 views
14

को कैपिटल कैसे करते हैं मेरे पास निम्नलिखित xml है।एक्सएसएल - आप पहले अक्षर

<Name> 
    <First>john</First> 
    <Last>smith</Last> 
</Name> 

मैं पहले पत्र को कैपिटल करना चाहता हूं और निम्नलिखित फॉर्मेट में डाल देना चाहता हूं।

<FullName>John Smith</FullName> 

अग्रिम धन्यवाद।

+1

[functx: भुनाने की पहली] (http://www.xsltfunctions.com/xsl/functx_capitalize-first.html) –

उत्तर

25

मैं XSLT 2.0 समाधान:

<xsl:stylesheet version="2.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="/*"> 
    <FullName><xsl:apply-templates/></FullName> 
</xsl:template> 

<xsl:template match="First|Last"> 
    <xsl:sequence select= 
    "concat(upper-case(substring(.,1,1)), 
      substring(., 2), 
      ' '[not(last())] 
     ) 
    "/> 
</xsl:template> 
</xsl:stylesheet> 

जब इस बदलाव प्रदान की XML दस्तावेज़ पर लागू किया जाता है:

<Name> 
    <First>john</First> 
    <Last>smith</Last> 
</Name> 

चाहता था, सही परिणाम उत्पादन किया जाता है:

<FullName>John Smith</FullName> 

II। XSLT 1.0 समाधान:

<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:variable name="vLower" select= 
"'abcdefghijklmnopqrstuvwxyz'"/> 

<xsl:variable name="vUpper" select= 
"'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> 

<xsl:template match="/*"> 
    <FullName><xsl:apply-templates/></FullName> 
</xsl:template> 

<xsl:template match="First|Last"> 
    <xsl:value-of select= 
    "concat(translate(substring(.,1,1), $vLower, $vUpper), 
      substring(., 2), 
      substring(' ', 1 div not(position()=last())) 
     ) 
    "/> 
</xsl:template> 
</xsl:stylesheet> 
0

प्रयास करें:

concat(
    translate(
    substring($Name, 1, 1), 
    'abcdefghijklmnopqrstuvwxyz', 
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
), 
    substring($Name,2,string-length($Name)-1) 
) 
संबंधित मुद्दे