2011-10-03 9 views
5

he XML como abajo,XSLT transformadora es tirar de error

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

estoy transformando en otro formato XML en C# usando el 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> 

estoy recibiendo el error " Token Text en estado Start daría como resultado un documento XML no válido. Asegúrese de que la configuración ConformanceLevel esté configurada en ConformanceLevel.Fragment o ConformanceLevel.Auto si desea escribir un fragmento XML. " Entendí que el problema es con los atributos i: nil en el xml. Aunque he incluido el espacio de nombres de ellos en XSLT, sigo recibiendo el error.

Respuesta

11

estoy recibiendo el error "Texto de emergencia en el estado de inicio se traduciría en un documento XML válido . Asegúrese de que el ajuste es ConformanceLevel conjunto de ConformanceLevel.Fragment o ConformanceLevel.Auto si quieres escribir un fragmento XML ". Entendí que el problema es con los atributos i: nil en el xml. Aunque he incluido el espacio de nombres de ellos en XSLT, sigo recibiendo el error.

No. El problema es que el resultado no es un documento XML bien formado y por lo tanto la XmlWriter, que participan en la producción de la serialización final del árbol de resultados en texto, plantea esta excepción.

Realmente, en su resultado tiene dos Root elementos y ninguno de ellos tiene un elemento principal.

que necesita para producir un documento bien formado, o cambie el ajuste ConformanceLevel para el XmlWriter a ConformanceLevel.Fragment o ConformanceLevel.Auto.

Para crear una salida bien formada, sólo tiene que añadir:

<xsl:template match="/"> 
<top> 
    <xsl:apply-templates/> 
</top> 
</xsl:template> 
Cuestiones relacionadas