这可能使用XSLT吗?

时间:2009-06-19 05:51:02

标签: xml xslt

我有2个xml文件。我想wite xsl程序         当两个文件中的Field4和field5和field6相同时,它会从SearchApp_LA_Request消除(并创建一个新的xml)SearchApp_MA_Request的所有节点。

SearchApp_LA_Request.xml

<Request>
    <Rows>
        <Row1>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row1>
        <Row2>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row2>
        <Row3>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row3>
        <Row4>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row4>
    </Rows>
</Request>

SearchApp_MA_Request.xml

<Request>
    <Rows>
        <Row1>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row1>
        <Row2>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row2>
        <Row3>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row3>
        <Row4>
            <Field1>Item1</Field1>
            <Field2>Item2</Field2>
            <Field3>Item3</Field3>
            <Field4>Item4</Field4>
            <Field5>Item5</Field5>
            <Field6>Item6</Field6>
        </Row4>
    </Rows>
</Request>

3 个答案:

答案 0 :(得分:2)

是的,

我用谷歌搜索你的问题(使用关键词merge xml xslt),发现这个资源似乎点击了你的问题点:'合并两个文件'http://www.dpawson.co.uk/xsl/sect2/merge.html#d7584e19

[facimilie from link above]

Michael Kay

> I have two documents, file A and file B.  I want to join them 
> on the id of
> the first, but only if a matching id is in the 2nd.  How do I do this?
> 
> File A              File B               Desired Output
> <id> A </id>        <id> A </id>         <id> A </id>
> <id> B </id>        <id> C </id>         <id> D </id>
> <id> D </id>        <id> D </id>
> 

<xsl:copy-of select="document('a.xml')//id[.=document('b.xml')//id]"/>

解决方案使用xslt函数document(),它可以访问xml文档中的节点。关于w3school的更多信息:http://www.w3schools.com/Xsl/func_document.asp

答案 1 :(得分:0)

我不知道是否有任何现成的XSLT解析器会做你所建议的......

您可能希望将其中一个文档读入DOM树,然后在另一个文档中读取,并添加每个子文件。

然后您可以直接在内存中操作DOM,或者将其写入一个文档然后执行XSL转换以获取唯一值...

这就是我至少接近它的方式。

答案 2 :(得分:0)

根据我的理解,你需要使用XSLT合并2个xml文件。

在XSLT中查看“document()”函数。

干杯