将 XML 文件中的数据与 PHP 中的 XSLT 合并 [英] Merge data from XML-files with XSLT in PHP

查看:23
本文介绍了将 XML 文件中的数据与 PHP 中的 XSLT 合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试将来自一个 XML 文件和一个 Excel XML 文件的数据与 XSLT 合并.我无法让它工作,想知道我是否可以这样做?我没有得到任何输出,真的可以使用一些帮助.

I trying to combine data from one XML-file and one Excel XML-file with XSLT. I can't get it to work and wonder if I can do it like this? I have not managed to get any output and could really use some help.

<?php

$xsl = new DOMDocument();
$xsl->load("file1.xsl");
$inputdom = new DomDocument();
$inputdom->load("file1.xml");

$proc = new XSLTProcessor();
$xsl = $proc->importStylesheet($xsl);
$proc->setParameter(null, "", "");

$newdom = $proc->transformToDoc($inputdom);
print $newdom-> saveXML();

.xsl

如何使用 ss 前缀?

How to use the ss prefix?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

<xsl:variable name="file2" select="document('file2.xml')">
</xsl:variable>


<xsl:template match="/Test">
    <Test>
    <xsl:copy-of select="*" />
    <xsl:copy-of select="$file2/Test/*" />
    </Test>

</xsl:template>

</xsl:stylesheet>

推荐答案

如果没有看到问题中的 XML 文件,很难确定,但是如果第二个文件是 Excel XML,那么根元素将是 Workbook,但您的 XSLT 正在寻找 Test 的根.

It's a bit hard to say for sure without seeing the XML files in the question, but if the second file is Excel XML, then the root element will be Workbook but your XSLT is looking for a root of Test.

尝试替换这一行....

Try replacing this line....

<xsl:copy-of select="$file2/Test/*" />

有了这条线

<xsl:copy-of select="$file2/*" />

如果您想使用 ss 命名空间显式引用第二个文件中的元素,您可以这样做

If you wanted to explicit refer to an element in your second file, using the ss namespace, you would do something like this

<xsl:copy-of select="$file2/ss:Workbook" />

这篇关于将 XML 文件中的数据与 PHP 中的 XSLT 合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