我想通過類似以下的數據轉換爲XML文件:XSLT在SSRS報告
<FlatData>
<Details1_Collection>
<Details1 Customer1="Customer" Total1="3" />
...
</Details1_Collection>
</FlatData>
我感興趣的數據是各Details1
的屬性和它們的值。問題是,這些屬性並不一定要在我要翻譯的每一個XML文件是相同的,我希望有一個通用的XSL,可以處理這樣Details1
這些:
<Details1 Customer1="Customer" Total1="3" />
<Details1 Name="Jim" Age="14" Weight="180" />
<Details1 Date="2009-07-27" Range="1-5" Option1="True" />
這些不同Details1
不會發生在同一個源XML文件中,而是出現在不同的文件中。不過,我想在每個XSL上使用相同的XSL。
我在想我需要像<xsl:value-of select="@attribute_name"/>
這樣的東西,但是當我事先不知道會有什麼屬性時,我會爲@attribute_name
放什麼東西?另外,如何捕獲屬性名稱?我想爆炸源XML以上類似:
<Details1>
<Customer1>Customer</Customer1>
<Total1>3</Total1>
</Details1>
編輯:感謝您的答覆!我遇到了麻煩比下面的輸出更多,但是:
<?xml version="1.0" encoding="UTF-8"?>
<FlatData>
<Details1_Collection></Details1_Collection>
</FlatData>
我都試過lavinio的和喬恩HORSTMANN的答案,以及試圖將兩者結合起來。我運行此命令:
msxsl.exe -o output.xml input.xml transform.xsl
我認爲東西是獲得的方式是在輸入文件中的namespace:
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">
這將導致一個XML文件幾乎一樣多的行原始的,輸入XML,但全部爲空,保存第一行包含`<?xml version =「1.0」encoding =「utf-8」?>`。 – 2009-07-28 16:02:28
原來,由於名稱空間問題,我得到了一個空行而不是我想要的數據;更新的問題,添加了我自己的答案。 – 2009-07-28 17:17:23