2012-02-19 21 views
14

Poniżej jest moje xslJak usunąć przestrzeń nazw z pliku wyjściowego xml?

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:ms="http://www.test.com/schemas/test" 
xmlns:ns="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="ms ns"> 
<xsl:output method="xml" indent="yes"/> 

<xsl:template match="/"> 
<XMLResponse>   
    <xsl:apply-templates select="ms:ProductRS/ms:Product"/> 
</XMLResponse> 
</xsl:template> 
<-- some templates here --> 
</xsl:stylesheet> 

W wyjściu otrzymuję jak poniżej

<?xml version="1.0" encoding="UTF-16"?> 
<XMLResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Product>-----</Product> 
</XMLResponse> 

muszę usunąć xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" z wyjścia xml

+0

Co środowisko pracujesz w, i jest tylko odniesienie do nazw XSi w tej linii XMLResponse? –

+0

Dlaczego trzeba usunąć ten obszar nazw? Dlaczego chcesz? –

Odpowiedz

41

Aby wykluczyć nazw powinieneś reprezentować ten sposób : -

exclude-result-prefixes="ms ns xsi "

Zasadniczo Twój arkusz stylów wygląda następująco: -

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:ms="http://www.test.com/schemas/test" 
xmlns:ns="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="ms ns xsi"> 
+1

Alternatywnie, jeśli przedrostek xsi nie jest używany nigdzie w arkuszu stylów i nie jest wymagany w danych wyjściowych, wystarczy usunąć deklarację. –

+0

bardzo przydatne, dziękuję! – ClaudioM

Powiązane problemy