Pergunta

Eu tenho alguns arquivos XML que mudaram recentemente para que alguns dos nós agora tenham o atributo xsi: nil = "true". Eu tenho uma folha de estilo XSLT que renderiza o XML no HTML para obter um olhar rápido de dados. Atualmente, para facilitar as coisas, retiro os namespaces do XML antes de aplicar a folha de estilo. Isso funcionou bem até a nossa última atualização. Agora estou recebendo um erro porque o XSL não sabe como lidar com o XSL: nil = "true".

Eu posso atualizar facilmente o código para substituir/remover em todo o xsl: nil = "true" corresponde ao XML antes de transformá -lo, mas eu estava me perguntando se é possível agarrar a folha de estilo XSLT para que o XSI: O Nil's será ignorado/não causará falhas de transformação, mesmo que nenhum espaço para nome esteja incluído no XML. Eu preferiria fazer as coisas dessa maneira, porque posso fazer a alteração no servidor agora, onde, se tiver que emitir uma nova compilação da Web, tenho que pular por alguns aros internos para implantá -lo.

Depois de fazer as coisas funcionarem (removendo o xsl: nil's antes ou durante a transformação) vou circular e descobrir por que removi os espaços para nome originalmente e corrigi isso.

Obrigado por qualquer ajuda que você possa me dar.

Foi útil?

Solução

Por que você removeu os namespaces em primeiro lugar? O XSLT permite controlar quais prefixos não devem ser colocados na saída, e você pode pular aqueles xsi:nil Bem na folha de estilo.

Se não houver declaração de prefixo de espaço para nome para o xsi Prefixo, o XML não é válido. Portanto, você está lidando com XML inválido ou ainda tem alguma declaração de namespace XSI em algum lugar, e pode alterar o XSLT para pular essas entradas.

Se você fizer um encontro na fonte XML, realmente certifique-se de corrigi-lo mais tarde (em breve!), Porque esse tipo de coisa vai quebrar o pescoço.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top