Почитал указанную ветку... не уверен, что понял. Не мог бы ты немного поподробней изложить хотя бы общую концепцию связки XML+XSL??? т.е. предложение вообще не использовать PHP???? читать XML средствами шаблонов XSL??????? Добавлено @ 22:36 вот немного начал писать... получилось.. но гиморно... т.е. реализовал только работу с идеальными таблицами... причем сделал только проверку цвета, фона, на bold, размер шрифта, и шрифт... а сколько ж там еще то!!!! Добавлено @ 22:36 ах да вот код:
| Код | <? $dom1 = domxml_open_file("test1.xml");
$context = xpath_new_context($dom1);
$result = xpath_eval($context, "//Worksheet/Table/Row"); $styles = xpath_eval($context, "//Styles/Style"); $thisStyle[][]=array(); foreach($styles->nodeset as $style){ if($style->node_name()=='Style') $styleId=$style->get_attribute('ID'); $items=$style->children(); foreach($items as $item){ if ($item->type==XML_ELEMENT_NODE) if($item->node_name()=='Font'){ if($item->get_attribute('FontName')!=null) $thisStyle[$styleId]['FontName']=$item->get_attribute('FontName'); else $thisStyle[$styleId]['FontName']="Veranda"; if($item->get_attribute('Color')!=null) $thisStyle[$styleId]['Color']=$item->get_attribute('Color'); else $thisStyle[$styleId]['Color']="Black"; if($item->get_attribute('Size')!=null) $thisStyle[$styleId]['Size']=$item->get_attribute('Size')/3; else $thisStyle[$styleId]['Size']="3"; if($item->get_attribute('Bold')!=null){ if($item->get_attribute('Bold')==1) $thisStyle[$styleId]['Bold']="<b>"; } else $thisStyle[$styleId]['Bold']=""; } if($item->node_name()=='Interior'){ if($item->get_attribute('Color')!=null) $thisStyle[$styleId]['InteriorColor']=$item->get_attribute('Color'); else $thisStyle[$styleId]['InteriorColor']='#FFFFFF'; } } } print "<table border=0 cellspacing='3' cellpadding='0' width='100%'>"; foreach($result->nodeset as $node){ print "<tr>"; $content=$node->children(); foreach($content as $contentNode){ if ($contentNode->type==XML_ELEMENT_NODE){ $id=$contentNode->get_attribute('StyleID'); if($thisStyle[$id]['Bold']=="<b>"){ $startSpacer="<b>"; $endSpacer="</b>"; } else{ $startSpacer=""; $endSpacer=""; } if($id!=null){ print "<td bgcolor=".$thisStyle[$id]['InteriorColor'].">"; print "<font face='".$thisStyle[$id]['FontName']."' color='".$thisStyle[$id]['Color']."' size='".$thisStyle[$id]['Size']."'>".$startSpacer.iconv("UTF-8","windows-1251",$contentNode->get_content()).$endSpacer."</font>"; print "</td>"; $id=null; } else{ $id='Default'; print "<td bgcolor=".$thisStyle[$id]['InteriorColor'].">"; print "<font face='".$thisStyle[$id]['FontName']."' color='".$thisStyle[$id]['Color']."' size='".$thisStyle[$id]['Size']."'>".iconv("UTF-8","windows-1251",$contentNode->get_content())."</font>"; print "</td>"; $id=null; } } } print "</tr>"; } print "</table>"; ?>
| |