各种 XML 定义的示例
Examples of various XML definitions
在阅读XML spec时,提到了以下定义:
Names and Tokens
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
Literals
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'| "'" ([^<&'] | Reference)* "'"
[11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
什么是名称与实体与属性与 SystemLiteral 与 Pubid 的示例 (?)
例如下面的例子:
<Item id="123">Hello<Item/>
Item
是名称还是实体值?我会假设 123
或 "123"
将是 Att(ribute)Value。那些都是正确的吗?其他人的例子是什么?
从规范中可以看出:
Literal data is any quoted string not containing the quotation mark used as a delimiter for that string. Literals are used for specifying the content of internal entities (EntityValue), the values of attributes (AttValue), and external identifiers (SystemLiteral).
因此我认为 Item
将是 EntityValue,123
将是 AttrValue :那么 PubID 和 SystemLiteral 的例子是什么?最后,为什么 EntityValue
不排除 <
和 >
字符?
你的XML例子解析如下:
<Item id="123">Hello<Item/>
是一个 element:
您的示例中有 none 个以下结构:
- EntityValue
示例:<!ENTITY year "2020">
中的 "2020"
- PubidLiteral
示例:"-//W3C//DTD HTML 4.01//EN"
in <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
)
- SystemLiteral
示例:"../img/logo.gif"
in <!ENTITY logo SYSTEM "../img/logo.gif" NDATA gif >
有关如何使用 EntityValue
、PubidLiteral
和 SystemLiteral
的更多上下文,请参阅第 4.2 Entity Declarations 部分。
在阅读XML spec时,提到了以下定义:
Names and Tokens
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
Literals
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'| "'" ([^<&'] | Reference)* "'"
[11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
什么是名称与实体与属性与 SystemLiteral 与 Pubid 的示例 (?)
例如下面的例子:
<Item id="123">Hello<Item/>
Item
是名称还是实体值?我会假设 123
或 "123"
将是 Att(ribute)Value。那些都是正确的吗?其他人的例子是什么?
从规范中可以看出:
Literal data is any quoted string not containing the quotation mark used as a delimiter for that string. Literals are used for specifying the content of internal entities (EntityValue), the values of attributes (AttValue), and external identifiers (SystemLiteral).
因此我认为 Item
将是 EntityValue,123
将是 AttrValue :那么 PubID 和 SystemLiteral 的例子是什么?最后,为什么 EntityValue
不排除 <
和 >
字符?
你的XML例子解析如下:
<Item id="123">Hello<Item/>
是一个 element:
您的示例中有 none 个以下结构:
- EntityValue
示例:<!ENTITY year "2020">
中的 - PubidLiteral
示例:"-//W3C//DTD HTML 4.01//EN"
in<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
) - SystemLiteral
示例:"../img/logo.gif"
in<!ENTITY logo SYSTEM "../img/logo.gif" NDATA gif >
"2020"
有关如何使用 EntityValue
、PubidLiteral
和 SystemLiteral
的更多上下文,请参阅第 4.2 Entity Declarations 部分。