Mostra notizie nelle discussioni
Avatar
☺
Scritto da
::1
il 2013-01-24 08:44:01.0 alle 2013-01-24 08:44:01.0
Trollate totali: 12321
[xsl] il ripulitore
Lavorando coi parser xml di java 1.4 spesso mi è più facile fare una pulizia preliminare del file, così ho messo a punto questo xsl che fa le seguenti operazioni:
- elimina i namespaces: anche se non è cosa buona e giusta in molti casi mi semplifica il lavoro (col rischio di toppare qualcosa però, con gli input esterni, che valido prima via xsd però)
- normalizza gli spazi: toglie gli spazi intorno al testo contenuto nei tags
- elimina i tag vuoti ricorsivamente

Un esempio di trasformazione, con questo input:
<person xmlns:xsi="ciao">
	<name>
		mickey mouse
	</name>
	<age></age>
	<sex>M</sex>
	<unspec/>
	<ricor>
		<test><toast/><toaster/></test>	</ricor>
	<test xsi:type="dmnd:Prot">
		<toaster/>
	</test>
</person>

Ottengo questo output:
<person>
   <name>mickey mouse</name>
   <sex>M</sex>
   <test type="dmnd:Prot"/>
</person>


Questo è il sorgente dell'xsl:
<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="*">
		<xsl:element name="{local-name()}">
			<xsl:apply-templates select="@*|node()" />
		</xsl:element>
	</xsl:template>
	
	<xsl:template match="@*">
		<xsl:attribute name="{local-name()}">
	      <xsl:value-of select="." />
	    </xsl:attribute>
	</xsl:template>
	
	<xsl:template match="text()">
		<xsl:value-of select="normalize-space(.)" />
	</xsl:template>
	
	<xsl:template match="*[not(descendant-or-self::*[text()[normalize-space()] | @*])]" />

</xsl:stylesheet>
Young professional woman and busy mom.

Pagina generata in 87 millisecondi

Utenti attivi: 15 nell'ultimo minuto, 32 negli ultimi cinque minuti, 70 negli ultimi 15 minuti