文档能够包含外国字符,比方:
foreign characters (úóí?)
比方 磲 的外国字符必需在前面加上 escape 序列。外国字符能够是 UTF-8 编码或用差别编码指定,以下所示:
foreign characters (磲)
如今能够准确加载 xml 了。
其他字符是保存在 XML 中的,而且须要以差别的体式格局处置惩罚。下面的 XML:
This & that
发生以下毛病:
此处不允许有空格。
行 0000001: This & that
位置 0000012: ----------^
此处 & 是 XML 句法构造的一部分,假如它仅仅放在 XML 数据源内部,那末不能解释为 &。您须要替代称为“实体”的特别字符序列。
This & that
下面的字符须要响应的实体:
< <
& &
> >
" "
' '
引号字符被用作标记中属性值的定界符,因而一般不能在属性值的内部运用。比方,下面的内容将返回毛病:
此处的单引号既用作属性定界符,又在属性值自身中。为了改正这个题目,能够将属性定界符换成双引号:
或许能够将单引号转义为实体 '
上述两种体式格局都将经由过程 XML 对象模子中的 getAttribute 要领返回属性值 John's Stuff。一样,关于双引号,您能够运用实体
"。
也能够经由过程将文本放在 CDATA 节中来处置惩罚元素内容中的特别字符。下面的内容是准确的:
在本例子中,XML 对象模子将 CDATA 节点显现 xml 节点的子节点,它将返回字符串
This & that is just "text" content.
作为 nodeValue。
怎样在 Visual Studio 6.0 C++ 中运用 MSXML COM 组件?
在 Visual C++ 6.0 中运用 MSXML COM 组件的最轻便体式格局是运用 #import 指令:
#import "msxml.dll" named_guids no_namespace#import "msxml.dll" named_guids no_namespace
它定义了一切 IXML* 接口和接口 ID,从而能够在应用程序中运用它们了。也能够从 INETSDK 猎取 MSXML 范例库和头文件(英文),以及包含类 IIDs 的 uuid.lib。
怎样在 XML 中运用 HTML 实体?
下面的 XML 包含 HTML 实体:
Copyright ? 2000, Microsoft Inc, All rights reserved.
它发生以下毛病:
援用未定义的实体 'copy'。
行: 1, 位置:23, 毛病码:0xC00CE002
Copyright ? 2000, ...
----------------------^
这是由于 XML 只要五个内置实体。关于内置实体的详细信息,请参阅怎样加载有外国和特别字符的文档?。
要运用 HTML 实体,须要用 DTD 定义它们。有关 DTD 的详细信息,请参阅 W3C XML 发起(英文)。要运用该 DTD,请将它直接包含在 DOCTYPE 标记中,以下所示:
Copyright ? 2000, Microsoft Inc, All rights reserved.
要加载它,须要封闭 IXMLDOMDocument 接口的 validateOnParse 属性。请尝试将它粘贴到“Validator 测试页”中,封闭 DTD 考证,然后单击“考证”。请注重文档将加载,而且版权字符将显现在 validator 页面的末端的 DOM 树中。
假如已完成了 DTD 考证,那末必需将作为参数实体的 HTML 实体包含在现有的 DTD 中,以下所示:
%HTMLENT;
%HTMLENT;
它将定义一切 HTML 实体,以便在 XML 文档中运用它们。
在元素内容中怎样处置惩罚空缺字符?
XML DOM 有三种接见元素文本内容的体式格局:
属性 行动
nodeValue 根据原始的 XML 源中指定的那样,返回 TEXT、CDATA、COMMENT 和 PI 节点上的原始文本内容(包含空缺字符)。关于 ELEMENT 节点和 DOCUMENT 自身,则返回空值。
数据 与 nodeValue 雷同
文本 反复衔接指定子树中的多个 TEXT 和 CDATA 节点并返回组合效果。
注重: 空缺字符包含新行、tab 和空格。
nodeValue 属性一般返回原始文档中的内容,与文档怎样加载和当前 xml:space 局限无关。
文本属性衔接指定子树中的一切文本并扩大实体。这与文档怎样加载、PReserveWhiteSpace 开关的当前状况和当前 xml:space 局限有关,请看以下所示:
preserveWhiteSpace = true when the document is loaded
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default
保存 保存 保存 保存并截断
preserveWhiteSpace = false when the document is loaded
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default
半保存 半保存并截断 半保存 半保存并截断
此处的保存示意和原始 XML 文档中完全雷同的原始文本内容,截断意味着前导和尾部空格已删除,半保存意味着保存了“主要的空缺字符”并范例化了“不主要的空缺字符”。主要的空缺字符是文本内容内部的空缺字符。不主要的空缺字符是标记之间的空缺字符,请看以下所示:
\n
\t Jane\n
\tSmith \n
在本示例中,赤色是能够疏忽的不主要的空缺字符,而绿色是主要的空缺字符,由于它是文本内容的一部分,因而有不可疏忽的主要寄义。所以在本例中,文本属性返回以下效果:
状况 返回值
保存 "\n\t Jane\n\tSmith \n"
保存并截断 "Jane\n\tSmith"
半保存 " Jane Smith "
半保存并截断 "Jane Smith"
请注重“半保存”将范例化不主要的空缺字符,比方,新行和 tab 字符将退化为单个空格。假如变动 xml:space 属性和 preserveWhiteSpace 开关,那末文本属性将返回响应的差别值。
CDATA and xml:space="preserve" subtree boundaries
鄙人面的例子中,CDATA 节点或“保存”节点的内容将获得衔接,原因是它们不介入不主要的空缺字符范例化。比方:
\n
\t Jane \n
\t Smith ]>\n
在这类状况下,CDATA 节点内部的空缺字符不再与“不主要”空缺字符“兼并”,而且不会截断。因而“半保存并截断”状况将返回以下内容:
"Jane Smith "
在此, 和 标记之间的不主要的空缺字符将包含在内,与 CDATA 节点的内容无关。假如用以下内容替代 CDATA,那末将返回雷同效果:
Smith
实体是特别的
实体是作为 DTD 的一部分加载和剖析的,而且显现在 DOCTYPE 节点下。它们不一定要有任何 xml:space 局限。比方:
Jane \n
\t\n
">
]>
&Jane;
假定 preserveWhiteSpace=false(在 DOCTYPE 标记局限内),在剖析实体时不主要的空缺字符丧失。实体将不会有空缺字符节点。树将类似于:
DOCTYPE foo
ENTITY: Jane
ELEMENT: employee
ELEMENT: name
TEXT: Jane
ELEMENT: title
TEXT>:Software Design Engineer
ELEMENT: foo
ATTRIBUTE: xml:space="preserve"
ENTITYREF: Jane
请注重,在 DOCTYPE 内部 ENTITY 节点下显现的 DOM 树不包含任何 WHITESPACE 节点。这意味着 ENTITYREF 节点的子节点也没有 WHITESPACE 节点,纵然实体援用在 xml:space="preserve" 的局限内也是如许。
给定文档中援用的每一个 ENTITY 的实例一般都有雷同的树。
假如实体必需相对保存空缺字符,那末它必需在本身内部指定本身的 xml:space 属性,或许文档 preserveWhiteSpace 开关必需设置为 true。
怎样处置惩罚属性中的空缺字符?
有几种体式格局能够接见属性值。IXMLDOMAttribute 接口有 nodeValue 属性,它等价于作为 Microsoft 扩大的 nodeValue 和 text 属性。这些属性返回: 属性 返回的文本
attrNode.nodeValue
attrNode.value
getAttribute("name") 返回和原始文档中完全雷同的内容(和扩大的实体)。
attrNode.nodeTypedValue Null
attrNode.text 除了前导和尾部的空缺字符已截断以外,其他与 nodeValue 雷同。
“XML 言语”范例为 XML 应用程序定义了以下行动: 属性范例 返回的文本
CDATA ID、IDREF、IDREFS、ENTITY、ENTITIES、NOTATION、罗列
半范例化 全范例化
在此半范例化代表将新行和 tab 字符转换为空格,然则多个空格不会退化为一个空格。
以上就是XML入门的常见题目(三)的内容,更多相关内容请关注ki4网(www.ki4.cn)!