Tôi muốn dịch một tệp XML với dữ liệu như sau:XSLT trên SSRS báo cáo
<FlatData>
<Details1_Collection>
<Details1 Customer1="Customer" Total1="3" />
...
</Details1_Collection>
</FlatData>
Các dữ liệu mà tôi quan tâm là các thuộc tính và giá trị của họ trong mỗi Details1
. Vấn đề là những thuộc tính này không nhất thiết sẽ là như nhau trong mỗi tập tin XML Tôi muốn dịch, và tôi muốn có một XSL mục đích chung mà có thể xử lý như Details1
như sau đây:
<Details1 Customer1="Customer" Total1="3" />
<Details1 Name="Jim" Age="14" Weight="180" />
<Details1 Date="2009-07-27" Range="1-5" Option1="True" />
Những khác nhau Details1
sẽ không xảy ra trong cùng một tệp XML nguồn, nhưng thay vì trong các tệp khác nhau. Tuy nhiên, tôi muốn sử dụng cùng một XSL trên mỗi.
Tôi đã nghĩ tôi cần một cái gì đó như <xsl:value-of select="@attribute_name"/>
nhưng tôi phải đặt gì cho @attribute_name
khi tôi không biết trước thuộc tính nào sẽ có? Ngoài ra, làm thế nào để tôi nắm bắt được tên thuộc tính? Tôi muốn nổ nguồn XML trên một cái gì đó như:
<Details1>
<Customer1>Customer</Customer1>
<Total1>3</Total1>
</Details1>
Edit: cảm ơn vì những câu trả lời! Tôi đang gặp khó khăn hơn đầu ra sau đây, tuy nhiên:
<?xml version="1.0" encoding="UTF-8"?>
<FlatData>
<Details1_Collection></Details1_Collection>
</FlatData>
Tôi đã thử cả của lavinio và câu trả lời Jörn Horstmann của, cũng như cố gắng để kết hợp cả hai. Tôi chạy lệnh này:
msxsl.exe -o output.xml input.xml transform.xsl
Tôi nghĩ rằng cái gì đó là nhận được theo cách này là một namespace trong file đầu vào:
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">
Điều này dẫn đến một tập tin XML với gần như là nhiều dòng như XML gốc, đầu vào, nhưng với tất cả chúng trống, hãy lưu dòng đầu tiên chứa ' xml version =" 1.0 "encoding =" utf-8 "?>'. –
Hóa ra tôi có một dòng trống thay vì dữ liệu tôi muốn vì vấn đề không gian tên; câu hỏi được cập nhật, thêm câu trả lời của riêng tôi. –