Wie lautet die Liste der ungültigen Unicode-Zeichen in XML-Attributen (Tags)?Ungültiges Unicode-Zeichen in XML-Attribut/Tag
Als folgenden python3 Code zeigt:
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
das Unicode-Zeichen º
, d.h. U+00BA
kann analysiert werden, wenn es in das Element Text ist, aber nicht in Elementattribut oder Tag. Auf der anderen Seite können andere Unicode-Zeichen, wie beispielsweise chinesische Zeichen, in Elementattributen und Tags analysiert werden.
überprüfte ich die xml <?xml version="1.1" encoding="UTF-8"?><tagº>text</tagº>
in https://validator.w3.org/check, und es gibt den Fehler:
Line 1, Column 43: character "º" not allowed in attribute specification list
jedoch in XML Recommendation 1.1, §2.2 Characters, sie sagt, es ist erlaubt:
Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
Meine Frage ist, wo kann ich finde die Liste der ungültigen Unicode-Zeichen in XML-Attributen/Tags?
Ist das jetzt über Attribute oder Tag-Namen? Der Titel und der letzte Satz sprechen über Attribute, aber die Beispiele betreffen nur Text und Tags. – lenz
In jedem Fall müssen Sie nur ein wenig in dem Dokument blättern, das Sie selbst verlinkt haben. Zum Beispiel ist [hier] (https://www.w3.org/TR/xml11/#NT-NameStartChar) die Definition, welche Zeichen Sie in einem Tag-Namen verwenden dürfen. – lenz
Sie könnten Antworten auf solche Fragen leichter finden, wenn Sie die Terminologie beherrschen. Hier ist ein Beispiel für ein Tag: ''. Es enthält zwei Namen (einen Elementnamen und einen Attributnamen) und verschiedene andere Dinge, darunter einen Attributwert, Leerzeichen, ein Gleichheitszeichen, Apostrophe usw. Ich denke, Ihre Frage betrifft nicht, welche Zeichen im Tag erlaubt sind, sondern welche Zeichen sind im Elementnamen und Attributnamen erlaubt. –