次のようなデータを含むXMLファイルを翻訳したいと思います。
<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: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>
私はラヴィニオとイェルンホルストマンの両方の答えを試し、2つを組み合わせようとしました。私はこのコマンドを実行します:
msxsl.exe -o output.xml input.xml transform.xsl
邪魔になっているのは、入力ファイルの名前空間だと思います。
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">