2011-10-03 15 views
5

ho XML come di seguito,XSLT trasformazione sta gettando errore

<?xml version="1.0" encoding="utf-16" ?> 
<AllResidentAndUnitInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
i:type="ResidentsByUnitInfo" xmlns="http://schemas.datacontract.org/2004/07/FSRSchema"> 
    <BillingAddresses> 
     <BillingAddress> 
     <billing_address1>Some address</billing_address1> 
     <billing_address2 /> 
     <billing_city>Gilbert</billing_city> 
     <billing_country i:nil="true"/> 
     <billing_dtmmodified>2010-12-08T01:37:41+05:30</billing_dtmmodified> 
     <billing_state>AZ</billing_state> 
     <billing_zipcode>23233</billing_zipcode>    
     </BillingAddress> 
     <BillingAddress> 
     <ResidentsByUnitInfoPropertyUnitBillingAddress> 
     <billing_address1>Some address</billing_address1> 
     <billing_address2 /> 
     <billing_city>Gilbert</billing_city> 
     <billing_country i:nil="true"/> 
     <billing_dtmmodified>2010-12-08T01:37:41+05:30</billing_dtmmodified> 
     <billing_state>AZ</billing_state> 
     <billing_zipcode>23233</billing_zipcode> 
     </ResidentsByUnitInfoPropertyUnitBillingAddress> 
     </BillingAddress> 
     .... 

</AllResidentAndUnitInfo> 

sto trasformando in un altro formato XML in C# utilizzando il XslCompiledTransform,

<?xml version='1.0' ?> 
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' 
    xmlns:msxsl='urn:schemas-microsoft-com:xslt' 
    xmlns:i='http://www.w3.org/2001/XMLSchema-instance' exclude-result-prefixes='msxsl 
    i' version='1.0'> 
<xsl:output method='xml' indent='yes'/> 
<xsl:template match='/AllResidentAndUnitInfo/BillingAddresses/BillingAddress'> 
    <Root> 
     <Address1>..</Address2> 
       ... 
    </Root> 
</xsl:template> 
    </xsl:stylesheet> 

sto ottenendo l'errore " Il testo del token in stato Start risulterebbe in un documento XML non valido. Assicurarsi che l'impostazione ConformanceLevel sia impostata su ConformanceLevel.Fragment o ConformanceLevel.Auto se si desidera scrivere un frammento XML. " Ho capito che il problema è con gli attributi i: nil nell'xml. Anche se ho incluso lo spazio dei nomi di loro in XSLT ancora sto ricevendo l'errore.

risposta

11

sto ottenendo l'errore "Testo simbolici in stato di avvio si tradurrebbe in un documento XML non valido . Assicurarsi che l'impostazione è ConformanceLevel insieme a ConformanceLevel.Fragment o ConformanceLevel.Auto se si vuole scrivere un frammento XML. " Ho capito che il problema è con gli attributi i: nil nell'xml. Anche se ho incluso lo spazio dei nomi di loro in XSLT ancora sto ricevendo l'errore.

No. Il problema è che il risultato non è un documento XML ben formato e quindi la XmlWriter, coinvolto nella produzione di serializzazione finale dell'albero risultato in testo, solleva questa eccezione.

In realtà, nel tuo risultato hai due elementi e nessuno di loro ha un elemento padre.

è necessario produrre un documento ben formato, o modificare l'impostazione ConformanceLevel per il XmlWriter-ConformanceLevel.Fragment o ConformanceLevel.Auto.

Per creare un'uscita wellformed, basta aggiungere:

<xsl:template match="/"> 
<top> 
    <xsl:apply-templates/> 
</top> 
</xsl:template> 
Problemi correlati