½«Êý×éת»¯ÎªXMLÊý¾Ý
/* Author: ÑîÓî yangyu@sina.cn */
/*
Ó÷¨Ê¾Àý£º
$cls_xml = new cls_xml();
if ($array){
$cls_xml->array2xml($array);
echo $cls_xml->getXml();
}else{
echo '';
}
*/
class cls_xml{
var $xml;
public function array2xml($array,$encoding='gb2312'){
$this->xml = '<?xml version="1.0" encoding="'.$encoding.'"?><list>';
$this->xml.= $this->_array2xml($array).'</list>';
}
public function getXml(){
return $this->xml;
}
public function _array2xml($array){
$xml = '';
foreach($array as $key => $val){
is_numeric($key) && $key = "item id=\"$key\"";
$xml. = "<$key>";
$xml. = is_array($val) ? $this->_array2xml($val) : $this->_cdata($val);
list($key,) = explode(' ',$key);
Ïà¹ØÎĵµ£º
ÓÐÈË»áÎÊ£¬DTDºÍSchema¶¼ÊǶÔXMLÎĵµµÄÒ»ÖÖÔ¼Êø£¬ÎªÊ²Ã´²»¾ÍÑ¡ÆäÖÐÖ®Ò»£¬¶øÓÖÓÐSchemaÄØ¡£ÒòΪDTD°²È«¶ÈÌ«µÍÁË£¬Ò²¾ÍÊÇ˵ËüµÄÔ¼Êø¶¨ÒåÄÜÁ¦²»×㣬ÎÞ·¨¶ÔXMLʵÀýÎĵµ×ö³ö¸üϸÖµÄÓïÒåÏÞÖÆ¡£ÆäʵϸÐĵÄÈ˻ᷢÏÖ£¬ÔÚDTDÖУ¬Ö»ÓÐÒ»¸öÊý¾ÝÀàÐÍ£¬¾ÍÊÇPCDATA£¨ÓÃÔÚÔªËØÖУ©ºÍCDATA£¨ÓÃÔÚÊôÐÔÖУ©£¬ÔÚÀïÃæÐ´ÈÕÆÚÒ²ÐУ¬Êý×Ö»¹ÐУ¬×Ö·û ......
XML Schema annotation ÔªËØ
¶¨ÒåºÍÓ÷¨
annotation ÔªËØÊÇÒ»¸ö¶¥²ãÔªËØ£¬¹æ¶¨ schema µÄ×¢ÊÍ¡£
×¢ÊÍ£º¿ÉÒÔ°üº¬ appinfo ÔªËØ£¨ÓÉÓ¦ÓóÌÐòʹÓõÄÐÅÏ¢£©ºÍ documentation ÔªËØ£¨ÓÉÓû§¶ÁÈ¡»òʹÓõÄ×¢ÊÍ»òÎı¾£©¡£
ÔªËØÐÅÏ¢
씀˵Ã÷
³öÏÖ´ÎÊý
ÔÚ¸¸ÔªËØÖÐÒ»´Î¡£
......
XML Schema import ÔªËØ
¶¨ÒåºÍÓ÷¨
import ÔªËØÓÃÓÚÏòÒ»¸öÎĵµÌí¼Ó´øÓв»Í¬Ä¿±êÃüÃû¿Õ¼äµÄ¶à¸ö schema¡£
ÔªËØÐÅÏ¢
³öÏÖ´ÎÊý
ÎÞÏÞÖÆ
¸¸ÔªËØ
schema
ÄÚÈÝ
annotation
Óï·¨
<import
id=ID
namespace=anyURI
schemaLocation=anyURI
any attributes
>
(annotation?)
< ......
XML½âÎöÆ÷µÄ×÷ÓãºÎªÓ¦ÓóÌÐò´ÓXMLÎļþÖнâÎö³öËùÐèÒªµÄÊý¾Ý¡£
ÏÂÃæÍ¨¹ýÒ»¸öÀý×Ó£¬À´Á˽⣬ÈçºÎÓÃXML½âÎöÆ÷£¬À´½âÎöÒ»¸öXMLÎļþÖеÄÊý¾Ý¡£
1¡¢Types.xml£¨ÏÔʾ¼ªËûµÄÀà±ð£©
<?xml version="1.0" encoding="UTF-8"?>
<types>
<name>µç¼ªËû
<music>ÍæÒ¡¹ö</music>
</name>
......
3£©¶ÁÈ¡¡¢²éÕÒ
µ±ÄãÊÖÍ·ÓÐÒ»¸öxmlÎļþºó£¬¿ÉÒÔʹÓÃXmlDocument.Load()·½·¨½«Æä¼ÓÔØ½øÀ´ÒԱ㴦Àí£¬ËùÒÔ“¶ÁÈ¡”ûÓÐʲô¿É˵µÄ¡£¶ø“²éÕÒ”²Ù×÷ÍùÍùÉæ¼°XPath£¬ÕâÀïÖ»ÊÇÎÒÈÏΪµÄ±È½Ï³£Óõ½µÄ²éÕÒ²Ù×÷£¬XPathÕâÍæÒâʵÔÚÊǺÜÇ¿´óºÜ±©Á¦¡£
»ØÍ·¿´Ê¾ÀýÎĵµxmlsample.xml£¬ÎÒÃÇ¿ÉÄÜÓöµ½ÕâÑùµÄÐèÇó£ ......