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.
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.
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. :-) )
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">
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