xml属性(标记)中的无效unicode字符列表是什么?xml属性/标记中的unicode字符无效
如下面的python3代码说明:
import xml.etree.ElementTree as ET
from io import StringIO as sio
xml_dec = '<?xml version="1.1" encoding="UTF-8"?>'
unicode_text = '<root>textº</root>'
valid_unicode = '<标签 属性="值">文字</标签>'
invalid_unicode_attribute = '<tag attributeº="value">text</tag>'
invalid_unicode_tag = '<tagº>text</tagº>'
ET.parse(sio(xml_dec + unicode_text))
# works
ET.parse(sio(xml_dec + valid_unicode))
# works
ET.parse(sio(xml_dec + invalid_unicode_attribute))
# ParseError
ET.parse(sio(xml_dec + invalid_unicode_tag))
# ParseError
的unicode字符º
,即U+00BA
,可以如果是在该元件的文字,而不是在元件属性或者标签进行解析。另一方面,可以在元素属性和标签中解析其他Unicode字符,例如中文字符。
我检查了XML <?xml version="1.1" encoding="UTF-8"?><tagº>text</tagº>
在https://validator.w3.org/check,并给出了错误:
Line 1, Column 43: character "º" not allowed in attribute specification list
然而,在XML Recommendation 1.1, §2.2 Characters,它说,这是允许的:
Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
我的问题是,在那里我可以找到XML属性/标签中的无效unicode字符列表?
这是关于属性现在或标签名称?标题和最后一句谈论属性,但这些示例仅关于文本和标签。 – lenz
无论如何,你只需要在自己链接的文档中滚动一下。例如,[here](https://www.w3.org/TR/xml11/#NT-NameStartChar)是您可以在标签名称中使用哪些字符的定义。 – lenz
如果掌握了术语,你会发现获得这些问题的答案更容易。这是一个标签的例子:''。它包含两个名称(一个元素名称和一个属性名称)以及其他各种东西,包括属性值,空格,等号,撇号等等。我认为您的问题不是关于标记中允许使用什么字符,而是关于哪些字符在元素名称和属性名称中是允许的。 –