我正在学习XML,我刚开始使用一个简单的xml文件和外部DTD。为了验证我使用Notepad ++和XMLTools插件。 (有没有人知道这是否符合标准,或者对我有更好的免费替代方案?)
这是我的外部dtd:
# [...other code... (e.g. imports, etc)]
def compare_images(img1, img2):
# normalize to compensate for exposure difference
img1 = to_grayscale(imread(img1).astype(float))
img2 = to_grayscale(imread(img2).astype(float))
img1 = normalize(img1)
img2 = normalize(img2)
# calculate the difference and its norms
diff = img1 - img2 # elementwise for scipy arrays
m_norm = sum(abs(diff)) # Manhattan norm
s = m_norm/img1.size
return s
def above_threshold(img1, img2):
s = compare_images(img1, img2)
return s > 10
def process_files():
folder1 = os.getcwd()
folder2 = os.path.join(folder1, "cd")
print("Folder1: " + folder1)
print("Folder2: " + folder2)
for filename1 in os.listdir(folder1):
print("File: " + filename1)
if filename1.endswith(".png"):
if all(above_threshold(filename1, filename2) for filename2 in os.listdir(folder2)):
print(" Copying (similar image was not found)")
shutil.copy(filename1, folder2)
else:
print(" Skipping (found similar image)")
else:
print(" Skipping (not a png file)")
一切正常,直到我尝试在DTD中允许<!ELEMENT auto (#PCDATA)>
<!ATTLIST auto fahrgestellnummer CDATA #REQUIRED>
<!ELEMENT autohaus (auto | #PCDATA)>
<!ATTLIST autohaus id CDATA #REQUIRED>
和/或auto
出现元素#PCDATA
。我收到以下错误:
无法加载dtd externalDTD.dtd。
如果我在第3行中删除“autohaus
”,则没有问题。使用| #PCDATA
代替,
也不起作用。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
<!ELEMENT autohaus (auto | #PCDATA)>
在DTD中不合法。
如果要声明混合内容,允许字符数据可选地穿插其他元素(按任意顺序),则必须先将#PCDATA
关键字放在内容模型中,然后使用“星形”出现指示符。像这样:
<!ELEMENT autohaus (#PCDATA | auto)*>