免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12214 | 回复: 12
打印 上一主题 下一主题

[XML 生成]用php生成xml问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-01 17:52 |只看该作者 |倒序浏览
文件名为offer,ProductFeatures.xml
*****************
<?xml version="1.0" encoding="gb2312" ?>;
<?xml-stylesheet type="text/xsl" href="offer,xsl"?>;
<FEATURELIST>;

<FEATURE>;
<ISNEEDED>;Y</ISNEEDED>;
<ISNOTE>;N</ISNOTE>;
<UNIT>;</UNIT>;
<DEFAULTVALUE>;你好呀</DEFAULTVALUE>;
<NAME>;产品名</NAME>;
<NOTE>;这是前边的提示呀</NOTE>;
</FEATURE>;

<FEATURE>;
<ISSELECTED>;Y</ISSELECTED>;
<ID>;111</ID>;
<COMP>;Y</COMP>;
<DEFAULTVALUE>;天津</DEFAULTVALUE>;
<NAME>;选择商品</NAME>;


<FEATUREVALUES>;
<ID>;11</ID>;
<FEATUREVALUE>;北京</FEATUREVALUE>;
<FEATUREVALUE>;天津</FEATUREVALUE>;
<FEATUREVALUE>;上海</FEATUREVALUE>;
</FEATUREVALUES>;
</FEATURE>;

</FEATURELIST>;
**************************************
请问上面的页怎样生成呀,我在开始处加上<?就不能运行了.错误如下
>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;
该位置上不允许有空白。处理资源 'http://localhost/test/xsl/mid/offer,ProductFeatures.xml' 时出错。第 1 行,位置: 3

<?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-08-01 18:24 |只看该作者

[XML 生成]用php生成xml问题

这个东西你肯定喜欢
http://pear.php.net/manual/en/package.xml.xml-serializer.php
可以把php的array和xml数据互相转换,刚好适合你这种情况

缺陷是无法处理xml标签中有属性的情况

论坛徽章:
0
3 [报告]
发表于 2005-08-01 18:59 |只看该作者

[XML 生成]用php生成xml问题

