2010-04-18 8 views
5

यह आसान लगता है, लेकिन मेरी "आसान" वाक्य रचना से कोई भी काम:कैसे XSL उपयोग करने के लिए विशेषता नाम = "चौड़ाई"

<xsl:param name="length"/> 
<xsl:attribute name="width">$length</xsl:attribute> 
not 
<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute> 

किसी भी सुझाव?

धन्यवाद

+0

आप इसे पढ़ने में आसान बनाने के लिए अपने नमूना कोड स्वरूपित करना चाहते हो सकता है। "संपादन" लिंक पर क्लिक करें, अपना कोड नमूना हाइलाइट करें और कोड प्रारूप बटन पर क्लिक करें। – Filburt

+0

अच्छा सवाल है, लेकिन आपको अपना कोड प्रारूपित करने की आवश्यकता है (मैंने इस बार आपके लिए यह किया था)। +1। मेरा जवाब देखें, जो दो समाधान प्रदान करता है और उनमें से बेहतर की सिफारिश करता है। :) –

उत्तर

8

<xsl:attribute name="width">$length</xsl:attribute>

यह मान स्ट्रिंग $length साथ एक विशेषता का निर्माण करेगा। लेकिन आप xsl का मान चाहते हैं: param नाम $length

<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>

यहाँ <xsl:value-of> तत्व बंद नहीं है - यह नहीं अच्छी तरह से गठित xml XSLT कोड बनाता है।

समाधान:

उपयोग निम्न में से एक:

  1. <xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>

या

  1. <someElement width="{$length}"/>

पठनीयता और सघनता के लिए, ऊपर 2. उपयोग करने के लिए जब भी संभव हो पसंद करते हैं।

+1

मुझे लगता है कि आपका मतलब xsl है: मान-का, xsl नहीं: मूल्य-का चयन करें? :) – markusk

+0

@markusk: इसे ध्यान में रखने के लिए धन्यवाद। सही किया। –

1

आपको शायद xsl:attribute यहां भी आवश्यकता नहीं है;

<someElement width="{$length}" ... >...</someElement> 
1

आपका पहला विकल्प विफल रहता है क्योंकि चर पाठ नोड्स में विस्तार नहीं कर रहे हैं: यह करने के लिए सबसे आसान तरीका है कुछ की तरह है। आपका दूसरा विकल्प विफल रहता है क्योंकि आप <xsl:value-of-select="..."> पर कॉल करने का प्रयास करते हैं, जबकि उचित वाक्यविन्यास <xsl:value-of select="..."/> है, जैसा कि मानक में Generating Text with xsl:value-of अनुभाग में वर्णित है। आप या के रूप में दूसरों का उल्लेख किया है

<xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute> 

का उपयोग करके अपने कोड को ठीक कर सकते हैं, आप attribute value templates उपयोग कर सकते हैं:

<someElement width="{$length}" ... >...</someElement> 
संबंधित मुद्दे