Pergunta

Eu gostaria de levar os dados de alguns arquivos XML e transformá-los em um novo documento XML. No entanto, eu não quero que a definição de um espaço de nomes no XSLT para ocorrer no documento resultado.

Em outras palavras:

fonte:

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

estilo:

<?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">

resultado:

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

Eu estou usando msxsl para a transformação.

Foi útil?

Solução

Você pode usar o atributo exclude-result-prefixes do elemento xsl:stylesheet para evitar a emissão de prefixos de namespace para o documento de saída:

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

</xsl:stylesheet>

Para suprimir vários espaços de nomes do documento de saída especificá-los separados por espaços:

exclude-result-prefixes="prefix1 prefix2 prefix3"

A partir da XSLT especificação :

Quando uma folha de estilo usa uma declaração de namespace para os fins de abordar a árvore fonte, especificando o prefixo no resultado-prefixos excluir-atributo irá evitar declarações de namespace supérfluos na árvore de resultado.

Outras dicas

A resposta de divo já foi escolhido e adequadamente-lo.

Mas se você estiver interessado em cavar mais fundo, confira os "Muitos namespaces" seção no meu magnum opus sobre o tema popular de "Namespaces em XSLT". (Sim, isso é pra ser tongue-in-cheek. :-))

uso de extensão-element-prefixos = "Namespace"

como:

<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">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top