कैसे एक स्ट्रिंग को xsl में सम्‍मिलित करें: मान का चयन करें = "...?


92
<a>
    <xsl:attribute name="href"> 
     <xsl:value-of select="/*/properties/property[@name='report']/@value" />
    </xsl:attribute>
</a>    

वहाँ एक और स्ट्रिंग को रद्द करने के लिए कोई रास्ता नहीं है

<xsl:value-of select="/*/properties/property[@name='report']/@value"  />

मुझे रिपोर्ट गुण मान के अतिरिक्त href विशेषता के लिए कुछ पाठ पास करने की आवश्यकता है

जवाबों:


148

आप यहाँ संवेदना नामक xpath फ़ंक्शन के बजाए संवेदी नाम का उपयोग कर सकते हैं

<a>
   <xsl:attribute name="href">
      <xsl:value-of select="concat('myText:', /*/properties/property[@name='report']/@value)" />
   </xsl:attribute>
</a>  

बेशक, यह यहाँ पाठ नहीं है, यह एक तत्व या विशेषता का चयन करने के लिए एक और xpath अभिव्यक्ति हो सकता है। और आप समवर्ती अभिव्यक्ति में किसी भी तर्क दे सकते हैं।

ध्यान दें, आप अपनी अभिव्यक्ति को सरल बनाने के लिए विशेषता मान टेम्पलेट्स (घुंघराले ब्रेस द्वारा प्रतिनिधित्व) का उपयोग कर सकते हैं

<a href="{concat('myText:', /*/properties/property[@name='report']/@value)}"></a>

2
@TimC: अच्छा है, लेकिन concat()फ़ंक्शन यहाँ आवश्यक नहीं है।
दिमित्रे नोवाचेव

मेरे पास निम्न टैग है: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>और मैं XSLT में एक छिपी फ़ील्ड बनाना चाहूंगा जो केवल आईडी # लेता है। मैं उसे कैसे प्राप्त कर सकता हूं?
SearchForKnowledge

27

तीन उत्तर:

सरल :

<img>
    <xsl:attribute name="src">
        <xsl:value-of select="//your/xquery/path"/>
        <xsl:value-of select="'vmLogo.gif'"/>
    </xsl:attribute>
</img>

'कॉन्कट' का उपयोग करना:

<img>
    <xsl:attribute name="src">
        <xsl:value-of select="concat(//your/xquery/path,'vmLogo.gif')"/>                    
    </xsl:attribute>
</img>

@TimC द्वारा सुझाए गए शॉर्टकट को अपनाएं

<img src="{concat(//your/xquery/path,'vmLogo.gif')}" />

2
जैसा कि दिमित्रे ने उल्लेख किया है, आपको यहां कॉनसैट की आवश्यकता नहीं है:<img src="{//your/xpath}vmLogo.gif" />
Svish


5

एक स्थिर पाठ स्ट्रिंग को एक चयनित मान के लिए उपयोग करने का सबसे आसान तरीका है तत्व।

<a>
  <xsl:attribute name="href"> 
    <xsl:value-of select="/*/properties/property[@name='report']/@value" />
    <xsl:text>staticIconExample.png</xsl:text>
  </xsl:attribute>
</a>

1

सबसे आसान तरीका है

  <TD>
    <xsl:value-of select="concat(//author/first-name,' ',//author/last-name)"/>
  </TD>

जब XML संरचना है

<title>The Confidence Man</title>
<author>
  <first-name>Herman</first-name>
  <last-name>Melville</last-name>
</author>
<price>11.99</price>

0

सबसे पठनीय समाधान नहीं है, लेकिन आप परिणाम को सादे पाठ के मूल्य से मिश्रित कर सकते हैं:

<a>
  <xsl:attribute name="href"> 
    Text<xsl:value-of select="/*/properties/property[@name='report']/@value"/>Text
  </xsl:attribute>
</a>

1
इसमें कुछ समस्याएं हैं: XSLT निर्देशों के बीच, सफेद स्थान केवल पाठ नोड्स को अनदेखा किया जाता है; लेकिन अब जब आपके पास एक सफेद स्थान नहीं है केवल पाठ नोड ( ' Text'), सफेद स्थान (यहां तक ​​कि नई पंक्ति) आउटपुट होगा।
एलेजांद्रो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.