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
如果掌握了術語,你會發現獲得這些問題的答案更容易。這是一個標籤的例子:''。它包含兩個名稱(一個元素名稱和一個屬性名稱)以及其他各種東西,包括屬性值,空格,等號,撇號等等。我認爲您的問題不是關於標記中允許使用什麼字符,而是關於哪些字符在元素名稱和屬性名稱中是允許的。 –