使用XSLT 1.0将XML转换为CSV

时间:2013-03-21 13:34:58

标签: xml xslt xslt-1.0

我有一个将XML文档转换为CSV文档的特殊情况。 在我的XML中,我有以下结构:

<Pictures>
    <Picture>
        <File>picture1.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <File>pictureX.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <File>picture999.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <File>picture1.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <ID>555</ID>
        <File>detailX.jpg</File>
        <Purpose>detail</Purpose>
    </Picture>
    <Picture>
        <File>detail1.jpg</File>
        <Purpose>detail</Purpose>
    </Picture>
</Pictures>

我想要的是followind CSV:

normal1;normal2;normal3;detail1;detail2
picture1.jpg;pictureX.jpg;picture999.jpg;

到目前为止,我能够正确转换它。但问题是,我的XML中还有许多其他图片元素可以包含具有其他目的值的图片元素。

示例:

<Pictures>
    <Picture>
        <File>picture1.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
</Pictures>
<Pictures>
    <Picture>
        <File>picture2.jpg</File>
        <Purpose>detail</Purpose>
    </Picture>
</Pictures>
<Pictures>
    <Picture>
        <File>pictureX.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <File>pictureY.jpg</File>
        <Purpose>detail</Purpose>
    </Picture>
</Pictures>
<Pictures>
    <Picture>
        <File>pictureA.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <File>pictureB.jpg</File>
        <Purpose>normal</Purpose>
    </Picture>
    <Picture>
        <File>pictureD.jpg</File>
        <Purpose>detail</Purpose>
    </Picture>
</Pictures>

作为CSV:

normal1;normal2;detail1
picture1.jpg;;
;;picture2.jpg;
pictureX.jpg;;pictureY.jpg
pictureA.jpg;pictureB.jpg;pictureD.jpg

我不知道是否可以仅通过使用XSLT或如何做到这一点。转换必须快速(一个XML可以很容易地包含38k图片元素)。

如果有人有想法请发帖。 提前谢谢!

安德烈

0 个答案:

没有答案