XSL: unikaj eksportowania definicji przestrzeni nazw do wynikowych dokumentów XML

Chciałbym pobrać dane z niektórych plików XML i przekształcić je w nowy dokument XML. Nie chcę jednak, aby definicja przestrzeni nazw w XSLT pojawiła się w dokumencie wynikowym.

Innymi słowy:

Źródło:

<Namespace:Root xmlns:Namespace="http://www.something.com">

Stylesheet:

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

Wynik:

<resultRoot xmlns:Namespace="http://www.something.com">
<!--I don't want the Namespace definition above-->

Używam msxsl do transformacji.

Author: Cœur, 2009-05-13

3 answers

Możesz użyć atrybutu exclude-result-prefixes elementu xsl:stylesheet, aby wyłączyć przestrzenie nazw z dokumentu wyjściowego:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
         xmlns:Namespace="http://www.something.com"
         exclude-result-prefixes="Namespace">

</xsl:stylesheet>

Aby wyłączyć wiele przestrzeni nazw z dokumentu wyjściowego, określ je oddzielone białymi znakami:

exclude-result-prefixes="ns1 ns2 ns3"

Ze specyfikacji XSLT :

Jeśli arkusz stylów używa deklaracji przestrzeni nazw tylko do celów adresowania drzewa źródłowego, podanie prefiksu w atrybucie exclude-result-prefixes pozwoli uniknąć zbędnej przestrzeni nazw deklaracje w drzewie wyników.

 63
Author: Dirk Vollmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 10:25:57

Odpowiedź Divo została już wybrana i odpowiednio.

Ale jeśli jesteś zainteresowany kopaniem głębiej, zajrzyj do sekcji "zbyt wiele przestrzeni nazw" w moim magnum opus na szalenie popularny temat "Przestrzenie nazw w XSLT". (Tak, to ma być język w policzku. :-) )

 11
Author: Evan Lenz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 10:17:38

Use extension-element-prefixes= "Namespace"

Jak:

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:datetime="http://exslt.org/dates-and-times"
xmlns:str="http://exslt.org/strings"
xmlns:exsl="http://exslt.org/common"
xmlns:uw="xalan://ru.sbtc.util.XSLUtil"
extension-element-prefixes="exsl str datetime uw"
version="1.0">
 -4
Author: alamar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 09:40:48