Chcę przetłumaczyć plik XML z danymi, jak następuje:XSLT na SSRS zgłosić
<FlatData>
<Details1_Collection>
<Details1 Customer1="Customer" Total1="3" />
...
</Details1_Collection>
</FlatData>
Dane Jestem zainteresowany jest atrybuty i ich wartości w każdym Details1
. Problem polega na tym, że te atrybuty niekoniecznie będzie taka sama w każdym pliku XML chcę tłumaczyć, a ja chcę XSL ogólnego przeznaczenia, który mógłby obsłużyć taką Details1
jak te:
<Details1 Customer1="Customer" Total1="3" />
<Details1 Name="Jim" Age="14" Weight="180" />
<Details1 Date="2009-07-27" Range="1-5" Option1="True" />
Te różne Details1
nie będzie występują w tym samym źródłowym pliku XML, ale w różnych plikach. Jednak chciałbym użyć tego samego XSL na każdym z nich.
Myślałem, że potrzebuję czegoś takiego jak <xsl:value-of select="@attribute_name"/>
, ale co mam umieścić na @attribute_name
, kiedy nie wiem wcześniej, jakie to będą atrybuty? W jaki sposób przechwycić nazwę atrybutu? Chciałbym eksplodować XML źródłowego powyżej coś jak:
<Details1>
<Customer1>Customer</Customer1>
<Total1>3</Total1>
</Details1>
EDIT: dzięki za odpowiedzi! Mam problemy z dostaniem się więcej niż do następnego wyjścia, jednakże:
<?xml version="1.0" encoding="UTF-8"?>
<FlatData>
<Details1_Collection></Details1_Collection>
</FlatData>
Próbowałem zarówno Lavinio-tych i odpowiedzi Jörn Horstmann użytkownika, jak również próbuje połączyć dwa. Uruchomić polecenie:
msxsl.exe -o output.xml input.xml transform.xsl
myślę coś, co robi się w drodze jest namespace w pliku wejściowego:
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">
Wynika to w pliku XML z niemal tyle linii, ile oryginalny, wejściowy kod XML, ale ze wszystkimi z nich pusty zapisuje pierwszy wiersz zawierający ' xml version =" 1.0 "encoding =" utf-8 "?>>. –
Okazuje się, że mam puste linie zamiast danych, które chciałem z powodu problemu z przestrzenią nazw; zaktualizowane pytanie, dodałem własną odpowiedź. –