当前位置:编程学习 > C#/ASP.NET >>

XML Advanced-from w3schools.com

答案:XML Namespaces

--------------------------------------------------------------------------------

XML Namespaces provide a method to avoid element name conflicts.


--------------------------------------------------------------------------------

Name Conflicts
Since element names in XML are not fixed, very often a name conflict will occur when two different documents use the same names describing two different types of elements.

This XML document carries information in a table:

<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>


This XML document carries information about a table (a piece of furniture):

<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>


If these two XML documents were added together, there would be an element name conflict because both documents contain a <table> element with different content and definition.


--------------------------------------------------------------------------------

Solving Name Conflicts using a Prefix
This XML document carries information in a table:

<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>


This XML document carries information about a piece of furniture:

<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>


Now the element name conflict is gone because the two documents use a different name for their <table> element (<h:table> and <f:table>).

By using a prefix, we have created two different types of <table> elements.


--------------------------------------------------------------------------------

Using Namespaces
This XML document carries information in a table:

<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>


This XML document carries information about a piece of furniture:

<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>


Instead of using only prefixes, an xmlns attribute has been added to the <table> tag to give the element prefix a qualified name associated with a namespace.


--------------------------------------------------------------------------------

The Namespace Attribute
The namespace attribute is placed in the start tag of an element and has the following syntax:

xmlns:namespace-prefix="namespace"


In the examples above, the namespace itself is defined using an Internet address:

xmlns:f="http://www.w3schools.com/furniture"


The W3C namespace specification states that the namespace itself should be a Uniform Resource Identifier (URI).

When a namespace is defined in the start tag of an element, all child elements with the same prefix are associated with the same namespace.

Note that the address used to identify the namespace, is not used by the parser to look up information. The only purpose is to give the namespace a unique name. However, very often companies use the namespace as a pointer to a real Web page containing information about the namespace.
Try to go to http://www.w3.org/TR/html4/.


--------------------------------------------------------------------------------

Uniform Resource Identifiers
A Uniform Resource Identifier (URI) is a string of characters which identifies an Internet Resource. The most common URI is the Uniform Resource Locator (URL) which identifies an Internet domain address. Another, not so common type of URI is the Universal Resource Name (URN). In our examples we will only use URLs.

Since our furniture example uses an internet address to identify its namespace, we can be sure that our namespace is unique.


--------------------------------------------------------------------------------

Default Namespaces
Defining a default namespace for an element saves us from using prefixes in all the child elements. It has the following syntax:

<element xmlns="namespace">


This XML document carries information in a table:

<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>


This XML document carries information about a piece of furniture:

<table xmlns="http://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>



--------------------------------------------------------------------------------

Namespaces in Real Use
When you start using XSL, you will soon see namespaces in real use. XSL style sheets are used to transform XML documents into other formats like HTML.

If you take a close look at the XSL document below, you will see that most of the tags are HTML tags. The tags that are not HTML tags have the prefix xsl, identified by the namespace "http://www.w3.org/TR/xsl":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="CATALOG/CD">
<tr>
<td><xsl:value-of select="TITLE"/></td>
<td><xsl:value-of select="ARTIST"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>



--------------------------------------------------------------------------------

XML CDATA

--------------------------------------------------------------------------------

All text in an XML document will be parsed by the parser.

Only text inside a CDATA section is ignored by the parser.


--------------------------------------------------------------------------------

Parsed Data
XML parsers normally parse all the text in an XML document.

When an XML element is parsed, the text between the XML tags is also parsed:

<message>This text is also parsed</message>


The parser does this because XML elements can contain other elements, as in this example, where the <name> element contains two other elements (first and last):

<name><first>Bill</first><last>Gates</last></name>


and the parser will break it up into sub-elements like this:

<name>
<first>Bill</first>
<last>Gates</last>
</name>



--------------------------------------------------------------------------------

Escape Characters
Illegal XML characters have to be replaced by entity references.

If you place a character like "<"

上一个:XML Examples-from w3schools.com
下一个:运用CodeSmith代码生引擎生成XML报表文件。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,