我想用如下数据翻译一个 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>
我已经尝试了 lavinio 和 Jörn Horstmann 的答案,并尝试将两者结合起来。我运行这个命令:
msxsl.exe -o output.xml input.xml transform.xsl
我认为阻碍的是输入文件中的命名空间:
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">