2009-01-14 15 views
6

एक्सएसएल कोड इंडेंट करने के लिए आप किस सम्मेलन (यदि कोई हैं) का उपयोग करते हैं?एक्सएसएल/XPath इंडेंटेशन

  • तुम सच में लंबे, जटिल XPaths अपनी पसंद के एक्सएमएल संपादक में
  • आप उन्हें प्लग कर सकते हैं के साथ कैसे पेश करते हैं?
  • क्या कोई खुला स्रोत कोड है जो नौकरी अच्छी तरह से करता है?

कुछ पृष्ठभूमि के लिए, मैं Emacs में nxml मोड का उपयोग करें। अधिकांश भाग के लिए यह ठीक है और आप उन रिक्त स्थानों की संख्या को कॉन्फ़िगर कर सकते हैं जिन्हें बाल तत्वों को इंडेंट किया जाना चाहिए। यह जटिल नहीं है जब जटिल XPaths की बात आती है। अगर मैं अपने कोड में एक लंबा XPath है, मैं यह संरचना यह कुछ इस तरह दिखाई बनाकर यथासंभव पारदर्शी है बनाने के लिए करना ...

<xsl:for-each select="/some 
         /very[@test = 'whatever'] 
         /long[@another-test = perhaps 
               /another 
               /long 
               /xpath[@goes='here']] 
         /xpath" 

हालांकि, मैं वर्तमान में ऐसा करने के लिए मैन्युअल रूप से है के रूप में nxml सिर्फ होगा इसे सभी के साथ संरेखित करें "/ कुछ .."

उत्तर

1

कभी-कभी लंबे समय तक एक्सपैथ से बचा नहीं जा सकता है, भले ही आप फॉर-ईच के बजाए टेम्पलेट्स का उपयोग करें (जैसे आप कर सकते हैं)। यह XSLT/XPath 2.0 में विशेष रूप से सच है:

<xsl:attribute name="tablevel" 
    select="if (following::*[self::topic | self::part]) 
      then (following::*[self::topic | self::part])[1]/@tablevel 
      else @tablevel"/> 

मैं लाइनों के पार एक "सरल" पथ को तोड़ने के लिए नहीं करते हैं, लेकिन ऑपरेटर या सशर्त, पर "अधिक से अधिक" पथ टूट जाएगा।

संपादन के लिए, मैं ऑक्सीजन (जो क्रॉस-प्लेटफार्म है) का उपयोग करता है और यह इस तरह के अंतर को बहुत अच्छी तरह से संभालता है। कभी-कभी यह अनुमान नहीं लगाता कि आप वास्तव में क्या चाहते हैं, लेकिन यह आपके स्थान को फिर से इंडेंट करने के बावजूद अंतरिक्ष को बनाए रखेगा।

+0

पवित्र यिक्स। मुझे लगता है कि मैं समय पर थोड़ा पीछे हूं। – Ishmael

1

मेरी राय में, लंबे xpaths को पढ़ने में कठिनाई होती है और इससे बचा जाना चाहिए। ऐसा करने के 2 तरीके हैं:

  1. स्रोत xml को सरल बनाएं।
  2. बड़े टेम्पलेट्स को छोटे में विभाजित करें।
1

मैं अलग तरह से XSL टूट जाते हैं अगर मैं कठिनाई xpath बयान (जो बहुत बार नहीं है, लेकिन यह कभी कभी होता है) पढ़ रहे हैं ... यह वास्तव में नहीं बल्कि तोड़ने की मेरी तरीकों के समान है हो रही है अन्य भाषाओं के लिए वाक्यविन्यास ... तो सवाल में अपने उदाहरण अधिक कुछ इस तरह हो सकता है:

<xsl:for-each select="/some/very[@test = 'whatever']/long"> 
    <xsl:if test="@another-test = perhaps/another/long/xpath[@goes='here']"> 
    <xsl:for-each select="xpath"> 
     ... result xml .... 
    </xsl:for-each> 
    </xsl:if> 
</xsl:for-each> 
1

लंबे xpaths प्रयोग न करें। प्रत्येक के लिए डुबकी और मैच टेम्पलेट का उपयोग करें। कई टेम्पलेट्स में xpath को तोड़ दें। इनमें से किसी एक की तुलना में तुच्छ मैच टेम्पलेट्स का एक गुच्छा पढ़ने के लिए बहुत आसान है।

+0

क्या यह प्रदर्शन को प्रभावित करेगा, और यदि इसे प्रभावित करता है, तो कितना? – chiborg

+0

@ चिबोर्ग, अधिकांश प्रोसेसर एक्सएसएल संकलित करेंगे, इसलिए अंतर "न्यूनतम" होना चाहिए। भाषा टेम्पलेट मिलान इंजन के रूप में बनाई गई थी, इसलिए यह इष्टतम दृष्टिकोण होना चाहिए। वैसे भी, यह एकमात्र तरीका है जिसे आप एक्सएसएल में "सोचने" के लिए सीख सकते हैं। – Ishmael

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