2012-05-22 19 views
17

का उपयोग करके नोड्स को हटाने के बाद खाली लाइनों की सवारी हो रही है, मैं एक्सएमएलटी का उपयोग कर रहा हूं ताकि एक्सएमएल दस्तावेज़ में एक बहुत ही सरल परिवर्तन हो सके। मैं सिर्फ एक विशेष नाम के साथ सभी तत्व नोड्स को मिटाना चाहता हूं। ऐसा होता है कि मेरे स्रोत दस्तावेज़ में ये सभी नोड्स दस्तावेज़ के अंत में स्थित होते हैं, लेकिन परिवर्तन के बाद, हालांकि मेरे उद्देश्य के अनुसार नोड्स गायब हो गए हैं, उनके स्थान पर बहुत सी खाली रेखाएं हैं।एक्सएसएलटी

यह सख्ती से एक कॉस्मेटिक मुद्दा है क्योंकि मैंने रूपांतरण के साथ जो कुछ भी हासिल किया था, लेकिन जिज्ञासा से बाहर: मैं इन खाली रेखाओं से कैसे छुटकारा पा सकता हूं? यह XSL फ़ाइल मैं परिवर्तन के लिए इस्तेमाल किया (तत्व मैं दूर करने के लिए चाहता था नाम "संबंधों" है) है:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" /> 

    <xsl:template match="*"> 
    <xsl:copy> 
     <xsl:copy-of select="@*" /> 
     <xsl:apply-templates/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="relation"/> 

</xsl:stylesheet> 

उत्तर

21

कारण केवल सफेद-अंतरिक्ष-पाठ नोड्स के लिए तत्काल भाई बहन हैं में है हटाए गए तत्व

समाधान: बस किसी भी केवल सफेद-अंतरिक्ष-पाठ नोड्स निकालने के लिए इस XSLT अनुदेश जोड़ने - पहले भी परिवर्तन करना शुरू कर दिया है:

<xsl:strip-space elements="*"/> 

परिणाम खरोज खो सकते हैं - यदि हां, तो जोड़ने इस:

:

<xsl:output omit-xml-declaration="yes" indent="yes"/> 

पूरा परिवर्तन हो जाता है

जब इस XML दस्तावेज़ पर लागू (कुछ भी प्रदान नहीं!):

<nums> 
    <num>01</num> 
    <num>02</num> 
    <num>03</num> 
    <num>04</num> 
    <num>05</num> 
    <num>06</num> 
    <num>07</num> 
    <num>08</num> 
    <num>09</num> 
    <num>10</num> 

    <relation/> 
    <relation/> 
    <relation/> 
    <relation/> 
    <relation/> 
    <relation/> 
    <relation/> 
    <relation/> 
</nums> 

चाहता था, सही परिणाम (कोई अनुगामी white-space) का उत्पादन किया है:

<nums> 
    <num>01</num> 
    <num>02</num> 
    <num>03</num> 
    <num>04</num> 
    <num>05</num> 
    <num>06</num> 
    <num>07</num> 
    <num>08</num> 
    <num>09</num> 
    <num>10</num> 
</nums> 
+2

केवल मैं जो जोड़ता हूं वह है: xsl जोड़ने से पहले: अपनी स्टाइलशीट में स्ट्रिप-स्पेस, जांचें कि स्रोत दस्तावेज़ में कोई महत्वपूर्ण व्हाइटस्पेस टेक्स्ट नोड्स नहीं है, यानी मिश्रित सामग्री में व्हाइटस्पेस। –

+1

क्या यह कहने का एक तरीका है कि मैं केवल 'संबंध' नोड्स के भाई बहनों को सफेद जगह पट्टी करना चाहता हूं? – Sergio

+1

@ सर्जीओ: हाँ: उपयोग करें: '' –