2011-10-13 12 views
7

मैं नीचे के रूप में, टैग जो केवल रिक्त स्थान/न्यू लाइन/टैब वर्ण शामिल निकालना चाहते हैं निकालें:XPath/XSLT खाली टैग

<p> </p> 

कैसे आप इस xpath कार्यों और xslt टेम्पलेट का उपयोग कर करना होगा?

+0

अच्छा प्रश्न, +1। पहचान नियम को ओवरराइड करने के लिए सबसे मौलिक और शक्तिशाली एक्सएसएलटी डिजाइन पैटर्न का उपयोग करके वांछित परिणाम को सही ढंग से प्रस्तुत करना संभव है। –

उत्तर

10

यह परिवर्तन (अधिभावी identity rule):

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="*[not(*) and not(text()[normalize-space()])]"/> 
</xsl:stylesheet> 

जब निम्न XML दस्तावेज़ के लिए लागू:

:

<t> 
<a> 
    <b> 
    <c/> 
    </b> 
</a> 
<p></p> 
<p> </p> 
<p>Text</p> 
</t> 

सही ढंग से वांछित परिणाम का उत्पादन

याद रखें: पहचान नियम/टेम्पलेट का उपयोग और ओवरराइड करना सबसे मौलिक और शक्तिशाली एक्सएसएलटी डिजाइन पैटर्न है। में @Abel: यह समस्या है जहां नोड के सबसे अपरिवर्तित की नकल की जा करने के लिए और केवल कुछ विशिष्ट नोड्स बदला जा आवश्यकता है, नष्ट कर दिया, नाम बदला, ... हैं की एक किस्म के लिए सही विकल्प, आदि

नोट है उसकी टिप्पणी सिफारिश की है कि इस समाधान के कुछ बिट्स आगे तौर पर वर्णित की जरूरत है:

uninitiated या उत्सुक के लिए: not(*) साधन: तत्व होने एक बच्चा नहीं; not(text()[normalize-space()]) का अर्थ है: टेक्स्ट-नोड नॉन-व्हाइट-स्पेस-केवल टेक्स्ट के साथ।

+4

अनियमित या उत्सुक के लिए: 'नहीं (*) 'का अर्थ है: कोई बच्चा तत्व नहीं है; 'नहीं (टेक्स्ट() [सामान्यीकृत-स्थान()]) 'का अर्थ है: पाठ के साथ टेक्स्ट-नोड नहीं है। – Abel

+0

@Abel: धन्यवाद, मैं इसे उत्तर में समझाऊंगा। –

+1

यह बहुत अच्छा है, धन्यवाद Dimitre। मैं अभी भी एक्सएसएलटी के साथ कुछ हद तक शुरुआत कर रहा हूं और मैं इस तरह की चीजों में आ रहा हूं जो वाह बनता है। मुझे लगता है कि मुझे एक अच्छी किताब खोजने की जरूरत है। भयानक स्पष्टीकरण के लिए फिर से धन्यवाद, इसलिए इसमें अधिक आवश्यकता है। – Kyle

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