<?php
header('Content-type: text/xml');
$user = 'toto';
$password = 'secretoto';
$database = 'nosamisleschiens';
$table = 'chien';
$connect = mysql_connect('localhost',$user, $password)
or die ("erreur de connexion";
mysql_select_db($database, $connect)
    or die ("erreur de connexion base";
$fic = fopen("rep/export.xml", "w";

fwrite($fic, '<?xml version="1.0"  encoding="ISO-8859-1"?>;');
fwrite($fic, '<!-- DB to XML -->;');
fwrite($fic, "<$table>;";
$elements =array();
$result = mysql_query("describe $table";
while ($row = mysql_fetch_array($result))
  $elements[] = $row[0];
$result = mysql_query("select * from $table";
$i = 0;
while ($row = mysql_fetch_array($result))
{ $i++;
  fwrite($fic, "<row num=\"$i\">;";
  for ($j = 0; $j<count($elements) ; $j++)
    fwrite($fic, "<$elements[$j]>;".htmlspecialchars($row[$j]
                 ."</$elements[$j]>;";
  fwrite($fic, "</row>;";
}
fwrite($fic, "</$table>;";
mysql_close();
fclose($fic);
?>;






<?xml version="1.0"  encoding="ISO-8859-1"?>;
<distance_entre_ville>;
  <liaison>;
    <origine>;paris</origine>;
    <destination>;nice</destination>;
    <distance>;900</distance>;
  </liaison>;
  <liaison>;
    <origine>;paris</origine>;
    <destination>;lille</destination>;
    <distance>;300</distance>;
  </liaison>;
  <liaison>;
    <origine>;nice</origine>;
    <destination>;paris</destination>;
    <distance>;900</distance>;
  </liaison>;
........
</distance_entre_ville>;

论坛徽章:
0
4 [报告]
发表于 2005-08-01 19:00 |只看该作者

[XML 生成]用php生成xml问题

<?php
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>;';

?>;


主要的

论坛徽章:
0
5 [报告]
发表于 2005-08-02 09:54 |只看该作者

[XML 生成]用php生成xml问题

多谢指点
**********************************
我的想法是当选中下拉菜单的某一项时,调用      
function selectCategory(catid) {
    if(1){

xml.load("offer,ProductFeatures.xml?categoryId="+catid);
productfeature.innerHTML = xml.transformNode(xsl);
    }else{
        productfeature.innerHTML = defaultvalue;
    }
现在需要跟据categoryId动态生成offer,ProductFeatures.xml页,请问怎样实现呀,我的想法是先用v.php生成offer,ProductFeatures.xml页,然后再调用offer,ProductFeatures.xml页,但实践证明行不通,offer,ProductFeatures.xml页不能生成,请问怎样用xml.load("offer,ProductFeatures.xml?categoryId="+catid);直接生成呀

论坛徽章:
0
6 [报告]
发表于 2005-08-02 21:30 |只看该作者

[XML 生成]用php生成xml问题

你这个得用ajax.
就是说,当用户选中下拉菜单的时候,触发javascript,由js的xmlhttprequest发出请求,取来xml信息,然后通过js的dom来改变当前页面的显示。

论坛徽章:
0
7 [报告]
发表于 2005-08-03 07:30 |只看该作者

[XML 生成]用php生成xml问题

imbiss兄说的我已经做到了,我是想当下拉菜单被选中后,传递一个相关参数,通过这个参数动态生成offer,ProductFeatures.xml页

论坛徽章:
0
8 [报告]
发表于 2005-08-05 07:30 |只看该作者

[XML 生成]用php生成xml问题

up

论坛徽章:
0
9 [报告]
发表于 2005-08-05 18:10 |只看该作者

[XML 生成]用php生成xml问题

在xmlhttprequeest的send里面都过get或者post把参数传递给服务器。
服务器根据传入参数,生成xml,传回来。
传回的结果保存在xmlhttprequest里面。
然后,你需要用js来写一个xml parser把返回的xml内容解析成你想要的html菜单代码。
最后然后用dom替换。

这是ajax的做法流程。

你的问题是,好像想在服务器端直接就处理xml文档。是不是?如果这样,用php的自带的xml parse就可以解析了。

看你的代码这一句

  1. xml.load("offer,ProductFeatures.xml?categoryId="+catid);
复制代码
是什么?
javascript吗?

论坛徽章:
0
10 [报告]
发表于 2005-08-06 08:39 |只看该作者

[XML 生成]用php生成xml问题

思路:当选中test.php页面的某一项时,调用其页的selectCategory(catid)函数,动态生成产品属性.


offer,ProductFeatures.xml代码
*******************
<?xml version="1.0" encoding="gb2312" ?>;
<?xml-stylesheet type="text/xsl" href="offer,xsl"?>;

<FEATURELIST>;

<FEATURE>;
<ISNEEDED>;Y</ISNEEDED>;
<ISNOTE>;N</ISNOTE>;
<UNIT>;</UNIT>;
<DEFAULTVALUE>;你好呀</DEFAULTVALUE>;
<NAME>;产品名</NAME>;
<NOTE>;这是前边的提示呀</NOTE>;
</FEATURE>;

<FEATURE>;
<ISSELECTED>;Y</ISSELECTED>;
<ID>;111</ID>;
<COMP>;Y</COMP>;
<DEFAULTVALUE>;天津</DEFAULTVALUE>;
<NAME>;选择商品</NAME>;


<FEATUREVALUES>;
<ID>;11</ID>;
<FEATUREVALUE>;北京</FEATUREVALUE>;
<FEATUREVALUE>;天津</FEATUREVALUE>;
<FEATUREVALUE>;上海</FEATUREVALUE>;
</FEATUREVALUES>;
</FEATURE>;

</FEATURELIST>;
**********************************************
offer,xsl代码
*****************************************************
<?xml version="1.0" encoding="gb2312" ?>;
<xsl:stylesheet xmlnssl="http://www.w3.org/1999/XSL/Transform" version="1.0">;
<xsl:template match="/">;
    <xsl:variable name="haveValue" select="count(FEATURELIST/FEATURE)" />;
    <table width="100%" border="0" cellspacing="0" cellpadding="2">;
      <xsl:for-each select="FEATURELIST/FEATURE">;
      <xsl:variable name="isSelected">;<xsl:value-of select="ISSELECTED"/>;</xsl:variable>;
      <xsl:variable name="isNote">;<xsl:value-of select="ISNOTE"/>;</xsl:variable>;
      <xsl:variable name="defaultValue">;<xsl:value-of select="DEFAULTVALUE"/>;</xsl:variable>;
      <xsl:variable name="unit">;<xsl:value-of select="UNIT"/>;</xsl:variable>;
      <xsl:variable name="isNeeded">;<xsl:value-of select="ISNEEDED"/>;</xsl:variable>;
      <xsl:variable name="comp">;<xsl:value-of select="COMP"/>;</xsl:variable>;
      <tr>;

       <xsl:choose>;
        <xsl:when test = " $isNote = 'Y' " >;
               <td align="right" width="32%" title="{NOTE}" onMouseOver="this.style.cursor='hand'"  >;
                <span style="text-decoration: underline;color=#039">;<xsl:choose>;<xsl:when test = " $isNeeded = 'Y' " >;<font color="#FF0000">;*<xsl:value-of select="NAME" />;</font>;</xsl:when>;<xsltherwise>;<xsl:value-of select="NAME" />;</xsltherwise>;</xsl:choose>;:</span>;
               </td>;
        </xsl:when>;
        <xsltherwise>;
              <td align="right" width="32%" >;
               <xsl:choose>;<xsl:when test = " $isNeeded = 'Y' " >;<font color="#FF0000">;*<xsl:value-of select="NAME" />;</font>;</xsl:when>;<xsltherwise>;<xsl:value-of select="NAME" />;</xsltherwise>;</xsl:choose>;:
              </td>;
        </xsltherwise>;
        </xsl:choose>;




        <td>;
        <xsl:choose>;
            <xsl:when test = " $isSelected = 'Y' " >;
                <select name="feature{ID}"  maxlength="80"  id="feature{ID}">;
                    <option value="">;请选择</option>;
                    <xsl:for-each select="FEATUREVALUES/FEATUREVALUE">;
                    <xsl:variable name="featureValue">;<xsl:value-of select="."/>;</xsl:variable>;                    
                    <xsl:choose>;
                        <xsl:when test = " $defaultValue =  $featureValue"  >;
                        <option selected = "true" value="{.}" >;<xsl:value-of select="." />;</option>;
                        </xsl:when>;
                        <xsltherwise>;
                        <option>;<xsl:value-of select="." />;</option>;
                        </xsltherwise>;
                    </xsl:choose>;
                    </xsl:for-each>;
                </select>;
                <xsl:if test = "$comp = 'Y' ">;
                <input name="featureSelf{ID}" id="featureSelf{ID}" size="10" maxlength="80" type="text" value=""/>;(请补充)
                </xsl:if>;
            </xsl:when>;
            <xsl:when test = " $unit != '' " >;
                <input name="feature{ID}" size="16" maxlength="80" type="text" value="{DEFAULTVALUE}"/>;
            </xsl:when>;
            <xsltherwise>;
                <input name="feature{ID}" size="23" maxlength="80" type="text" value="{DEFAULTVALUE}"/>;
            </xsltherwise>;
        </xsl:choose>;
        <xsl:value-of select="UNIT"/>;
        </td>;
      </tr>;
      </xsl:for-each>;
      <xsl:if test = " $haveValue = 0 "  >;
        <tr>;
            <td align="right" width="32%" >;产品规格:</td>;
            <td>;
                <input name="p_z_Z_Specifications" type="text" value="" size="23" maxlength="80"/>;
            </td>;
        </tr>;
      </xsl:if>;
    </table>;
</xsl:template>;
</xsl:stylesheet>;
****************************************************
test.php代码如下
****************************
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">;
<HTML>;
<HEAD>;
<TITLE>; New Document </TITLE>;

</HEAD>;

<BODY>;
<script language="JavaScript">;
var needFeature = true;
var xml = new ActiveXObject("Microsoft.XMLDOM";
var xsl = new ActiveXObject("Microsoft.XMLDOM";
xml.async = false;
xsl.async = true;
xsl.load("offer,xsl";
var defaultvalue = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">;"
                 + "<tr>;<td align=\"right\" width=\"32%\" >;产品数量:</td>;<td>;<input name=\"p_z_Z_Quantity\" type=\"text\" value=\"\" size=\"23\" maxlength=\"80\"/>;</td>;</tr>;"
                 + "<tr>;<td align=\"right\" width=\"32%\" >;包装说明:</td>;<td>;<input name=\"p_z_Z_Packaging\" type=\"text\" value=\"\" size=\"23\" maxlength=\"80\"/>;</td>;</tr>;"
                 + "<tr>;<td align=\"right\" width=\"32%\" >;价格说明:</td>;<td>;<input name=\"p_z_Z_PriceTerms\" type=\"text\" value=\"\" size=\"23\" maxlength=\"80\"/>;</td>;</tr>;"
                 + "<tr>;<td align=\"right\" width=\"32%\" >;产品规格:</td>;<td>;<input name=\"p_z_Z_Specifications\" type=\"text\" value=\"\" size=\"23\" maxlength=\"80\"/>;</td>;</tr>;"
                 + "</table>;";
function a(v){
        if(v==1)
                needFeature=false;
        else
                needFeature=true;
}
function selectCategory(catid) {
        a(catid);
    if(needFeature){
        xml.load("offer,ProductFeatures.xml";
        productfeature.innerHTML = xml.transformNode(xsl);
    }else{
        productfeature.innerHTML = defaultvalue;
    }
}</script>;
<form name="form" method="post" action="test_success.php" >;
  <select name="select" onchange="javascript:selectCategory(form.select.value)">;
        <option value="">;初始化</option>;
    <option value="1">;默认产品</option>;
    <option value="我的产品">;我的产品</option>;
  </select>;

<div  id=productfeature>;
<table width="100%" border="0" cellspacing="0" cellpadding="2">;
<tr>;
<td align="right" width="32%" >;产品规格:</td>;
<td>;
<input name="p_z_Z_Specifications" type="text" value="" size="23" maxlength="80">;
</td>;
</tr>;
</table>;
</div>;
</form>;
       

</BODY>;
</HTML>;
[/img]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP