Home > Backend Development > PHP Tutorial > Using PHP and XML to program websites_PHP Tutorial

Using PHP and XML to program websites_PHP Tutorial

WBOY
Release: 2016-07-21 14:52:46
Original
709 people have browsed it

1. Preface

HTML is easy to learn and versatile. General PHP programs are embedded in HTML language. However, as the WEB becomes more and more widely used, the weaknesses of HTML are becoming more and more obvious. The emergence of xml makes up for these shortcomings. It provides a universal method that can handle all data on the Internet.

2. Analysis of limitations of HTML

 1. HTML has poor scalability. Although HTML should be sufficient for general applications, it has obvious shortcomings when dealing with symbols such as mathematics and chemistry, and it cannot be expanded, which greatly limits its development.

 2. It cannot be automatically corrected after the link is lost. Since the URL address of a Web page changes frequently, the information must be modified manually when changing the URL address. Otherwise, a "404 URL address not found" message will be encountered, which greatly increases the workload of maintaining the Web page.


3. Data search takes a long time. Since HTML is mainly used to control the display of web pages, the same data has different storage formats in different web pages, making it impossible to quickly find the required information when performing data searches.

4. HTML does not have enough support for double-byte or multi-national characters. For example, Chinese information pages may not be displayed on different platforms.

It is precisely because of these shortcomings that people have studied Web page production languages ​​​​that can replace HTML. Among them, those already in use include Extensible Markup Language XML, Cascading Style Sheets (CSS), and Dynamic HTML (DHTML).

3. Composition of XML

Here is a brief list of several major XML technologies:

 1. DTD (Document Type Declaration)

The main functions of DTD are to define the content mode of XML; to limit the data range of XML tags; and to define the data type of attributes. However, because it is not written in XML, its scalability is relatively poor; and it only provides a limited number of data types, so its role is limited.

 2. XML Schema

XML Schema functions similarly to DTD. But the difference is that the Schema file describes the specific types of elements and attributes in the XML file that references it. In addition, since it is written in XML, Schema has the following advantages compared with DTD:

·The XML Schema content model is open and can be expanded at will, but DTD cannot parse the expanded content.

 ·DTD can only define the content type as a string, while XML Schema allows the content type to be defined as integer, floating point, Boolean or many other simple data types.

·XML Schema uses Namespaces to connect special nodes in the document with the Schema. An XML file can have multiple corresponding Schemas, and an XML file can only have one DTD.

 3. XLink

As a Web language, XML’s linking capabilities are very important. XML linking and addressing mechanisms include XLink, XPath and XPointer. XLink provides a powerful linking method that can establish one-way or multi-way complex connection relationships between documents, as well as a variety of linking functions such as annotation links, summary links, and extended link sets. XPath is used in XSLT and XPointer to support positioning relative to nodes and node sets in XML documents. XPointer provides positioning of the internal structure of the content of an XML document (such as a string or a selected paragraph) based on XPath. The linking capabilities of XML have been greatly enhanced compared to HTML.

 4. CSS and XSL

A major feature of XML is the separation of content and format. That is to say, the XML document does not contain information on how to display/represent the document. CSS and XSL (XML Style Language) solve the problem of displaying XML documents.

CSS (Cascading Style Sheets) can also be used in HTML and XML. XSL completely uses XML syntax and is much more powerful than CSS.

 5. DOM
The Document Object Model (DOM) is a platform- and language-independent program interface that provides a means to dynamically access and update the content, structure, and style of a document. The text can be processed further and the results of the processing are updated to the presentation page.


The goal of DOM is to define a standard programming interface for XML and HTML, which includes core, HTML and XML parts. The core part of the DOM establishes a set of underlying objects that can represent any structured document. HTML and XML provide high-level interfaces that serve as more convenient document views. The DOM specification consists of objects and methods. Programmers use them to make it easier to access and manipulate certain types of documents.

6. Namespaces

Namespaces are a collection of all names that appear in elements and attributes of an XML file, distinguished by URLs. In XML, users can define tags and elements themselves. Therefore, if multiple XML files are merged into one, conflicts are likely to occur. Namespaces solve this problem.

IV. PHP’s support for XML

PHP provides powerful support for XML. It uses an XML "parser", and in order to support this parser, it provides 20 (PHP4) XML parsing functions. Below are some of the most commonly used PHP parsing functions.

 1. xml_parse

boolean xml_parse(int parser, string data, int [isFinal]);

This function is used to parse file data in XML format. The parameter parser is the parsing code. The parameter data is the parsed data block (chunk). The parameter isFinal can be omitted. If set to true, the system will automatically send the last piece of data to the data parameter. Returns true if there are no errors.

2. xml_parser_create

int xml_parser_create(string [encoding]);

This function is used to initialize a new XML parser. The encoding parameter can be omitted and is the character set used by XML. The default value is ISO-8859-1. There are two other options: US-ASCII and UTF-8. On success, the parser code is returned for use by other functions, and on failure, a false value is returned.

 3. xml_set_element_handler

boolean xml_set_element_handler(int parser, string startElementHandler, string endElementHandler)

This function configures the header of the element for use by the xml_parse() function. The parameter parser is the parsing code. The parameters startElementHandler and endElementHandler are the headers of the start and end of the element respectively. The startElementHandler must include the parsing code, name, and attributes, while the endElementHandler parameter includes the parsing code and name. Returns true if there are no errors.

4. xml_set_character_data_handler

boolean xml_set_character_data_handler(int parser, string handler);


This function configures the header of character data. The parameter parser is the parsing code. The parameter handler includes two elements: parsing code and data string. Returns true if there are no errors.

 5. xml_get_error_code

int xml_get_error_code(int parser);

This function can obtain the error code during XML processing. The parameter parser is the parsing code. If the parser has an error, it returns a false value, otherwise it returns an error code (such as XML_ERROR_BINARY_ENTITY_REF .... etc.).

 6. xml_error_string

string xml_error_string(int code);

This function can obtain the error code during XML processing. The parameter code is the parsing error code. If there is no error, the return value is a text description string of the code.

 7. xml_get_current_line_number

int xml_get_current_line_number(int parser);

This function is used to obtain the line number currently being processed by XML parsing. The parameter parser is the parsing code. If the parser has an error, it returns a false value, if there is no error, it returns a line number.

 8. xml_parser_free

boolean xml_parser_free(int parser);

This function is used to release the memory currently used by XML parsing. The parameter parser is the parsing code. Returns true if there are no errors, false otherwise.

5. Case analysis

The following is an example of using PHP5 to read an address book address.xml written in XML 1.0 format and display its contents. See relevant notes for details.

<?
//
//Part 1: Several PHP Helper functions
//

/*********************************

*Read XML from a file *
*Content to string *

*************************************/

function read_file($filename)
{
//Read file
​$lines=file($filename);
//The variable $contents is a variable that stores the contents of the file
​$contents="";
​while(list($key,$value)=each($lines))
{
​$contents.=$value;
}
return $contents;
}

/*********************************
*When PHP encounters an XML start tag *
*Call, its function is to follow a certain level *
*Show XML tags *
**********************************/

function start_element($parser, $name, $attrs)
{
//Variable $depth stores the depth of the mark
global $depth;
//Variable $spacer stores all arrow symbols before the mark
​$spacer="";
for ($i=1;$i<$depth[$parser];$i++)
{
​$spacer.="->";
}
//Set the color when the mark is displayed
if($depth[$parser]==0)
{
​$font_color="red";
}
else
​if($depth[$parser]==1)
​{
​​$font_color="green";
}
else
{
​$font_color="blue";
}
//Set the font when the mark is displayed
​$font_size=5-$depth[$parser];
if ($font_size<2)
{
​$font_size=2;
}
//Show mark
echo "<font size=".$font_size." color=".$font_color.">";
echo $spacer.$depth[$parser];
if ($depth[$parser]<>0)
{
echo "、";
}
echo $name."<BR>";
echo "</font>";
​$depth[$parser]++;
//If it is the main mark, display a red horizontal line
if($depth[$parser]==2)
{
echo "<hr color=red size=1>";
}
}

/*********************************
*When PHP encounters an XML closing tag *
*Call, its function is to change the current level *
* Count and show horizontal line under main mark *
**********************************/

function stop_element($parser,$name)
{
//Variable $depth stores the depth of the mark
global $depth;
​$depth[$parser]--;
//If it is the main mark, display a red horizontal line
if($depth[$parser]==2)
{
echo "<hr color=red size=1>";
}
}

/************************************
*When PHP encounters an XML markup content *
*Call, its function is to follow a certain level *
*Show marked content *
*********************************

function char_data($parser,$data)
{
//Variable $depth stores the depth of the mark
global $depth;
//Show marked content
​$data=trim($data);
if (strlen($data))
{
​for ($i=1;$i<$depth[$parser]+6;$i++)
echo " ";
echo "<b>$data</b><br> ";
}
}

//
//Part 2: PHP file execution start point
//
//The name of the XML file to be parsed

$file="address.xml";
//Read file
$data=read_file($file);

//Generate parser instance
$parser = xml_parser_create();
// Set processing function
xml_set_element_handler($parser, "start_element", "stop_element");
xml_set_character_data_handler($parser, "char_data");
// Parse file
if(!xml_parse($parser,$data,1))
{
//Report error
die(sPRintf("XML error: %s at line %d",
​xml_error_string(xml_get_error_code($parser)),
​xml_get_current_line_number($parser)));
}

// Release the parser
xml_parser_free($parser);
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/371521.htmlTechArticle1. Small order HTML is simple, easy to learn and versatile. General PHP programs are embedded in the HTML language. However, as the WEB becomes more and more widely used, the weaknesses of HTML are becoming more and more obvious. ...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template