2009-05-11 16 views
18

Tengo una transformación XSLT tema:C# transformación XSLT añadiendo y a la salida

style="width:{Data/PercentSpaceUsed}%;" 

Y el valor de Datos/PercentSpaceUsed es número entero 3.

Y SALIDAS:

style="width:
  3
 %;" 

en lugar de lo que esperaba:

style="width:3%;" 

Aquí está el código que hace la transformación: xslt_xslt es la transformación xml, sw.ToString() contiene 
 y 
 que no esperaba.

var xslTransObj = new XslCompiledTransform(); 
var reader = new XmlTextReader(new StringReader(xslt_xslt)); 
xslTransObj.Load(reader); 
var sw = new StringWriter(); 
var writer = new XmlTextWriter(sw); 
xslTransObj.Transform(new XmlTextReader(new StringReader(xslt_data)), writer); 

ResultLiteral.Text = sw.ToString(); 
+0

Hola, yo había espacios en mi XML como Robin dijo. Resolví el problema simplemente eliminando los espacios. –

+4

@Patrick este es un comentario. Esto es para lo que son los comentarios. No puedes comentar hasta que hayas ganado 50 repeticiones. Sin embargo, si insistes en bloquear una firma gigantesca con un enlace a tu blog en cada pregunta o respuesta que hagas, nunca obtendrás 50 repeticiones. La mejor manera de promocionarse es actualizar su perfil y proporcionar respuestas de buena calidad. Además, lea el [faq] (http://stackoverflow.com/faq). – Will

Respuesta

27

El 
 son los retornos de carro y líneas de avance, ya sea dentro de su XML o su XSLT. Asegúrese de que el XML es como

<Value>3</Value> 

En lugar de

<Value> 
    3 
</Value> 

Creo que hay una manera de detener los espacios en blanco que se utiliza dentro de su transformación a pesar de que don `t saber que la parte superior de mi cabeza.

+0

en realidad es como: style = "width: {Data/PercentSpaceUsed}%;" – DMCS

+0

Pero el archivo de datos tenía retornos de carro :-( – DMCS

11

Obtiene espacios en blanco del documento de origen. Utilice

style="width:{normalize-space(Data/PercentSpaceUsed)}%;" 

para quitar el espacio en blanco. La otra opción en su caso sería utilizar

style="width:{number(Data/PercentSpaceUsed)}%;" 
3

tratar


XmlWriterSettings settings = new XmlWriterSettings(); 
settings.OmitXmlDeclaration = true; 
settings.Indent = true; 
settings.IndentChars = "\t"; 
settings.NewLineHandling = NewLineHandling.None; 
XmlWriter writer = XmlWriter.Create(xmlpath, settings); 

de espacios en blanco de entrada que se conserva en la producción de valores de atributo.

nota: con ajustes anteriores, fichas se utilizan para el sangrado

+0

No creo que esto sea lo que se pidió ... –

Cuestiones relacionadas