您好,欢迎访问三七文档
ML命名空间(XMLNamespaces)PreviousPageNextPageXML命名空间提供避免元素命名冲突的方法。命名冲突在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。这个XML文档携带着某个表格中的信息:tabletrtdApples/tdtdBananas/td/tr/table这个XML文档携带有关桌子的信息(一件家具):tablenameAfricanCoffeeTable/namewidth80/widthlength120/length/table假如这两个XML文档被一起使用,由于两个文档都包含带有不同内容和定义的table元素,就会发生命名冲突。XML解析器无法确定如何处理这类冲突。使用前缀来避免命名冲突此文档带有某个表格中的信息:h:tableh:trh:tdApples/h:tdh:tdBananas/h:td/h:tr/h:table此XML文档携带着有关一件家具的信息:f:tablef:nameAfricanCoffeeTable/f:namef:width80/f:widthf:length120/f:length/f:table现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的table元素(h:table和f:table)。通过使用前缀,我们创建了两种不同类型的table元素。使用命名空间(Namespaces)这个XML文档携带着某个表格中的信息:h:tablexmlns:h=:trh:tdApples/h:tdh:tdBananas/h:td/h:tr/h:table此XML文档携带着有关一件家具的信息:f:tablexmlns:f=:nameAfricanCoffeeTable/f:namef:width80/f:widthf:length120/f:length/f:table与仅仅使用前缀不同,我们为table标签添加了一个xmlns属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。XMLNamespace(xmlns)属性XML命名空间属性被放置于元素的开始标签之中,并使用以下的语法:xmlns:namespace-prefix=namespaceURI当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。请访问。统一资源标识符(UniformResourceIdentifier(URI))统一资源标识符是一串可以标识因特网资源的字符。最常用的URI是用来标示因特网域名地址的统一资源定位器(URL)。另一个不那么常用的URI是统一资源命名(URN)。在我们的例子中,我们仅使用URL。默认的命名空间(DefaultNamespaces)为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。请使用下面的语法:xmlns=namespaceURI这个XML文档携带着某个表格中的信息:tablexmlns=此XML文档携带着有关一件家具的信息:tablexmlns=命名空间的实际应用当开始使用XSL时,您不久就会看到实际使用中的命名空间。XSL样式表用于将XML文档转换为其他格式,比如HTML。如果您仔细观察下面的这个XSL文档,就会看到大多数的标签是HTML标签。非HTML的标签都有前缀xsl,并由此命名空间标示::?xmlversion=1.0encoding=ISO-8859-1?xsl:stylesheetversion=1.0xmlns:xsl=:templatematch=/htmlbodyh2MyCDCollection/h2tableborder=1trthalign=leftTitle/ththalign=leftArtist/th/trxsl:for-eachselect=catalog/cdtrtdxsl:value-ofselect=title//tdtdxsl:value-ofselect=artist//td/tr/xsl:for-each/table/body/html/xsl:template/xsl:stylesheet======================================================================XMLCDATAPreviousPageNextPage所有XML文档中的文本均会被解析器解析。只有CDATA区段(CDATAsection)中的文本会被解析器忽略。PCDATAPCDATA指的是被解析的字符数据(ParsedCharacterData)。XML解析器通常会解析XML文档中所有的文本。当某个XML元素被解析时,其标签之间的文本也会被解析:message此文本也会被解析/message解析器之所以这么做是因为XML元素可包含其他元素,就像这个例子中,其中的name元素包含着另外的两个元素(first和last):namefirstBill/firstlastGates/last/name而解析器会把它分解为像这样的子元素:namefirstBill/firstlastGates/last/name转义字符非法的XML字符必须被替换为实体引用(entityreference)。假如您在XML文档中放置了一个类似字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:messageifsalary1000then/message为了避免此类错误,需要把字符替换为实体引用,就像这样:messageifsalary<1000then/message在XML中有5个预定义的实体引用:<小于>大于&&和号''省略号"引号注释:严格地讲,在XML中仅有字符和&是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。CDATA术语CDATA指的是不应由XML解析器进行解析的文本数据(UnparsedCharacterData)。在XML元素中,和&是非法的。会产生错误,因为解析器会把该字符解释为新元素的开始。&也会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如JavaScript代码,包含大量或&字符。为了避免错误,可以将脚本代码定义为CDATA。CDATA部分中的所有内容都会被解析器忽略。CDATA部分由![CDATA[开始,由]]结束:script![CDATA[functionmatchwo(a,b){if(ab&&a0)then{return1;}else{return0;}}]]/script在上面的例子中,解析器会忽略CDATA部分中的所有内容。关于CDATA部分的注释:CDATA部分不能包含字符串]]。也不允许嵌套的CDATA部分。标记CDATA部分结尾的]]不能包含空格或折行。======================================================================XML编码PreviousPageNextPageXML文档可以包含非ASCII字符,比如法语。为了避免错误,需要规定XML编码,或者将XML文档存为Unicode。Windows记事本Windows记事本默认会将文件保存为单字节的ANSI(ASCII)。如果选取文件菜单中的“另存为”命令,就可以规定双字节Unicode(UTF-16)。将下面的XML文件保存为Unicode(注意文档不包含任何encoding属性):?xmlversion=1.0?notefromJohn/fromtoGeorge/tomessageFrench:êèé/message/note上面的文件,note_encode_none_u.xml不会出错。但是如果规定了单字节编码就会出错。下面的编码(打开它),不会报错:?xmlversion=1.0encoding=windows-1252?下面的编码(打开它),不会报错:?xmlversion=1.0encoding=ISO-8859-1?下面的编码(打开它),不会报错:?xmlversion=1.0encoding=UTF-8?下面的编码(打开它),不会报错:?xmlversion=1.0encoding=UTF-16?错误消息如果您试图向IE中载入XML文档,可能会得到两种指示编码问题的错误:在文本内容中发现非法字符如果XML文档中的某个字符与编码属性不匹配,您就会得到这个错误消息。通常,当XML文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,您就会得到这个错误消息。将当前编码切换为不被支持的指定编码如果您的文件被保存为Unicode/UTF-16,但是编码属性被指定为单字节编码(比如Windows-1252、ISO-8859-1或者UTF-8)时,那么您就会得到这个错误消息。或者当您的文档被保存为单字节编码,但编码属性被指定为双字节编码(比如UTF-16)时,也会得到这个错误消息。结论结论是:编码属性应当被指定为文档被保存时所使用的编码。我最好的避免错误的建议是:使用支持编码的编辑器确定编辑器使用的编码在您的XML文档中使用相同的编码属性====================================================================服务器上的XMLPreviousPageNextPageXML文件是类似HTML文件的纯文本文件。能够通过标准的web服务器轻松地存储和生成XML。在服务器上存储XMLXML文件在Internet服务器上进行存储的方式与HTML文件完全相同。请打开Windows记事本,并输入以下代码:?xmlversion=1.0encoding=ISO-8859-1?notefromJohn/fromtoGeorge/tomessageDon'tforgetthemeeting!/message/note然后用适当的文件名,比如note.xml,在web服务器上保存这个文件。通过ASP生成XMLXML可在不安装任何XML软件的情况下在服务器端生成
本文标题:XML高级语言教程
链接地址:https://www.777doc.com/doc-2857490 .html