2009-07-30 13 views
25

मैं एक XML फ़ाइल से एक्सेल दस्तावेज़ बनाने के लिए एक एक्सएसएलटी स्टाइलशीट का उपयोग कर रहा हूं। मैं जो मूल्य खींच रहा हूं उनमें से एक मैं ऊपरी मामले के रूप में प्रदर्शित करना चाहता हूं। यह कैसे संभव है?एक्सएसएलटी स्टाइलशीट: ऊपरी मामले में पाठ बदलना

+0

संभावित डुप्लिकेट [मैं स्ट्रिंग को ऊपरी- या एक्सएसएलटी के साथ लोअर केस कैसे परिवर्तित कर सकता हूं?] (Http://stackoverflow.com/questions/586231/how-can-i-convert-a-string-to -उपर-या-लोअर-केस-साथ-xslt) – user

उत्तर

54

एक्सएसएलटी 2.0 में एफएन: ऊपरी-केस() और एफएन: लोअर-केस() फ़ंक्शन। हालांकि मामले में आप XSLT 1.0 का उपयोग कर रहे हैं, तो आप) अनुवाद का उपयोग कर सकते (:

<xsl:template match="/"> 
    <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
    <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
    <xsl:value-of select="translate(doc, $smallcase, $uppercase)" /> 
</xsl:template> 
+1

+1, हालांकि यह वही रणनीति है क्योंकि मेरे उत्तर अक्षरों को रखने के उत्तर निश्चित रूप से एक अधिक पुन: प्रयोज्य समाधान है। – Welbog

+0

बिल्कुल सुंदर और आसान :) –

18

आप XSLT 1.0 में translate() फ़ंक्शन का उपयोग कर सकते हैं:

<xsl:value-of select="translate(//some-xpath, 
           'abcdefghijklmnopqrstuvwxyz', 
           'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" /> 

आप भाग्यशाली XSLT 2.0 का उपयोग करने की हो, तो आप upper-case() फ़ंक्शन का उपयोग कर सकते हैं:

<xsl:value-of select="upper-case(//some-xpath)"/> 

देखें अधिक जानकारी के लिए XPath function reference page

+0

+1 ;-) – Tomalak

+3

पूछताछ का नाम अस्पष्ट रूप से फ्रेंच दिखता है ... क्या होता है? (क्षमा करें, मैं विरोध नहीं कर सका ...) – AakashM

+0

@AakashM: यह 'अनुवाद()' फ़ंक्शन के साथ समस्या है। आपको इन सभी चीजों को स्वयं निर्दिष्ट करना होगा। 'ऊपरी-केस()' एक बेहतर विकल्प है लेकिन यह व्यापक रूप से पर्याप्त रूप से समर्थित नहीं है। – Welbog

3

XPath 2.0 में fn:upper-case() है, जो यूनिकोड सही केस मैपिंग भी करता है।

-7

सबसे आसान और स्पष्ट तरीका प्राप्त करने के लिए सीएसएस के माध्यम से है मामला बदल देती है।

निर्माण एक वर्ग है, जैसे:

<span class="upper"> 
    <xsl:value-of select="myTextField" /> 
</span> 

कि यह :)

तुम भी उपयोग कर सकते हैं अन्य रूपांतरण:

.upper { text-transform: uppercase; } 

तो span class के रूप में वर्ग का उपयोग

text-transform: capitalize | uppercase | lowercase | none | inherit 
+3

मुझे विश्वास है कि ओपी एक्सेल फ़ाइल बना रहा था; एचटीएमएल नहीं –

+0

आप एचटीएमएल के माध्यम से एक्सेल फाइलें बना सकते हैं। मेरा मानना ​​है कि यह सीएसएस का सम्मान करेगा, लेकिन मैं 100% निश्चित नहीं हूं। – iconoclast

+0

समाधान दस्तावेज़ में पाठ तत्वों की केस-असंवेदनशील तुलना की अनुमति नहीं देते हैं - जो अक्सर पाठ को एकल, संगत, मामले में मजबूर करने का कारण होता है। यह समाधान केवल परिणाम के आउटपुट प्रतिपादन पर लागू होगा। – Pekka

2

यू एक सभा इस तरह SE: इस प्रकार

<msxsl:script implements-prefix="user" language="C#"> 
<!--{%assembly%}--> 
<![CDATA[ 

public string ToUpper(string stringValue) 
{ 
    string result = String.Empty; 

    if(!String.IsNullOrEmpty(stringValue)) 
    { 
     result = stringValue.ToUpper(); 
    } 

    return result; 
} 
]]> 
</msxsl:script> 

यह कॉल के रूप में: select="user:ToUpper(//root/path)"

यह 1.0 या 2.0 में इस्तेमाल किया जा सकता है।

+0

धन्यवाद सुझाए गए संपादन मेच। – SparrowEatsHawk

संबंधित मुद्दे