我有一个XML feed(feefo),我希望将其合并到现有的网页中。我有feed,我有一个xsl文件,以及一个调用转换过程的供应商php文件。我在我的html中使用以下内容来包含供应商php文件:
<?php include('feefo/feefofeedback-v2.php') ?>
像这样的脚本供应商php文件:
<?php
$curdir = getcwd();
$merchantidentifier = array_key_exists('merchantidentifier', $_GET) ? $_GET['merchantidentifier'] : 'smartmoneyonline';
$limit = array_key_exists('limit', $_GET) ? $_GET['limit'] : null;
$mode = array_key_exists('mode', $_GET) ? $_GET['mode'] : null;
$vendorref = array_key_exists('vendorref', $_GET) ? $_GET['vendorref'] : null;
$suppressnegatives = array_key_exists('suppressnegatives', $_GET) ? $_GET['suppressnegatives'] : null;
$xml_filename = "http://cdn2.feefo.com/api/xmlfeedback?merchantidentifier=".$merchantidentifier;
if ($limit)
$xml_filename .= "&limit=".$limit;
if ($vendorref)
$xml_filename.="&vendorref=".$vendorref;
if ($mode)
$xml_filename.="&mode=".$mode;
if ($suppressnegatives)
$xml_filename.="&negativesanswered=true";
if (phpversion() < "5"){
$xmldoc = domxml_open_file( $xml_filename);
$xsldoc = domxml_xslt_stylesheet_file ( $curdir."/feefo/feedback.xsl");
$result = $xsldoc->process($xmldoc);
echo $result->dump_mem();
}
else
{
$doc = new DOMDocument();
$xsl = new XSLTProcessor();
$doc->load($curdir."/feefo/feedback.xsl");
$xsl->importStyleSheet($doc);
$doc->load($xml_filename);
echo $xsl->transformToXML($doc);
}
?>
虽然它有效,但我不确定我是否正确实现了这个,因为xsl文件包含html,head,body等。这是xsl文件的开头:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/css" href="style.css"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:variable name="feefostarsimageroot" select="'http://cdn.feefo.com/feefo/resources/images/rating'" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FeeFo Feedback</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="page" itemtype="http://schema.org/LocalBusiness" itemscope="itemscope">
<!-- tr class=row -->
<div class="comments">
<xsl:for-each select="FEEDBACKLIST/SUMMARY">
<h1><span itemprop="name">......
显然页面没有验证,因为我有父html,head,body元素,以及xsl文件中包含的那些元素。如果我删除了xsl文件中的那些元素,那么xml feed将不再有效:
消息:DOMDocument :: load():未定义for-each的命名空间前缀xsl
我是否以正确的方式接近了这个?如果是这样,我如何从xsl文件中删除有问题的元素并仍然可以使用它?
答案 0 :(得分:0)
使用
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:variable name="feefostarsimageroot" select="'http://cdn.feefo.com/feefo/resources/images/rating'" />
<xsl:template match="/">
<div id="page" itemtype="http://schema.org/LocalBusiness" itemscope="itemscope">
<!-- tr class=row -->
<div class="comments">
<xsl:for-each select="FEEDBACKLIST/SUMMARY">
<h1><span itemprop="name">......
</xsl:template>
</xsl:stylesheet>
显然<link rel="stylesheet" type="text/css" href="style.css" />
是一个问题,因为它属于完整HTML文档的head
部分,您需要调整PHP以确保您之前包含的CSS链接代码。