que desea traducir un archivo XML con datos como los siguientes:XSLT en SSRS informe
<FlatData>
<Details1_Collection>
<Details1 Customer1="Customer" Total1="3" />
...
</Details1_Collection>
</FlatData>
Los datos que me interesa es los atributos y sus valores en cada Details1
. El problema es que estos atributos no necesariamente van a ser los mismos en todos los archivos XML que quiero traducir, y quiero un XSL propósito general que pudiera manejar tales Details1
como éstos:
<Details1 Customer1="Customer" Total1="3" />
<Details1 Name="Jim" Age="14" Weight="180" />
<Details1 Date="2009-07-27" Range="1-5" Option1="True" />
estos diferentes Details1
no lo haría ocurren en el mismo archivo XML de origen, sino en diferentes archivos. Sin embargo, me gustaría usar el mismo XSL en cada uno.
Estaba pensando que necesitaba algo como <xsl:value-of select="@attribute_name"/>
, pero ¿qué pongo para @attribute_name
cuando no sé de antemano qué atributos habrá? Además, ¿cómo capturo el nombre del atributo? Me gustaría hacer explotar la fuente XML arriba para algo como:
<Details1>
<Customer1>Customer</Customer1>
<Total1>3</Total1>
</Details1>
Editar: gracias por las respuestas! Estoy teniendo problemas para conseguir más de la siguiente salida, sin embargo:
<?xml version="1.0" encoding="UTF-8"?>
<FlatData>
<Details1_Collection></Details1_Collection>
</FlatData>
He intentado tanto de Lavinio y respuestas de Jörn Horstmann, así como tratar de combinar los dos. Corro este comando:
msxsl.exe -o output.xml input.xml transform.xsl
Creo que algo que está en el camino es un namespace en el archivo de entrada:
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">
Esto se traduce en un archivo XML con casi tantas líneas como el original, XML de entrada, pero con todos ellos en blanco, guarde la primera línea que contenga ' xml version =" 1.0 "encoding =" utf-8 "?>'. –
Resulta que recibí líneas en blanco en lugar de los datos que quería debido a un problema de espacio de nombres; pregunta actualizada, agregué mi propia respuesta. –