2009-08-27 10 views
6

Dispone di un documento XML di origine che utilizza lo spazio dei nomi contenente prefissi e uno spazio dei nomi predefinito. Quando lo trasformo utilizzando un documento XSLT, il documento XML tradotto risultante non è corretto, ovvero mancano i dati degli elementi del documento XML di origine.Problema con XSLT in cui il documento XML di origine utilizza lo spazio dei nomi predefinito

Quando rimuovo lo "spazio dei nomi predefinito" dal documento XML di origine, la trasformazione funziona come previsto.

Domanda: esiste un modo per risolvere il problema senza la necessità di modificare lo spazio dei nomi predefinito dal documento XML di origine? Cioè, aggiungi la soluzione al documento XSLT.

documento XML:

<MyElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.zolldata.com/UDX"> 

dove lo spazio dei nomi di default problema è xmlns = "http://www.zolldata.com/UDX"

risposta

4

Specificare stesso namespace di default nel documento XSLT se i vostri selettori fanno non utilizzare prefissi o utilizzare prefissi per tutti i selettori nell'XSLT, ma non dimenticare di associarli allo spazio dei nomi predefinito del documento XML.

+1

Vorrei aggiungere lo spazio dei nomi predefinito, xmlns = "http://www.zolldata.com/UDX", al mio documento XSLT. Come legherei? cosa sono vincolante? – Larry

+0

Ho provato il tuo primo suggerimento e questo non funziona. Sembra che lo spazio dei nomi predefinito DEVE essere rimosso dall'XML in modo che XSLT funzioni (o abbia un prefisso corretto). Come Larry, non so cosa intendi con "... non dimenticare di associarli allo spazio dei nomi predefinito". Presumo che questo significhi effettivamente prefisso con "xmlns: z = ..." che funziona solo se stai per modificare la risposta xml invece di dover gestire un sistema esistente che utilizza validamente uno spazio dei nomi predefinito. – Justin

Problemi correlati