Descargo de responsabilidad: el siguiente es un pecado contra XML. Es por eso que estoy tratando de cambiar con XSLT :)Preservar espacios en blanco de atributos
Mi XML actualmente tiene el siguiente aspecto:
<root>
<object name="blarg" property1="shablarg" property2="werg".../>
<object name="yetanotherobject" .../>
</root>
Sí, estoy poniendo todos los datos de texto en atributos. Espero que XSLT pueda salvarme; Quiero avanzar hacia algo como esto:
<root>
<object>
<name>blarg</name>
<property1>shablarg</name>
...
</object>
<object>
...
</object>
</root>
De hecho, tengo todo este trabajo hasta ahora, con la excepción de que mis pecados contra XML han sido más ... excepcional. Algunas de las etiquetas de tener este aspecto:
<object description = "This is the first line
This is the third line. That second line full of whitespace is meaningful"/>
estoy usando xsltproc bajo Linux, pero no parecen tener ninguna opción para preservar los espacios en blanco. Intenté usar xsl: preserve-space y xml: space = "preserve" en vano. Cada opción que he encontrado parece aplicarse para mantener el espacio en blanco dentro de los elementos, pero no los atributos. Cada vez, lo anterior se cambia a:
This is the first line This is the third line. That second line full of whitespace is meaningful
Así que la pregunta es, ¿puedo conservar el espacio en blanco atributo?
se deben sustituir los espacios en blanco con las referencias de entidades de dentro del valor attribe, como reemplazar ' ' con ' '. La normalización del valor del atributo (3.3.3) depende del tipo de atributo que creo que es 'CDATA' por defatult. Sin embargo, creo que puede forzarlo con ' '>' - puede o no ser correcto. Entonces, si tienes un XSL debes asegurarte de manejar tu espacio en blanco manualmente, hice de manera similar a 'string-join()' y 'tokenize()'. –
n611x007
*** Se puede hacer. *** Puede obtener un ejemplo completo ([SSCCE] (http://www.sscce.org/ "Corto, Autónomo, Correcto (Compilable), Ejemplo") fuera de mi respuesta a otra pregunta: http://stackoverflow.com/a/29780972/611007 (Como expliqué anteriormente, no es la forma en que tratas de hacerlo, pero al final, funcionará como te gustaría). – n611x007
relacionado: https://stackoverflow.com/questions/449627/ - relacionado: https://stackoverflow.com/questions/2004386/ - relacionado: https://stackoverflow.com/questions/1289524/ – n611x007